问题描述
我在学习汇编代码时遇到了一些问题。
我使用“编译器资源管理器”,这是一个支持很多编译器的网站。
我做了一个简单的代码,编译为 x86-64 gcc。
int sum(int a,int b)
{
return a + b;
}
int main(void)
{
return sum(3,4);
}
:
sum(int,int):
push rbp
mov rbp,rsp
mov DWORD PTR [rbp-4],edi
mov DWORD PTR [rbp-8],esi
mov edx,DWORD PTR [rbp-4]
mov eax,DWORD PTR [rbp-8]
add eax,edx
pop rbp
ret
主要:
push rbp
mov rbp,rsp
mov esi,4
mov edi,3
call sum(int,int)
nop
pop rbp
ret
据我所知,在 x86 中,堆栈用于局部变量和保存返回地址等。
我看不到任何关于“sub rsp,??”的内容在函数序言中。而且我看不到“添加 rsp,??”在函数结语中也是如此。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)