x86-64 gcc 不为局部变量分配堆栈帧

问题描述

我在学习汇编代码时遇到了一些问题。

我使用“编译器资源管理器”,这是一个支持很多编译器的网站。

我做了一个简单的代码,编译为 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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...