C与汇编(NASM) (1)
C代码
int main()
{
return 0;
}
nasm风格的汇编代码
section .text ; 定义代码段
global main ; 声明main是一个全局符号,以便链接器能够找到
extern exit ; 引入exit函数
main: ; 定义main函数
push rbp ; 保存当前基址指针,即保存调用者的栈帧
mov rbp, rsp ; 将栈顶指针的值赋给基址指针,设置新的栈帧
mov eax, 0 ; 返回值0存储在eax寄存器中
pop rbp ; 恢复基址指针
ret ; 返回调用者,从栈中弹出返回地址,并将程序计数器 RIP 设置为该地址,即返回调用处继续执行
总结
- 入口函数main的声明与定义
- 栈帧的设置和恢复,即栈帧管理
- 准备返回值,存储在eax寄存器中,一种约定