Câu trả lời ngắn: Vâng, 16 hoặc 32 bit. Và, đối với x86-64, 64 bit.
Lý do chính cho ngăn xếp là trả về từ các cuộc gọi hàm lồng nhau và lưu/khôi phục giá trị đăng ký. Nó cũng thường được sử dụng để truyền các tham số và trả về các kết quả hàm. Ngoại trừ các tham số nhỏ nhất, các mục này thường có cùng kích thước bằng thiết kế của bộ xử lý, cụ thể là, kích thước của thanh ghi chỉ dẫn con trỏ. Đối với 8088/8086, nó là 16 bit. Đối với 80386 và kế thừa, nó là 32-bit. Do đó, có rất ít giá trị trong việc có hướng dẫn ngăn xếp hoạt động trên các kích thước khác.
Ngoài ra còn có cân nhắc về kích thước của dữ liệu trên bus bộ nhớ. Phải mất cùng một lượng thời gian để truy xuất hoặc lưu trữ một từ như một byte. (Ngoại trừ 8088 có thanh ghi 16 bit nhưng một bus dữ liệu 8 bit.) Căn chỉnh cũng đi vào hoạt động. Ngăn xếp phải được căn chỉnh trên các ranh giới từ để mỗi giá trị có thể được lấy ra dưới dạng một thao tác bộ nhớ. Việc trao đổi thường được thực hiện để tiết kiệm thời gian cho việc tiết kiệm bộ nhớ. Để chuyển một byte thành tham số, một từ thường được sử dụng. (Hoặc, tùy thuộc vào tối ưu hóa có sẵn cho trình biên dịch, một thanh ghi kích thước từ sẽ được sử dụng, tránh ngăn xếp hoàn toàn.)
Nguồn
2013-04-06 20:04:20
Tuyên bố đó chỉ áp dụng ở chế độ 32 bit và bạn cũng có thể đẩy/bật 2 byte các yếu tố. – harold