HelloWorld.cpp SourceCode:
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Hello world!");
return 0;
}
对应反汇编代码为:
push rbp //保存栈低,上一帧函数信息
mov rbp,rsp //保存栈顶
sub rsp,0x20 //栈顶下移动 32个字节,开辟栈空间
mov DWORD PTR [rbp+0x10],ecx //传入第一个参数,保存在 ebp + 16字节处
mov QWORD PTR [rbp+0x18],rdx //传入第二个参数,保存在ebp + 24字节处
call 0x4026b0 <__main>//进入main函数
lea rcx,[rip+0x7b05] // 0x409020 //传入字符串地址
call 0x4075d0 <printf> // 调用printf函数
mov eax,0x0
add rsp,0x20 //恢复堆栈
pop rbp
ret