Nếu bộ xử lý của bạn không có hỗ trợ phần cứng cho ngăn xếp tham số / cục bộ nhưng trình biên dịch sẽ cố gắng thực hiện ngăn xếp tham số thời gian chạy và nếu mã của bạn không cần phải đăng ký lại, bạn có thể lưu mã không gian bằng cách phân bổ tĩnh các biến tự động. Trong một số trường hợp, điều này phải được thực hiện thủ công; trong các trường hợp khác, chỉ thị trình biên dịch có thể làm điều đó. Phân bổ thủ công hiệu quả sẽ yêu cầu chia sẻ các biến giữa các thói quen. Việc chia sẻ này phải được thực hiện cẩn thận, để đảm bảo rằng không có thói quen nào sử dụng một biến mà một thói quen khác coi là "trong phạm vi", nhưng trong một số trường hợp, lợi ích kích thước mã có thể là đáng kể.
Một số bộ xử lý có các quy ước gọi có thể làm cho một số kiểu truyền tham số hiệu quả hơn các kiểu khác. Ví dụ, trên các bộ điều khiển PIC18, nếu một thường trình có một tham số một byte, thì nó có thể được truyền vào một thanh ghi; nếu cần nhiều hơn thế, tất cả các tham số phải được truyền vào RAM. Nếu một thường trình sẽ lấy hai tham số một byte, thì có thể hiệu quả nhất là "truyền" một tham số trong biến toàn cục, và sau đó chuyển tham số kia thành tham số. Với các thói quen được sử dụng rộng rãi, tiết kiệm có thể tăng lên. Chúng có thể đặc biệt quan trọng nếu tham số được truyền qua toàn cầu là cờ một bit hoặc nếu thông thường sẽ có giá trị 0 hoặc 255 (vì các hướng dẫn đặc biệt tồn tại để lưu 0 hoặc 255 vào RAM).
Trên ARM, việc đặt các biến toàn cục thường được sử dụng cùng nhau vào một cấu trúc có thể làm giảm đáng kể kích thước mã và cải thiện hiệu suất. Nếu A, B, C, D và E là các biến toàn cục riêng biệt, thì mã sử dụng tất cả chúng phải tải địa chỉ của từng biến vào một thanh ghi; nếu không có đủ thanh ghi, có thể cần phải tải lại các địa chỉ đó nhiều lần. Ngược lại, nếu chúng là một phần của cùng cấu trúc toàn cầu MyStuff, thì mã sử dụng MyStuff.A, MyStuff.B, v.v. có thể chỉ cần tải địa chỉ của MyStuff một lần. Chiến thắng lớn.