là người mới bắt đầu của asm, tôi đang kiểm tra mã asm gcc -S được tạo để tìm hiểu.tại sao gcc 4.x mặc định dự trữ 8 byte cho ngăn xếp trên linux khi gọi một phương thức?
lý do gcc 4.x đặt trước mặc định 8 byte cho ngăn xếp khi gọi phương thức?
func18 là hàm trống không trả về tham số không có biến cục bộ được xác định. Tôi không thể tìm ra lý do tại sao 8 byte được dành riêng ở đây (không phải bất kỳ diễn đàn/trang web đề cập đến lý do, ppl dường như mang nó cho các cấp) là nó cho% ebp chỉ cần đẩy? hoặc trở về loại ?! nhiều thx!
.globl _func18
_func18:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
.text
Thực tế, không có hướng dẫn nào có ý nghĩa ... một hàm không có bất kỳ biến cục bộ nào không cần phải thiết lập con trỏ khung – Martin
Nó có thể phụ thuộc vào mức tối ưu hóa. Bạn có thể bao gồm mã được tạo hoàn chỉnh cho hàm này không? –
Không phải là không gian này cho địa chỉ trả về và con trỏ khung ngăn xếp? – jdizzle