tôi đang tìm kiếm tại dissasembly của một cuộc gọi chức năng và thấy điều này:Tại sao ngăn xếp ngăn xếp trên một cuộc gọi chức năng?
movq %rsp, %rbp
pushq %rbx
subq $136, %rsp ; Pad the stack
....
addq $136, %rsp ; Unpad the stack
popq %rbx
popq %rbp
ret
giá trị để làm điều này là gì?
Truy cập nhanh hơn vào ranh giới địa chỉ bộ nhớ thích hợp (như với bất kỳ phần đệm nào). –
Ồ, khi truy cập bộ nhớ bằng cách bù đắp nhanh hơn truy cập bộ nhớ bằng cách thực hiện 'push'? – sircodesalot
Tôi cho rằng họ đang dành không gian cho các biến cục bộ với phạm vi chức năng. Sau đó, bạn phải đặt con trỏ ngăn xếp ở đúng vị trí để không làm phiền khung ngăn xếp (để trở về đúng vị trí trong chương trình). –