int square(int num) {
return num;
}
给予
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], edi
mov eax, DWORD PTR [rbp-4]
pop rbp
ret
然后我刚刚在函数内添加了局部变量
int square(int num) {
int l = 1;
return num;
}
我得到这个输出
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-20], edi
mov DWORD PTR [rbp-4], 1
mov eax, DWORD PTR [rbp-20]
pop rbp
ret
为什么没有本地变量
mov DWORD PTR [rbp-4], edi
据我了解,我们为带有参数num的值的局部变量保留了4个字节。
但是当我在函数中也添加了4个字节的地方添加局部变量int l = 1时
mov DWORD PTR [rbp-20], edi
为什么-20?
我原本希望减去4个字节,所以像DWORD PTR [rbp-8],edi
我应该如何理解?