#include <stdio.h>
/*
* 直接函数调用
*/
void func() ;
int main()
{
int a;
func();
a = 0x66;
func();
printf("a = 0x%x\n", a); // 0x66
return 0;
}
void func()
{
int a;
a++;
printf("a = 0x%x\n", a); // 0x66
}
#if 0
0000000000001129 <main>:
1129: f3 0f 1e fa endbr64
112d: 55 push %rbp
112e: 48 89 e5 mov %rsp,%rbp
1131: 48 83 ec 10 sub $0x10,%rsp
1135: b8 00 00 00 00 mov $0x0,%eax // eax = 0
113a: e8 18 00 00 00 callq 1157 <func>
113f: c7 45 fc 66 00 00 00 movl $0x66,-0x4(%rbp) // a = rbp-0x4 = 0x66
1146: b8 00 00 00 00 mov $0x0,%eax // eax = 0
114b: e8 07 00 00 00 callq 1157 <func>
1150: b8 00 00 00 00 mov $0x0,%eax // eax = 0
1155: c9 leaveq
1156: c3 retq
0000000000001157 <func>:
1157: f3 0f 1e fa endbr64
115b: 55 push %rbp
115c: 48 89 e5 mov %rsp,%rbp
115f: 83 45 fc 01 addl $0x1,-0x4(%rbp) // rpb-0x4 + 0x1
1163: 90 nop
1164: 5d pop %rbp
1165: c3 retq
1166: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) // 用于填补func之间的空白功能和main保持位元组对齐的功能
116d: 00 00 00
#endif