#include <stdio.h>
int main()
{
printf("hello world.\n");
return 0;
}
#if 0
/*
* intel
*/
0000000000000000 <main>:
0: f3 0f 1e fa endbr64
4: 55 push %rbp # 保存 rbp
5: 48 89 e5 mov %rsp,%rbp # rbp = rsp
8: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # f <main+0xf>
f: e8 00 00 00 00 callq 14 <main+0x14> # 14为预留的链接地址,ld时会用printf的地址 替换. 如 e8 f3 fe ff ff callq 1050 <puts@plt>
14: b8 00 00 00 00 mov $0x0,%eax # return value
19: 5d pop %rbp # 恢复rbp
1a: c3 retq
/*
* arm
*/
0000000000000000 <main>:
0: a9bf7bfd stp x29, x30, [sp, #-16]! # 保存现场 sp-16 = x29, sp - 8 = x30
4: 910003fd mov x29, sp
8: 90000000 adrp x0, 0 <main>
c: 91000000 add x0, x0, #0x0
10: 94000000 bl 0 <puts>
14: 52800000 mov w0, #0x0 // #0
18: a8c17bfd ldp x29, x30, [sp], #16 # 恢复现场
1c: d65f03c0 ret
#endif