assembly - x86-64 gcc 没有为局部变量分配堆栈帧
问题描述
我在学习汇编代码时遇到了一些问题。
我使用“编译器资源管理器”,这是一个支持大量编译器的网站。
我做了一个简单的代码并将其编译为 x86-64 gcc。
<C++ 代码>:
int sum(int a, int b)
{
return a + b;
}
int main(void)
{
return sum(3, 4);
}
:
总和(整数,整数):
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,??” 在功能结语中也是如此。
解决方案
推荐阅读
- python - 将 urls.py url 转换为路径
- javascript - 使用 JS 函数更改无单位 CSS 值
- kubernetes - 来自 kubernetes api 服务的响应不一致,有时无法找到主机错误
- c# - 如何将自定义控件的 ObservableCollection 绑定到 StackPanel?
- django - 如何让 Django Graphene ModelForm Mutation 应用
- loopback4 - Loopback 4 授权允许访问所有类型的用户
- python - 有没有办法在不下载文件的情况下使用 python 中的文件
- python - 提取具有点拆分的列的倒数第二个项目
- c# - 我收到有关 Regex.Replace 函数的错误消息
- python - pd.get_dummies 仅将虚拟值名称保留为虚拟列名称