小编Abs*_*ful的帖子

为什么生成的程序集将 edi 移动到堆栈上的变量?

我是汇编的新手,试图了解以下函数的 objdump:

int nothing(int num) {
    return num;
}
Run Code Online (Sandbox Code Playgroud)

这是结果(linux,x86-64,gcc 8):

push   rbp
mov    rbp,rsp
mov    DWORD PTR [rbp-0x4],edi
mov    eax,DWORD PTR [rbp-0x4]
pop    rbp
ret    
Run Code Online (Sandbox Code Playgroud)

我的问题是: 1.edi从哪里来?阅读一些介绍文档,我的印象是[rbp-0x4]将包含num. 2. 从上面可以看出,edi 显然包含了这个论点。但是,它[rbp-0x4]扮演什么角色呢?为什么不只是mov eax, edi

谢谢!

assembly gcc x86-64 calling-convention

1
推荐指数
1
解决办法
538
查看次数

标签 统计

assembly ×1

calling-convention ×1

gcc ×1

x86-64 ×1