Tôi là người mới bắt đầu sử dụng hợp ngữ và nhận thấy rằng mã x86 được phát ra bởi các trình biên dịch thường giữ con trỏ khung xung quanh ngay cả trong chế độ phát hành / tối ưu hóa khi nó có thể sử dụng thanh EBP
ghi cho thứ khác.
Tôi hiểu tại sao con trỏ khung có thể giúp mã gỡ lỗi dễ dàng hơn và có thể cần thiết nếu alloca()
được gọi trong một hàm. Tuy nhiên, x86 có rất ít thanh ghi và việc sử dụng hai trong số chúng để giữ vị trí của khung ngăn xếp khi một thanh ghi đủ sẽ không có ý nghĩa đối với tôi. Tại sao việc bỏ qua con trỏ khung được coi là một ý tưởng tồi ngay cả trong các bản dựng được tối ưu hóa / phát hành?
alloca
) 3. dễ thực hiện thời gian chạy: exceptoins xử lý, sandbox, GC