#include <stdio.h>
void main()
{
printf("Hello,World\n");
}
#if 0
void main,则main不会明确返回任何值。不过在main退出时,EAX还会存有数据,会被传递给exit,成为后者的输入参数。通常EAX的值会是被调用方函数残留的确定数据,所以void类型函数的返回值,也就是主函数退出代码往往属于伪随机数(pseudorandom)。
#!/bin/sh
./hello_world
echo $?
./tst.sh
Hello,world!
14
这个14就是puts输出的字符的总数。
#endif
#if 0
/*
* intel
*/
0000000000001149 <main>:
1149: f3 0f 1e fa endbr64
114d: 55 push %rbp
114e: 48 89 e5 mov %rsp,%rbp
1151: 48 8d 3d ac 0e 00 00 lea 0xeac(%rip),%rdi # 2004 <_IO_stdin_used+0x4>
1158: e8 f3 fe ff ff callq 1050 <puts@plt>
115d: 90 nop
115e: 5d pop %rbp
115f: c3 retq
/*
* arm
*/
000000000040055c <main>:
40055c: a9bf7bfd stp x29, x30, [sp, #-16]!
400560: 910003fd mov x29, sp
400564: 90000000 adrp x0, 400000 <_init-0x3e8>
400568: 9118c000 add x0, x0, #0x630
40056c: 97ffffb9 bl 400450 <puts@plt>
400570: d503201f nop
400574: a8c17bfd ldp x29, x30, [sp], #16
400578: d65f03c0 ret
40057c: 00000000 .inst 0x00000000 ; undefined
#endif