在探索Godbolt时,我注意到 gcc 几乎从不减去rsp
. 例如:
square(int):
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], edi ; [rbp-4] is not in square(int)'s stack frame
mov eax, DWORD PTR [rbp-4]
imul eax, eax
pop rbp
ret
为什么?不应该sub rsp, 4
在堆栈上分配一个整数吗?