重载本质
#include <iostream>
void print(int x){}
void print(char c){}
void print(int x,char c){}
void print(char c,int x){}
int main(int argc, const char * argv[]) {
return 0;
}
xcode编译,然后点击Products下的二进制文件,选择show in Finder,右键选择build,找到Objects-normal
下的.o
文件
s
接着开一个终端,把编译器编译的结果定向输出到txt文件中。
➜ ~ objdump -d /Users/scottxiong/Library/Developer/Xcode/DerivedData/函数重载本质-eudjeidfytucczcxderfdczbacvx/Build/Intermediates.noindex/函数重载本质.build/Debug/函数重载本质.build/Objects-normal/x86_64/main.o >scott.txt
➜ ~ cat scott.txt
/Users/scottxiong/Library/Developer/Xcode/DerivedData/函数重载本质-eudjeidfytucczcxderfdczbacvx/Build/Intermediates.noindex/函数重载本质.build/Debug/函数重载本质.build/Objects-normal/x86_64/main.o: file format Mach-O 64-bit x86-64
Disassembly of section __TEXT,__text:
__Z5printi:
0: 55 pushq %rbp
1: 48 89 e5 movq %rsp, %rbp
4: 89 7d fc movl %edi, -4(%rbp)
7: 5d popq %rbp
8: c3 retq
9: 0f 1f 80 00 00 00 00 nopl (%rax)
__Z5printc:
10: 55 pushq %rbp
11: 48 89 e5 movq %rsp, %rbp
14: 40 88 f8 movb %dil, %al
17: 88 45 ff movb %al, -1(%rbp)
1a: 5d popq %rbp
1b: c3 retq
1c: 0f 1f 40 00 nopl (%rax)
__Z5printic:
20: 55 pushq %rbp
21: 48 89 e5 movq %rsp, %rbp
24: 40 88 f0 movb %sil, %al
27: 89 7d fc movl %edi, -4(%rbp)
2a: 88 45 fb movb %al, -5(%rbp)
2d: 5d popq %rbp
2e: c3 retq
2f: 90 nop
__Z5printci:
30: 55 pushq %rbp
31: 48 89 e5 movq %rsp, %rbp
34: 40 88 f8 movb %dil, %al
37: 88 45 ff movb %al, -1(%rbp)
3a: 89 75 f8 movl %esi, -8(%rbp)
3d: 5d popq %rbp
3e: c3 retq
3f: 90 nop
_main:
40: 55 pushq %rbp
41: 48 89 e5 movq %rsp, %rbp
44: 31 c0 xorl %eax, %eax
46: c7 45 fc 00 00 00 00 movl $0, -4(%rbp)
4d: 89 7d f8 movl %edi, -8(%rbp)
50: 48 89 75 f0 movq %rsi, -16(%rbp)
54: 5d popq %rbp
55: c3 retq
➜ ~