c++源码处理转化为可执行文件的流程可以分为三个部分:预处理(preprocessing),编译(compilation)与链接(linking)。
1. Preprocessing
该过程是由预处理器对源码中的预处理指令进行处理,例如预处理器将#include进cpp源码的头文件复制到源码中,并使用具体数值替换由#define所定义的符号常量。
2. Compilation
编译器对预处理后的纯源码(即此时的源码不包含任何预处理指令)进行编译,将其转换为汇编代码(xxx.s).
汇编器对汇编代码处理后生成object code文件(xxx.o)
3. Linking
- 若cpp源码中未调用library files,则linker直接将编译器生成的单个或多个object files链接起来生成单个可执行程序。
- 若cpp源码中调用了library files,则在链接object files的同时也要完成library files的链接,完成链接后生成单个可执行程序。
- linker需要处理跨文件间的依赖关系,例如某个cpp源码中调用了另一个cpp源码中的函数,linker需要处理好这种引用关系。
4. 源码实践
4.1 circle.cpp
#include <iostream>
#include <cmath>
using std::cin;
using std::cout;
using std::endl;
class Circle{
private:
const double PI=3.14159226;
double radius;
double area;
public:
void input(){
cout<<"please input the radius of circle:";
cin>>radius;
}
double cal(){
area=PI*pow(radius,2);
return area;
}
};
int main(){
Circle circle;
circle.input();
circle.cal();
cout<<"the area of the circle is:"<<circle.cal()<<endl;
return 0;
}
4.2 预处理过程
circle.cpp预处理的结果重定向至macro_code.txt文件中。
g++ -E circle.cpp > macro_code.txt
macro_code.txt文件内容过多,截取部分内容如下:
# 1 "circle.cpp"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "circle.cpp"
# 1 "/usr/include/c++/5/iostream" 1 3
# 36 "/usr/include/c++/5/iostream" 3
# 37 "/usr/include/c++/5/iostream" 3
# 1 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h" 1 3
# 194 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h" 3
# 194 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h" 3
namespace std
{
typedef long unsigned int size_t;
typedef long int ptrdiff_t;
}
# 216 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h" 3
namespace std
{
inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { }
}
namespace __gnu_cxx
{
inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { }
}
# 482 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h" 3
# 1 "/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h" 1 3
# 39 "/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h" 3
# 1 "/usr/include/features.h" 1 3 4
# 367 "/usr/include/features.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 1 3 4
# 410 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
# 411 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 2 3 4
# 368 "/usr/include/features.h" 2 3 4
4.3 编译过程
g++ -std=c++11 -S circle.cpp
生成circle.s文件,该文件内容如下:
.file "circle.cpp"
.section .rodata
.type _ZStL19piecewise_construct, @object
.size _ZStL19piecewise_construct, 1
_ZStL19piecewise_construct:
.zero 1
.local _ZStL8__ioinit
.comm _ZStL8__ioinit,1,1
.align 8
.LC0:
.string "please input the radius of circle:"
.section .text._ZN6Circle5inputEv,"axG",@progbits,_ZN6Circle5inputEv,comdat
.align 2
.weak _ZN6Circle5inputEv
.type _ZN6Circle5inputEv, @function
_ZN6Circle5inputEv:
.LFB1602:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $16, %rsp
movq %rdi, -8(%rbp)
movl $.LC0, %esi
movl $_ZSt4cout, %edi
call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
movq -8(%rbp), %rax
addq $8, %rax
movq %rax, %rsi
movl $_ZSt3cin, %edi
call _ZNSirsERd
nop
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1602:
.size _ZN6Circle5inputEv, .-_ZN6Circle5inputEv
.section .text._ZN6Circle3calEv,"axG",@progbits,_ZN6Circle3calEv,comdat
.align 2
.weak _ZN6Circle3calEv
.type _ZN6Circle3calEv, @function
_ZN6Circle3calEv:
.LFB1603:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $32, %rsp
movq %rdi, -8(%rbp)
movq -8(%rbp), %rax
movsd (%rax), %xmm2
movsd %xmm2, -16(%rbp)
movq -8(%rbp), %rax
movq 8(%rax), %rax
movsd .LC1(%rip), %xmm0
movapd %xmm0, %xmm1
movq %rax, -24(%rbp)
movsd -24(%rbp), %xmm0
call pow
mulsd -16(%rbp), %xmm0
movq -8(%rbp), %rax
movsd %xmm0, 16(%rax)
movq -8(%rbp), %rax
movsd 16(%rax), %xmm0
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1603:
.size _ZN6Circle3calEv, .-_ZN6Circle3calEv
.section .text._ZN6CircleC2Ev,"axG",@progbits,_ZN6CircleC5Ev,comdat
.align 2
.weak _ZN6CircleC2Ev
.type _ZN6CircleC2Ev, @function
_ZN6CircleC2Ev:
.LFB1606:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movq %rdi, -8(%rbp)
movq -8(%rbp), %rax
movsd .LC2(%rip), %xmm0
movsd %xmm0, (%rax)
nop
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1606:
.size _ZN6CircleC2Ev, .-_ZN6CircleC2Ev
.weak _ZN6CircleC1Ev
.set _ZN6CircleC1Ev,_ZN6CircleC2Ev
.section .rodata
.LC3:
.string "the area of the circle is:"
.text
.globl main
.type main, @function
main:
.LFB1604:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $48, %rsp
movq %fs:40, %rax
movq %rax, -8(%rbp)
xorl %eax, %eax
leaq -32(%rbp), %rax
movq %rax, %rdi
call _ZN6CircleC1Ev
leaq -32(%rbp), %rax
movq %rax, %rdi
call _ZN6Circle5inputEv
leaq -32(%rbp), %rax
movq %rax, %rdi
call _ZN6Circle3calEv
leaq -32(%rbp), %rax
movq %rax, %rdi
call _ZN6Circle3calEv
movsd %xmm0, -40(%rbp)
movl $.LC3, %esi
movl $_ZSt4cout, %edi
call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
movsd -40(%rbp), %xmm0
movq %rax, %rdi
call _ZNSolsEd
movl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi
movq %rax, %rdi
call _ZNSolsEPFRSoS_E
movl $0, %eax
movq -8(%rbp), %rdx
xorq %fs:40, %rdx
je .L7
call __stack_chk_fail
.L7:
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1604:
.size main, .-main
.type _Z41__static_initialization_and_destruction_0ii, @function
_Z41__static_initialization_and_destruction_0ii:
.LFB1798:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $16, %rsp
movl %edi, -4(%rbp)
movl %esi, -8(%rbp)
cmpl $1, -4(%rbp)
jne .L10
cmpl $65535, -8(%rbp)
jne .L10
movl $_ZStL8__ioinit, %edi
call _ZNSt8ios_base4InitC1Ev
movl $__dso_handle, %edx
movl $_ZStL8__ioinit, %esi
movl $_ZNSt8ios_base4InitD1Ev, %edi
call __cxa_atexit
.L10:
nop
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1798:
.size _Z41__static_initialization_and_destruction_0ii, .-_Z41__static_initialization_and_destruction_0ii
.type _GLOBAL__sub_I_main, @function
_GLOBAL__sub_I_main:
.LFB1799:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl $65535, %esi
movl $1, %edi
call _Z41__static_initialization_and_destruction_0ii
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1799:
.size _GLOBAL__sub_I_main, .-_GLOBAL__sub_I_main
.section .init_array,"aw"
.align 8
.quad _GLOBAL__sub_I_main
.section .rodata
.align 8
.LC1:
.long 0
.long 1073741824
.align 8
.LC2:
.long 527468713
.long 1074340347
.hidden __dso_handle
.ident "GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609"
.section .note.GNU-stack,"",@progbits
g++ -std=c++11 -c circle.cpp
生成circle.o文件,查看circle.o文件有如下两种方式:
- command:objdump
leinao@ubuntu:~/cpp/basic$ objdump -D circle.o
circle.o: file format elf64-x86-64
Disassembly of section .group:
0000000000000000 <.group>:
0: 01 00 add %eax,(%rax)
2: 00 00 add %al,(%rax)
4: 09 00 or %eax,(%rax)
...
Disassembly of section .group:
0000000000000000 <.group>:
0: 01 00 add %eax,(%rax)
2: 00 00 add %al,(%rax)
4: 0b 00 or (%rax),%eax
...
Disassembly of section .group:
0000000000000000 <_ZN6CircleC5Ev>:
0: 01 00 add %eax,(%rax)
2: 00 00 add %al,(%rax)
4: 0d .byte 0xd
5: 00 00 add %al,(%rax)
...
Disassembly of section .text:
0000000000000000 <main>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 30 sub $0x30,%rsp
8: 64 48 8b 04 25 28 00 mov %fs:0x28,%rax
f: 00 00
11: 48 89 45 f8 mov %rax,-0x8(%rbp)
15: 31 c0 xor %eax,%eax
17: 48 8d 45 e0 lea -0x20(%rbp),%rax
1b: 48 89 c7 mov %rax,%rdi
1e: e8 00 00 00 00 callq 23 <main+0x23>
23: 48 8d 45 e0 lea -0x20(%rbp),%rax
27: 48 89 c7 mov %rax,%rdi
2a: e8 00 00 00 00 callq 2f <main+0x2f>
2f: 48 8d 45 e0 lea -0x20(%rbp),%rax
33: 48 89 c7 mov %rax,%rdi
36: e8 00 00 00 00 callq 3b <main+0x3b>
3b: 48 8d 45 e0 lea -0x20(%rbp),%rax
3f: 48 89 c7 mov %rax,%rdi
42: e8 00 00 00 00 callq 47 <main+0x47>
47: f2 0f 11 45 d8 movsd %xmm0,-0x28(%rbp)
4c: be 00 00 00 00 mov $0x0,%esi
51: bf 00 00 00 00 mov $0x0,%edi
56: e8 00 00 00 00 callq 5b <main+0x5b>
5b: f2 0f 10 45 d8 movsd -0x28(%rbp),%xmm0
60: 48 89 c7 mov %rax,%rdi
63: e8 00 00 00 00 callq 68 <main+0x68>
68: be 00 00 00 00 mov $0x0,%esi
6d: 48 89 c7 mov %rax,%rdi
70: e8 00 00 00 00 callq 75 <main+0x75>
75: b8 00 00 00 00 mov $0x0,%eax
7a: 48 8b 55 f8 mov -0x8(%rbp),%rdx
7e: 64 48 33 14 25 28 00 xor %fs:0x28,%rdx
85: 00 00
87: 74 05 je 8e <main+0x8e>
89: e8 00 00 00 00 callq 8e <main+0x8e>
8e: c9 leaveq
8f: c3 retq
0000000000000090 <_Z41__static_initialization_and_destruction_0ii>:
90: 55 push %rbp
91: 48 89 e5 mov %rsp,%rbp
94: 48 83 ec 10 sub $0x10,%rsp
98: 89 7d fc mov %edi,-0x4(%rbp)
9b: 89 75 f8 mov %esi,-0x8(%rbp)
9e: 83 7d fc 01 cmpl $0x1,-0x4(%rbp)
a2: 75 27 jne cb <_Z41__static_initialization_and_destruction_0ii+0x3b>
a4: 81 7d f8 ff ff 00 00 cmpl $0xffff,-0x8(%rbp)
ab: 75 1e jne cb <_Z41__static_initialization_and_destruction_0ii+0x3b>
ad: bf 00 00 00 00 mov $0x0,%edi
b2: e8 00 00 00 00 callq b7 <_Z41__static_initialization_and_destruction_0ii+0x27>
b7: ba 00 00 00 00 mov $0x0,%edx
bc: be 00 00 00 00 mov $0x0,%esi
c1: bf 00 00 00 00 mov $0x0,%edi
c6: e8 00 00 00 00 callq cb <_Z41__static_initialization_and_destruction_0ii+0x3b>
cb: 90 nop
cc: c9 leaveq
cd: c3 retq
00000000000000ce <_GLOBAL__sub_I_main>:
ce: 55 push %rbp
cf: 48 89 e5 mov %rsp,%rbp
d2: be ff ff 00 00 mov $0xffff,%esi
d7: bf 01 00 00 00 mov $0x1,%edi
dc: e8 af ff ff ff callq 90 <_Z41__static_initialization_and_destruction_0ii>
e1: 5d pop %rbp
e2: c3 retq
Disassembly of section .bss:
0000000000000000 <_ZStL8__ioinit>:
...
Disassembly of section .rodata:
0000000000000000 <_ZStL19piecewise_construct>:
...
8: 70 6c jo 76 <_ZStL19piecewise_construct+0x76>
a: 65 61 gs (bad)
c: 73 65 jae 73 <_ZStL19piecewise_construct+0x73>
e: 20 69 6e and %ch,0x6e(%rcx)
11: 70 75 jo 88 <_ZStL19piecewise_construct+0x88>
13: 74 20 je 35 <_ZStL19piecewise_construct+0x35>
15: 74 68 je 7f <_ZStL19piecewise_construct+0x7f>
17: 65 20 72 61 and %dh,%gs:0x61(%rdx)
1b: 64 69 75 73 20 6f 66 imul $0x20666f20,%fs:0x73(%rbp),%esi
22: 20
23: 63 69 72 movslq 0x72(%rcx),%ebp
26: 63 6c 65 3a movslq 0x3a(%rbp,%riz,2),%ebp
2a: 00 74 68 65 add %dh,0x65(%rax,%rbp,2)
2e: 20 61 72 and %ah,0x72(%rcx)
31: 65 61 gs (bad)
33: 20 6f 66 and %ch,0x66(%rdi)
36: 20 74 68 65 and %dh,0x65(%rax,%rbp,2)
3a: 20 63 69 and %ah,0x69(%rbx)
3d: 72 63 jb a2 <_Z41__static_initialization_and_destruction_0ii+0x12>
3f: 6c insb (%dx),%es:(%rdi)
40: 65 20 69 73 and %ch,%gs:0x73(%rcx)
44: 3a 00 cmp (%rax),%al
...
4e: 00 40 a9 add %al,-0x57(%rax)
51: 88 70 1f mov %dh,0x1f(%rax)
54: fb sti
55: 21 09 and %ecx,(%rcx)
57: 40 rex
Disassembly of section .text._ZN6Circle5inputEv:
0000000000000000 <_ZN6Circle5inputEv>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 10 sub $0x10,%rsp
8: 48 89 7d f8 mov %rdi,-0x8(%rbp)
c: be 00 00 00 00 mov $0x0,%esi
11: bf 00 00 00 00 mov $0x0,%edi
16: e8 00 00 00 00 callq 1b <_ZN6Circle5inputEv+0x1b>
1b: 48 8b 45 f8 mov -0x8(%rbp),%rax
1f: 48 83 c0 08 add $0x8,%rax
23: 48 89 c6 mov %rax,%rsi
26: bf 00 00 00 00 mov $0x0,%edi
2b: e8 00 00 00 00 callq 30 <_ZN6Circle5inputEv+0x30>
30: 90 nop
31: c9 leaveq
32: c3 retq
Disassembly of section .text._ZN6Circle3calEv:
0000000000000000 <_ZN6Circle3calEv>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 20 sub $0x20,%rsp
8: 48 89 7d f8 mov %rdi,-0x8(%rbp)
c: 48 8b 45 f8 mov -0x8(%rbp),%rax
10: f2 0f 10 10 movsd (%rax),%xmm2
14: f2 0f 11 55 f0 movsd %xmm2,-0x10(%rbp)
19: 48 8b 45 f8 mov -0x8(%rbp),%rax
1d: 48 8b 40 08 mov 0x8(%rax),%rax
21: f2 0f 10 05 00 00 00 movsd 0x0(%rip),%xmm0 # 29 <_ZN6Circle3calEv+0x29>
28: 00
29: 66 0f 28 c8 movapd %xmm0,%xmm1
2d: 48 89 45 e8 mov %rax,-0x18(%rbp)
31: f2 0f 10 45 e8 movsd -0x18(%rbp),%xmm0
36: e8 00 00 00 00 callq 3b <_ZN6Circle3calEv+0x3b>
3b: f2 0f 59 45 f0 mulsd -0x10(%rbp),%xmm0
40: 48 8b 45 f8 mov -0x8(%rbp),%rax
44: f2 0f 11 40 10 movsd %xmm0,0x10(%rax)
49: 48 8b 45 f8 mov -0x8(%rbp),%rax
4d: f2 0f 10 40 10 movsd 0x10(%rax),%xmm0
52: c9 leaveq
53: c3 retq
Disassembly of section .text._ZN6CircleC2Ev:
0000000000000000 <_ZN6CircleC1Ev>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 89 7d f8 mov %rdi,-0x8(%rbp)
8: 48 8b 45 f8 mov -0x8(%rbp),%rax
c: f2 0f 10 05 00 00 00 movsd 0x0(%rip),%xmm0 # 14 <_ZN6CircleC1Ev+0x14>
13: 00
14: f2 0f 11 00 movsd %xmm0,(%rax)
18: 90 nop
19: 5d pop %rbp
1a: c3 retq
Disassembly of section .init_array:
0000000000000000 <.init_array>:
...
Disassembly of section .comment:
0000000000000000 <.comment>:
0: 00 47 43 add %al,0x43(%rdi)
3: 43 3a 20 rex.XB cmp (%r8),%spl
6: 28 55 62 sub %dl,0x62(%rbp)
9: 75 6e jne 79 <_ZN6CircleC5Ev+0x79>
b: 74 75 je 82 <_ZN6CircleC5Ev+0x82>
d: 20 35 2e 34 2e 30 and %dh,0x302e342e(%rip) # 302e3441 <_GLOBAL__sub_I_main+0x302e3373>
13: 2d 36 75 62 75 sub $0x75627536,%eax
18: 6e outsb %ds:(%rsi),(%dx)
19: 74 75 je 90 <_Z41__static_initialization_and_destruction_0ii>
1b: 31 7e 31 xor %edi,0x31(%rsi)
1e: 36 2e 30 34 2e ss xor %dh,%cs:(%rsi,%rbp,1)
23: 31 32 xor %esi,(%rdx)
25: 29 20 sub %esp,(%rax)
27: 35 2e 34 2e 30 xor $0x302e342e,%eax
2c: 20 32 and %dh,(%rdx)
2e: 30 31 xor %dh,(%rcx)
30: 36 30 36 xor %dh,%ss:(%rsi)
33: 30 39 xor %bh,(%rcx)
...
Disassembly of section .eh_frame:
0000000000000000 <.eh_frame>:
0: 14 00 adc $0x0,%al
2: 00 00 add %al,(%rax)
4: 00 00 add %al,(%rax)
6: 00 00 add %al,(%rax)
8: 01 7a 52 add %edi,0x52(%rdx)
b: 00 01 add %al,(%rcx)
d: 78 10 js 1f <.eh_frame+0x1f>
f: 01 1b add %ebx,(%rbx)
11: 0c 07 or $0x7,%al
13: 08 90 01 00 00 1c or %dl,0x1c000001(%rax)
19: 00 00 add %al,(%rax)
1b: 00 1c 00 add %bl,(%rax,%rax,1)
1e: 00 00 add %al,(%rax)
20: 00 00 add %al,(%rax)
22: 00 00 add %al,(%rax)
24: 33 00 xor (%rax),%eax
26: 00 00 add %al,(%rax)
28: 00 41 0e add %al,0xe(%rcx)
2b: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
31: 6e outsb %ds:(%rsi),(%dx)
32: 0c 07 or $0x7,%al
34: 08 00 or %al,(%rax)
36: 00 00 add %al,(%rax)
38: 1c 00 sbb $0x0,%al
3a: 00 00 add %al,(%rax)
3c: 3c 00 cmp $0x0,%al
3e: 00 00 add %al,(%rax)
40: 00 00 add %al,(%rax)
42: 00 00 add %al,(%rax)
44: 54 push %rsp
45: 00 00 add %al,(%rax)
47: 00 00 add %al,(%rax)
49: 41 0e rex.B (bad)
4b: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
51: 02 4f 0c add 0xc(%rdi),%cl
54: 07 (bad)
55: 08 00 or %al,(%rax)
57: 00 1c 00 add %bl,(%rax,%rax,1)
5a: 00 00 add %al,(%rax)
5c: 5c pop %rsp
5d: 00 00 add %al,(%rax)
5f: 00 00 add %al,(%rax)
61: 00 00 add %al,(%rax)
63: 00 1b add %bl,(%rbx)
65: 00 00 add %al,(%rax)
67: 00 00 add %al,(%rax)
69: 41 0e rex.B (bad)
6b: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
71: 56 push %rsi
72: 0c 07 or $0x7,%al
74: 08 00 or %al,(%rax)
76: 00 00 add %al,(%rax)
78: 1c 00 sbb $0x0,%al
7a: 00 00 add %al,(%rax)
7c: 7c 00 jl 7e <.eh_frame+0x7e>
7e: 00 00 add %al,(%rax)
80: 00 00 add %al,(%rax)
82: 00 00 add %al,(%rax)
84: 90 nop
85: 00 00 add %al,(%rax)
87: 00 00 add %al,(%rax)
89: 41 0e rex.B (bad)
8b: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
91: 02 8b 0c 07 08 00 add 0x8070c(%rbx),%cl
97: 00 1c 00 add %bl,(%rax,%rax,1)
9a: 00 00 add %al,(%rax)
9c: 9c pushfq
9d: 00 00 add %al,(%rax)
9f: 00 00 add %al,(%rax)
a1: 00 00 add %al,(%rax)
a3: 00 3e add %bh,(%rsi)
a5: 00 00 add %al,(%rax)
a7: 00 00 add %al,(%rax)
a9: 41 0e rex.B (bad)
ab: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
b1: 79 0c jns bf <.eh_frame+0xbf>
b3: 07 (bad)
b4: 08 00 or %al,(%rax)
b6: 00 00 add %al,(%rax)
b8: 1c 00 sbb $0x0,%al
ba: 00 00 add %al,(%rax)
bc: bc 00 00 00 00 mov $0x0,%esp
c1: 00 00 add %al,(%rax)
c3: 00 15 00 00 00 00 add %dl,0x0(%rip) # c9 <.eh_frame+0xc9>
c9: 41 0e rex.B (bad)
cb: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
d1: 50 push %rax
d2: 0c 07 or $0x7,%al
d4: 08 00 or %al,(%rax)
...
leinao@ubuntu:~/cpp/basic$ objdump -a circle.o
circle.o: file format elf64-x86-64
circle.o
leinao@ubuntu:~/cpp/basic$ objdump -b circle.o
Usage: objdump <option(s)> <file(s)>
Display information from object <file(s)>.
At least one of the following switches must be given:
-a, --archive-headers Display archive header information
-f, --file-headers Display the contents of the overall file header
-p, --private-headers Display object format specific file header contents
-P, --private=OPT,OPT... Display object format specific contents
-h, --[section-]headers Display the contents of the section headers
-x, --all-headers Display the contents of all headers
-d, --disassemble Display assembler contents of executable sections
-D, --disassemble-all Display assembler contents of all sections
-S, --source Intermix source code with disassembly
-s, --full-contents Display the full contents of all sections requested
-g, --debugging Display debug information in object file
-e, --debugging-tags Display debug information using ctags style
-G, --stabs Display (in raw form) any STABS info in the file
-W[lLiaprmfFsoRt] or
--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,
=frames-interp,=str,=loc,=Ranges,=pubtypes,
=gdb_index,=trace_info,=trace_abbrev,=trace_aranges,
=addr,=cu_index]
Display DWARF info in the file
-t, --syms Display the contents of the symbol table(s)
-T, --dynamic-syms Display the contents of the dynamic symbol table
-r, --reloc Display the relocation entries in the file
-R, --dynamic-reloc Display the dynamic relocation entries in the file
@<file> Read options from <file>
-v, --version Display this program's version number
-i, --info List object formats and architectures supported
-H, --help Display this information
leinao@ubuntu:~/cpp/basic$ objdump -f circle.o
circle.o: file format elf64-x86-64
architecture: i386:x86-64, flags 0x00000011:
HAS_RELOC, HAS_SYMS
start address 0x0000000000000000
leinao@ubuntu:~/cpp/basic$ ls
buffer.cpp buffer.out circle.cpp circle.o circle.s macro_code.txt main.cpp main.out test2.cpp test.cpp
leinao@ubuntu:~/cpp/basic$ ./circle.o
-bash: ./circle.o: Permission denied
leinao@ubuntu:~/cpp/basic$ sudo ./circle.o
[sudo] password for leinao:
sudo: ./circle.o: command not found
leinao@ubuntu:~/cpp/basic$ ls
buffer.cpp buffer.out circle.cpp circle.o circle.s macro_code.txt main.cpp main.out test2.cpp test.cpp
leinao@ubuntu:~/cpp/basic$ vim circle.cpp
leinao@ubuntu:~/cpp/basic$ vim macro_code.txt
leinao@ubuntu:~/cpp/basic$ vim circle.s
leinao@ubuntu:~/cpp/basic$ objdump -D circle.o
circle.o: file format elf64-x86-64
Disassembly of section .group:
0000000000000000 <.group>:
0: 01 00 add %eax,(%rax)
2: 00 00 add %al,(%rax)
4: 09 00 or %eax,(%rax)
...
Disassembly of section .group:
0000000000000000 <.group>:
0: 01 00 add %eax,(%rax)
2: 00 00 add %al,(%rax)
4: 0b 00 or (%rax),%eax
...
Disassembly of section .group:
0000000000000000 <_ZN6CircleC5Ev>:
0: 01 00 add %eax,(%rax)
2: 00 00 add %al,(%rax)
4: 0d .byte 0xd
5: 00 00 add %al,(%rax)
...
Disassembly of section .text:
0000000000000000 <main>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 30 sub $0x30,%rsp
8: 64 48 8b 04 25 28 00 mov %fs:0x28,%rax
f: 00 00
11: 48 89 45 f8 mov %rax,-0x8(%rbp)
15: 31 c0 xor %eax,%eax
17: 48 8d 45 e0 lea -0x20(%rbp),%rax
1b: 48 89 c7 mov %rax,%rdi
1e: e8 00 00 00 00 callq 23 <main+0x23>
23: 48 8d 45 e0 lea -0x20(%rbp),%rax
27: 48 89 c7 mov %rax,%rdi
2a: e8 00 00 00 00 callq 2f <main+0x2f>
2f: 48 8d 45 e0 lea -0x20(%rbp),%rax
33: 48 89 c7 mov %rax,%rdi
36: e8 00 00 00 00 callq 3b <main+0x3b>
3b: 48 8d 45 e0 lea -0x20(%rbp),%rax
3f: 48 89 c7 mov %rax,%rdi
42: e8 00 00 00 00 callq 47 <main+0x47>
47: f2 0f 11 45 d8 movsd %xmm0,-0x28(%rbp)
4c: be 00 00 00 00 mov $0x0,%esi
51: bf 00 00 00 00 mov $0x0,%edi
56: e8 00 00 00 00 callq 5b <main+0x5b>
5b: f2 0f 10 45 d8 movsd -0x28(%rbp),%xmm0
60: 48 89 c7 mov %rax,%rdi
63: e8 00 00 00 00 callq 68 <main+0x68>
68: be 00 00 00 00 mov $0x0,%esi
6d: 48 89 c7 mov %rax,%rdi
70: e8 00 00 00 00 callq 75 <main+0x75>
75: b8 00 00 00 00 mov $0x0,%eax
7a: 48 8b 55 f8 mov -0x8(%rbp),%rdx
7e: 64 48 33 14 25 28 00 xor %fs:0x28,%rdx
85: 00 00
87: 74 05 je 8e <main+0x8e>
89: e8 00 00 00 00 callq 8e <main+0x8e>
8e: c9 leaveq
8f: c3 retq
0000000000000090 <_Z41__static_initialization_and_destruction_0ii>:
90: 55 push %rbp
91: 48 89 e5 mov %rsp,%rbp
94: 48 83 ec 10 sub $0x10,%rsp
98: 89 7d fc mov %edi,-0x4(%rbp)
9b: 89 75 f8 mov %esi,-0x8(%rbp)
9e: 83 7d fc 01 cmpl $0x1,-0x4(%rbp)
a2: 75 27 jne cb <_Z41__static_initialization_and_destruction_0ii+0x3b>
a4: 81 7d f8 ff ff 00 00 cmpl $0xffff,-0x8(%rbp)
ab: 75 1e jne cb <_Z41__static_initialization_and_destruction_0ii+0x3b>
ad: bf 00 00 00 00 mov $0x0,%edi
b2: e8 00 00 00 00 callq b7 <_Z41__static_initialization_and_destruction_0ii+0x27>
b7: ba 00 00 00 00 mov $0x0,%edx
bc: be 00 00 00 00 mov $0x0,%esi
c1: bf 00 00 00 00 mov $0x0,%edi
c6: e8 00 00 00 00 callq cb <_Z41__static_initialization_and_destruction_0ii+0x3b>
cb: 90 nop
cc: c9 leaveq
cd: c3 retq
00000000000000ce <_GLOBAL__sub_I_main>:
ce: 55 push %rbp
cf: 48 89 e5 mov %rsp,%rbp
d2: be ff ff 00 00 mov $0xffff,%esi
d7: bf 01 00 00 00 mov $0x1,%edi
dc: e8 af ff ff ff callq 90 <_Z41__static_initialization_and_destruction_0ii>
e1: 5d pop %rbp
e2: c3 retq
Disassembly of section .bss:
0000000000000000 <_ZStL8__ioinit>:
...
Disassembly of section .rodata:
0000000000000000 <_ZStL19piecewise_construct>:
...
8: 70 6c jo 76 <_ZStL19piecewise_construct+0x76>
a: 65 61 gs (bad)
c: 73 65 jae 73 <_ZStL19piecewise_construct+0x73>
e: 20 69 6e and %ch,0x6e(%rcx)
11: 70 75 jo 88 <_ZStL19piecewise_construct+0x88>
13: 74 20 je 35 <_ZStL19piecewise_construct+0x35>
15: 74 68 je 7f <_ZStL19piecewise_construct+0x7f>
17: 65 20 72 61 and %dh,%gs:0x61(%rdx)
1b: 64 69 75 73 20 6f 66 imul $0x20666f20,%fs:0x73(%rbp),%esi
22: 20
23: 63 69 72 movslq 0x72(%rcx),%ebp
26: 63 6c 65 3a movslq 0x3a(%rbp,%riz,2),%ebp
2a: 00 74 68 65 add %dh,0x65(%rax,%rbp,2)
2e: 20 61 72 and %ah,0x72(%rcx)
31: 65 61 gs (bad)
33: 20 6f 66 and %ch,0x66(%rdi)
36: 20 74 68 65 and %dh,0x65(%rax,%rbp,2)
3a: 20 63 69 and %ah,0x69(%rbx)
3d: 72 63 jb a2 <_Z41__static_initialization_and_destruction_0ii+0x12>
3f: 6c insb (%dx),%es:(%rdi)
40: 65 20 69 73 and %ch,%gs:0x73(%rcx)
44: 3a 00 cmp (%rax),%al
...
4e: 00 40 a9 add %al,-0x57(%rax)
51: 88 70 1f mov %dh,0x1f(%rax)
54: fb sti
55: 21 09 and %ecx,(%rcx)
57: 40 rex
Disassembly of section .text._ZN6Circle5inputEv:
0000000000000000 <_ZN6Circle5inputEv>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 10 sub $0x10,%rsp
8: 48 89 7d f8 mov %rdi,-0x8(%rbp)
c: be 00 00 00 00 mov $0x0,%esi
11: bf 00 00 00 00 mov $0x0,%edi
16: e8 00 00 00 00 callq 1b <_ZN6Circle5inputEv+0x1b>
1b: 48 8b 45 f8 mov -0x8(%rbp),%rax
1f: 48 83 c0 08 add $0x8,%rax
23: 48 89 c6 mov %rax,%rsi
26: bf 00 00 00 00 mov $0x0,%edi
2b: e8 00 00 00 00 callq 30 <_ZN6Circle5inputEv+0x30>
30: 90 nop
31: c9 leaveq
32: c3 retq
Disassembly of section .text._ZN6Circle3calEv:
0000000000000000 <_ZN6Circle3calEv>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 20 sub $0x20,%rsp
8: 48 89 7d f8 mov %rdi,-0x8(%rbp)
c: 48 8b 45 f8 mov -0x8(%rbp),%rax
10: f2 0f 10 10 movsd (%rax),%xmm2
14: f2 0f 11 55 f0 movsd %xmm2,-0x10(%rbp)
19: 48 8b 45 f8 mov -0x8(%rbp),%rax
1d: 48 8b 40 08 mov 0x8(%rax),%rax
21: f2 0f 10 05 00 00 00 movsd 0x0(%rip),%xmm0 # 29 <_ZN6Circle3calEv+0x29>
28: 00
29: 66 0f 28 c8 movapd %xmm0,%xmm1
2d: 48 89 45 e8 mov %rax,-0x18(%rbp)
31: f2 0f 10 45 e8 movsd -0x18(%rbp),%xmm0
36: e8 00 00 00 00 callq 3b <_ZN6Circle3calEv+0x3b>
3b: f2 0f 59 45 f0 mulsd -0x10(%rbp),%xmm0
40: 48 8b 45 f8 mov -0x8(%rbp),%rax
44: f2 0f 11 40 10 movsd %xmm0,0x10(%rax)
49: 48 8b 45 f8 mov -0x8(%rbp),%rax
4d: f2 0f 10 40 10 movsd 0x10(%rax),%xmm0
52: c9 leaveq
53: c3 retq
Disassembly of section .text._ZN6CircleC2Ev:
0000000000000000 <_ZN6CircleC1Ev>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 89 7d f8 mov %rdi,-0x8(%rbp)
8: 48 8b 45 f8 mov -0x8(%rbp),%rax
c: f2 0f 10 05 00 00 00 movsd 0x0(%rip),%xmm0 # 14 <_ZN6CircleC1Ev+0x14>
13: 00
14: f2 0f 11 00 movsd %xmm0,(%rax)
18: 90 nop
19: 5d pop %rbp
1a: c3 retq
Disassembly of section .init_array:
0000000000000000 <.init_array>:
...
Disassembly of section .comment:
0000000000000000 <.comment>:
0: 00 47 43 add %al,0x43(%rdi)
3: 43 3a 20 rex.XB cmp (%r8),%spl
6: 28 55 62 sub %dl,0x62(%rbp)
9: 75 6e jne 79 <_ZN6CircleC5Ev+0x79>
b: 74 75 je 82 <_ZN6CircleC5Ev+0x82>
d: 20 35 2e 34 2e 30 and %dh,0x302e342e(%rip) # 302e3441 <_GLOBAL__sub_I_main+0x302e3373>
13: 2d 36 75 62 75 sub $0x75627536,%eax
18: 6e outsb %ds:(%rsi),(%dx)
19: 74 75 je 90 <_Z41__static_initialization_and_destruction_0ii>
1b: 31 7e 31 xor %edi,0x31(%rsi)
1e: 36 2e 30 34 2e ss xor %dh,%cs:(%rsi,%rbp,1)
23: 31 32 xor %esi,(%rdx)
25: 29 20 sub %esp,(%rax)
27: 35 2e 34 2e 30 xor $0x302e342e,%eax
2c: 20 32 and %dh,(%rdx)
2e: 30 31 xor %dh,(%rcx)
30: 36 30 36 xor %dh,%ss:(%rsi)
33: 30 39 xor %bh,(%rcx)
...
Disassembly of section .eh_frame:
0000000000000000 <.eh_frame>:
0: 14 00 adc $0x0,%al
2: 00 00 add %al,(%rax)
4: 00 00 add %al,(%rax)
6: 00 00 add %al,(%rax)
8: 01 7a 52 add %edi,0x52(%rdx)
b: 00 01 add %al,(%rcx)
d: 78 10 js 1f <.eh_frame+0x1f>
f: 01 1b add %ebx,(%rbx)
11: 0c 07 or $0x7,%al
13: 08 90 01 00 00 1c or %dl,0x1c000001(%rax)
19: 00 00 add %al,(%rax)
1b: 00 1c 00 add %bl,(%rax,%rax,1)
1e: 00 00 add %al,(%rax)
20: 00 00 add %al,(%rax)
22: 00 00 add %al,(%rax)
24: 33 00 xor (%rax),%eax
26: 00 00 add %al,(%rax)
28: 00 41 0e add %al,0xe(%rcx)
2b: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
31: 6e outsb %ds:(%rsi),(%dx)
32: 0c 07 or $0x7,%al
34: 08 00 or %al,(%rax)
36: 00 00 add %al,(%rax)
38: 1c 00 sbb $0x0,%al
3a: 00 00 add %al,(%rax)
3c: 3c 00 cmp $0x0,%al
3e: 00 00 add %al,(%rax)
40: 00 00 add %al,(%rax)
42: 00 00 add %al,(%rax)
44: 54 push %rsp
45: 00 00 add %al,(%rax)
47: 00 00 add %al,(%rax)
49: 41 0e rex.B (bad)
4b: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
51: 02 4f 0c add 0xc(%rdi),%cl
54: 07 (bad)
55: 08 00 or %al,(%rax)
57: 00 1c 00 add %bl,(%rax,%rax,1)
5a: 00 00 add %al,(%rax)
5c: 5c pop %rsp
5d: 00 00 add %al,(%rax)
5f: 00 00 add %al,(%rax)
61: 00 00 add %al,(%rax)
63: 00 1b add %bl,(%rbx)
65: 00 00 add %al,(%rax)
67: 00 00 add %al,(%rax)
69: 41 0e rex.B (bad)
6b: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
71: 56 push %rsi
72: 0c 07 or $0x7,%al
74: 08 00 or %al,(%rax)
76: 00 00 add %al,(%rax)
78: 1c 00 sbb $0x0,%al
7a: 00 00 add %al,(%rax)
7c: 7c 00 jl 7e <.eh_frame+0x7e>
7e: 00 00 add %al,(%rax)
80: 00 00 add %al,(%rax)
82: 00 00 add %al,(%rax)
84: 90 nop
85: 00 00 add %al,(%rax)
87: 00 00 add %al,(%rax)
89: 41 0e rex.B (bad)
8b: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
91: 02 8b 0c 07 08 00 add 0x8070c(%rbx),%cl
97: 00 1c 00 add %bl,(%rax,%rax,1)
9a: 00 00 add %al,(%rax)
9c: 9c pushfq
9d: 00 00 add %al,(%rax)
9f: 00 00 add %al,(%rax)
a1: 00 00 add %al,(%rax)
a3: 00 3e add %bh,(%rsi)
a5: 00 00 add %al,(%rax)
a7: 00 00 add %al,(%rax)
a9: 41 0e rex.B (bad)
ab: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
b1: 79 0c jns bf <.eh_frame+0xbf>
b3: 07 (bad)
b4: 08 00 or %al,(%rax)
b6: 00 00 add %al,(%rax)
b8: 1c 00 sbb $0x0,%al
ba: 00 00 add %al,(%rax)
bc: bc 00 00 00 00 mov $0x0,%esp
c1: 00 00 add %al,(%rax)
c3: 00 15 00 00 00 00 add %dl,0x0(%rip) # c9 <.eh_frame+0xc9>
c9: 41 0e rex.B (bad)
cb: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
d1: 50 push %rax
d2: 0c 07 or $0x7,%al
d4: 08 00 or %al,(%rax)
...
- command:hexdump
leinao@ubuntu:~/cpp/basic$ hexdump circle.o
0000000 457f 464c 0102 0001 0000 0000 0000 0000
0000010 0001 003e 0001 0000 0000 0000 0000 0000
0000020 0000 0000 0000 0000 0ca8 0000 0000 0000
0000030 0000 0000 0040 0000 0000 0040 0018 0015
0000040 0001 0000 0009 0000 0001 0000 000b 0000
0000050 0001 0000 000d 0000 4855 e589 8348 30ec
0000060 4864 048b 2825 0000 4800 4589 31f8 48c0
0000070 458d 48e0 c789 00e8 0000 4800 458d 48e0
0000080 c789 00e8 0000 4800 458d 48e0 c789 00e8
0000090 0000 4800 458d 48e0 c789 00e8 0000 f200
00000a0 110f d845 00be 0000 bf00 0000 0000 00e8
00000b0 0000 f200 100f d845 8948 e8c7 0000 0000
00000c0 00be 0000 4800 c789 00e8 0000 b800 0000
00000d0 0000 8b48 f855 4864 1433 2825 0000 7400
00000e0 e805 0000 0000 c3c9 4855 e589 8348 10ec
00000f0 7d89 89fc f875 7d83 01fc 2775 7d81 fff8
0000100 00ff 7500 bf1e 0000 0000 00e8 0000 ba00
0000110 0000 0000 00be 0000 bf00 0000 0000 00e8
0000120 0000 9000 c3c9 4855 e589 ffbe 00ff bf00
0000130 0001 0000 afe8 ffff 5dff 00c3 0000 0000
0000140 0000 0000 0000 0000 6c70 6165 6573 6920
0000150 706e 7475 7420 6568 7220 6461 7569 2073
0000160 666f 6320 7269 6c63 3a65 7400 6568 6120
0000170 6572 2061 666f 7420 6568 6320 7269 6c63
0000180 2065 7369 003a 0000 0000 0000 0000 4000
0000190 88a9 1f70 21fb 4009 4855 e589 8348 10ec
00001a0 8948 f87d 00be 0000 bf00 0000 0000 00e8
00001b0 0000 4800 458b 48f8 c083 4808 c689 00bf
00001c0 0000 e800 0000 0000 c990 00c3 4855 e589
00001d0 8348 20ec 8948 f87d 8b48 f845 0ff2 1010
00001e0 0ff2 5511 48f0 458b 48f8 408b f208 100f
00001f0 0005 0000 6600 280f 48c8 4589 f2e8 100f
0000200 e845 00e8 0000 f200 590f f045 8b48 f845
0000210 0ff2 4011 4810 458b f2f8 100f 1040 c3c9
0000220 4855 e589 8948 f87d 8b48 f845 0ff2 0510
0000230 0000 0000 0ff2 0011 5d90 00c3 0000 0000
0000240 0000 0000 0000 0000 4700 4343 203a 5528
0000250 7562 746e 2075 2e35 2e34 2d30 7536 7562
0000260 746e 3175 317e 2e36 3430 312e 2932 3520
0000270 342e 302e 3220 3130 3036 3036 0039 0000
0000280 0014 0000 0000 0000 7a01 0052 7801 0110
0000290 0c1b 0807 0190 0000 001c 0000 001c 0000
00002a0 0000 0000 0033 0000 4100 100e 0286 0d43
00002b0 6e06 070c 0008 0000 001c 0000 003c 0000
00002c0 0000 0000 0054 0000 4100 100e 0286 0d43
00002d0 0206 0c4f 0807 0000 001c 0000 005c 0000
00002e0 0000 0000 001b 0000 4100 100e 0286 0d43
00002f0 5606 070c 0008 0000 001c 0000 007c 0000
0000300 0000 0000 0090 0000 4100 100e 0286 0d43
0000310 0206 0c8b 0807 0000 001c 0000 009c 0000
0000320 0000 0000 003e 0000 4100 100e 0286 0d43
0000330 7906 070c 0008 0000 001c 0000 00bc 0000
0000340 0000 0000 0015 0000 4100 100e 0286 0d43
0000350 5006 070c 0008 0000 0000 0000 0000 0000
0000360 0000 0000 0000 0000 0000 0000 0000 0000
0000370 0001 0000 0004 fff1 0000 0000 0000 0000
0000380 0000 0000 0000 0000 0000 0000 0003 0004
0000390 0000 0000 0000 0000 0000 0000 0000 0000
00003a0 0000 0000 0003 0006 0000 0000 0000 0000
00003b0 0000 0000 0000 0000 0000 0000 0003 0007
00003c0 0000 0000 0000 0000 0000 0000 0000 0000
00003d0 0000 0000 0003 0008 0000 0000 0000 0000
00003e0 0000 0000 0000 0000 000c 0000 0001 0008
00003f0 0000 0000 0000 0000 0001 0000 0000 0000
0000400 0027 0000 0001 0007 0000 0000 0000 0000
0000410 0001 0000 0000 0000 0000 0000 0003 0009
0000420 0000 0000 0000 0000 0000 0000 0000 0000
0000430 0000 0000 0003 000b 0000 0000 0000 0000
0000440 0000 0000 0000 0000 0000 0000 0003 000d
0000450 0000 0000 0000 0000 0000 0000 0000 0000
0000460 0036 0000 0002 0004 0090 0000 0000 0000
0000470 003e 0000 0000 0000 0066 0000 0002 0004
0000480 00ce 0000 0000 0000 0015 0000 0000 0000
0000490 0000 0000 0003 000f 0000 0000 0000 0000
00004a0 0000 0000 0000 0000 0000 0000 0003 0012
00004b0 0000 0000 0000 0000 0000 0000 0000 0000
00004c0 0000 0000 0003 0013 0000 0000 0000 0000
00004d0 0000 0000 0000 0000 007a 0000 0000 0003
00004e0 0000 0000 0000 0000 0000 0000 0000 0000
00004f0 0000 0000 0003 0011 0000 0000 0000 0000
0000500 0000 0000 0000 0000 0000 0000 0003 0001
0000510 0000 0000 0000 0000 0000 0000 0000 0000
0000520 0000 0000 0003 0002 0000 0000 0000 0000
0000530 0000 0000 0000 0000 0000 0000 0003 0003
0000540 0000 0000 0000 0000 0000 0000 0000 0000
0000550 0089 0000 0022 0009 0000 0000 0000 0000
0000560 0033 0000 0000 0000 009c 0000 0010 0000
0000570 0000 0000 0000 0000 0000 0000 0000 0000
0000580 00a6 0000 0010 0000 0000 0000 0000 0000
0000590 0000 0000 0000 0000 00de 0000 0010 0000
00005a0 0000 0000 0000 0000 0000 0000 0000 0000
00005b0 00e7 0000 0010 0000 0000 0000 0000 0000
00005c0 0000 0000 0000 0000 00f2 0000 0022 000b
00005d0 0000 0000 0000 0000 0054 0000 0000 0000
00005e0 0103 0000 0010 0000 0000 0000 0000 0000
00005f0 0000 0000 0000 0000 0107 0000 0022 000d
0000600 0000 0000 0000 0000 001b 0000 0000 0000
0000610 0116 0000 0022 000d 0000 0000 0000 0000
0000620 001b 0000 0000 0000 0075 0000 0012 0004
0000630 0000 0000 0000 0000 0090 0000 0000 0000
0000640 0125 0000 0010 0000 0000 0000 0000 0000
0000650 0000 0000 0000 0000 012f 0000 0010 0000
0000660 0000 0000 0000 0000 0000 0000 0000 0000
0000670 016a 0000 0010 0000 0000 0000 0000 0000
0000680 0000 0000 0000 0000 017b 0000 0010 0000
0000690 0000 0000 0000 0000 0000 0000 0000 0000
00006a0 018c 0000 0010 0000 0000 0000 0000 0000
00006b0 0000 0000 0000 0000 01a4 0000 0210 0000
00006c0 0000 0000 0000 0000 0000 0000 0000 0000
00006d0 01b1 0000 0010 0000 0000 0000 0000 0000
00006e0 0000 0000 0000 0000 01c9 0000 0010 0000
00006f0 0000 0000 0000 0000 0000 0000 0000 0000
0000700 6300 7269 6c63 2e65 7063 0070 5a5f 7453
0000710 314c 7039 6569 6563 6977 6573 635f 6e6f
0000720 7473 7572 7463 5f00 535a 4c74 5f38 695f
0000730 696f 696e 0074 5a5f 3134 5f5f 7473 7461
0000740 6369 695f 696e 6974 6c61 7a69 7461 6f69
0000750 5f6e 6e61 5f64 6564 7473 7572 7463 6f69
0000760 5f6e 6930 0069 475f 4f4c 4142 5f4c 735f
0000770 6275 495f 6d5f 6961 006e 5a5f 364e 6943
0000780 6372 656c 3543 7645 5f00 4e5a 4336 7269
0000790 6c63 3565 6e69 7570 4574 0076 5a5f 7453
00007a0 6334 756f 0074 5a5f 7453 736c 5349 3174
00007b0 6331 6168 5f72 7274 6961 7374 6349 4545
00007c0 5352 3174 6233 7361 6369 6f5f 7473 6572
00007d0 6d61 6349 5f54 5345 5f35 4b50 0063 5a5f
00007e0 7453 6333 6e69 5f00 4e5a 6953 7372 5245
00007f0 0064 5a5f 364e 6943 6372 656c 6333 6c61
0000800 7645 7000 776f 5f00 4e5a 4336 7269 6c63
0000810 4365 4532 0076 5a5f 364e 6943 6372 656c
0000820 3143 7645 5f00 4e5a 6f53 736c 6445 5f00
0000830 535a 3474 6e65 6c64 6349 7453 3131 6863
0000840 7261 745f 6172 7469 4973 4563 5245 7453
0000850 3331 6162 6973 5f63 736f 7274 6165 496d
0000860 5f54 3054 455f 3653 005f 5a5f 534e 6c6f
0000870 4573 4650 5352 536f 455f 5f00 735f 6174
0000880 6b63 635f 6b68 665f 6961 006c 5a5f 534e
0000890 3874 6f69 5f73 6162 6573 4934 696e 4374
00008a0 4531 0076 5f5f 7364 5f6f 6168 646e 656c
00008b0 5f00 4e5a 7453 6938 736f 625f 7361 3465
00008c0 6e49 7469 3144 7645 5f00 635f 6178 615f
00008d0 6574 6978 0074 0000 001f 0000 0000 0000
00008e0 0002 0000 001d 0000 fffc ffff ffff ffff
00008f0 002b 0000 0000 0000 0002 0000 0015 0000
0000900 fffc ffff ffff ffff 0037 0000 0000 0000
0000910 0002 0000 001a 0000 fffc ffff ffff ffff
0000920 0043 0000 0000 0000 0002 0000 001a 0000
0000930 fffc ffff ffff ffff 004d 0000 0000 0000
0000940 000a 0000 0005 0000 002b 0000 0000 0000
0000950 0052 0000 0000 0000 000a 0000 0016 0000
0000960 0000 0000 0000 0000 0057 0000 0000 0000
0000970 0002 0000 0017 0000 fffc ffff ffff ffff
0000980 0064 0000 0000 0000 0002 0000 001f 0000
0000990 fffc ffff ffff ffff 0069 0000 0000 0000
00009a0 000a 0000 0020 0000 0000 0000 0000 0000
00009b0 0071 0000 0000 0000 0002 0000 0021 0000
00009c0 fffc ffff ffff ffff 008a 0000 0000 0000
00009d0 0002 0000 0022 0000 fffc ffff ffff ffff
00009e0 00ae 0000 0000 0000 000a 0000 0004 0000
00009f0 0000 0000 0000 0000 00b3 0000 0000 0000
0000a00 0002 0000 0023 0000 fffc ffff ffff ffff
0000a10 00b8 0000 0000 0000 000a 0000 0024 0000
0000a20 0000 0000 0000 0000 00bd 0000 0000 0000
0000a30 000a 0000 0004 0000 0000 0000 0000 0000
0000a40 00c2 0000 0000 0000 000a 0000 0025 0000
0000a50 0000 0000 0000 0000 00c7 0000 0000 0000
0000a60 0002 0000 0026 0000 fffc ffff ffff ffff
0000a70 000d 0000 0000 0000 000a 0000 0005 0000
0000a80 0008 0000 0000 0000 0012 0000 0000 0000
0000a90 000a 0000 0016 0000 0000 0000 0000 0000
0000aa0 0017 0000 0000 0000 0002 0000 0017 0000
0000ab0 fffc ffff ffff ffff 0027 0000 0000 0000
0000ac0 000a 0000 0018 0000 0000 0000 0000 0000
0000ad0 002c 0000 0000 0000 0002 0000 0019 0000
0000ae0 fffc ffff ffff ffff 0025 0000 0000 0000
0000af0 0002 0000 0005 0000 0044 0000 0000 0000
0000b00 0037 0000 0000 0000 0002 0000 001b 0000
0000b10 fffc ffff ffff ffff 0010 0000 0000 0000
0000b20 0002 0000 0005 0000 004c 0000 0000 0000
0000b30 0000 0000 0000 0000 0001 0000 0002 0000
0000b40 00ce 0000 0000 0000 0020 0000 0000 0000
0000b50 0002 0000 0008 0000 0000 0000 0000 0000
0000b60 0040 0000 0000 0000 0002 0000 0009 0000
0000b70 0000 0000 0000 0000 0060 0000 0000 0000
0000b80 0002 0000 000a 0000 0000 0000 0000 0000
0000b90 0080 0000 0000 0000 0002 0000 0002 0000
0000ba0 0000 0000 0000 0000 00a0 0000 0000 0000
0000bb0 0002 0000 0002 0000 0090 0000 0000 0000
0000bc0 00c0 0000 0000 0000 0002 0000 0002 0000
0000bd0 00ce 0000 0000 0000 2e00 7973 746d 6261
0000be0 2e00 7473 7472 6261 2e00 6873 7473 7472
0000bf0 6261 2e00 6572 616c 742e 7865 0074 642e
0000c00 7461 0061 622e 7373 2e00 6f72 6164 6174
0000c10 2e00 6572 616c 742e 7865 2e74 5a5f 364e
0000c20 6943 6372 656c 6935 706e 7475 7645 2e00
0000c30 6572 616c 742e 7865 2e74 5a5f 364e 6943
0000c40 6372 656c 6333 6c61 7645 2e00 6572 616c
0000c50 742e 7865 2e74 5a5f 364e 6943 6372 656c
0000c60 3243 7645 2e00 6572 616c 692e 696e 5f74
0000c70 7261 6172 0079 632e 6d6f 656d 746e 2e00
0000c80 6f6e 6574 472e 554e 732d 6174 6b63 2e00
0000c90 6572 616c 652e 5f68 7266 6d61 0065 672e
0000ca0 6f72 7075 0000 0000 0000 0000 0000 0000
0000cb0 0000 0000 0000 0000 0000 0000 0000 0000
*
0000ce0 0000 0000 0000 0000 00c6 0000 0011 0000
0000cf0 0000 0000 0000 0000 0000 0000 0000 0000
0000d00 0040 0000 0000 0000 0008 0000 0000 0000
0000d10 0016 0000 0015 0000 0004 0000 0000 0000
0000d20 0004 0000 0000 0000 00c6 0000 0011 0000
0000d30 0000 0000 0000 0000 0000 0000 0000 0000
0000d40 0048 0000 0000 0000 0008 0000 0000 0000
0000d50 0016 0000 001a 0000 0004 0000 0000 0000
0000d60 0004 0000 0000 0000 00c6 0000 0011 0000
0000d70 0000 0000 0000 0000 0000 0000 0000 0000
0000d80 0050 0000 0000 0000 0008 0000 0000 0000
0000d90 0016 0000 0010 0000 0004 0000 0000 0000
0000da0 0004 0000 0000 0000 0020 0000 0001 0000
0000db0 0006 0000 0000 0000 0000 0000 0000 0000
0000dc0 0058 0000 0000 0000 00e3 0000 0000 0000
0000dd0 0000 0000 0000 0000 0001 0000 0000 0000
0000de0 0000 0000 0000 0000 001b 0000 0004 0000
0000df0 0040 0000 0000 0000 0000 0000 0000 0000
0000e00 08d8 0000 0000 0000 0198 0000 0000 0000
0000e10 0016 0000 0004 0000 0008 0000 0000 0000
0000e20 0018 0000 0000 0000 0026 0000 0001 0000
0000e30 0003 0000 0000 0000 0000 0000 0000 0000
0000e40 013b 0000 0000 0000 0000 0000 0000 0000
0000e50 0000 0000 0000 0000 0001 0000 0000 0000
0000e60 0000 0000 0000 0000 002c 0000 0008 0000
0000e70 0003 0000 0000 0000 0000 0000 0000 0000
0000e80 013b 0000 0000 0000 0001 0000 0000 0000
0000e90 0000 0000 0000 0000 0001 0000 0000 0000
0000ea0 0000 0000 0000 0000 0031 0000 0001 0000
0000eb0 0002 0000 0000 0000 0000 0000 0000 0000
0000ec0 0140 0000 0000 0000 0058 0000 0000 0000
0000ed0 0000 0000 0000 0000 0008 0000 0000 0000
0000ee0 0000 0000 0000 0000 003e 0000 0001 0000
0000ef0 0206 0000 0000 0000 0000 0000 0000 0000
0000f00 0198 0000 0000 0000 0033 0000 0000 0000
0000f10 0000 0000 0000 0000 0002 0000 0000 0000
0000f20 0000 0000 0000 0000 0039 0000 0004 0000
0000f30 0040 0000 0000 0000 0000 0000 0000 0000
0000f40 0a70 0000 0000 0000 0078 0000 0000 0000
0000f50 0016 0000 0009 0000 0008 0000 0000 0000
0000f60 0018 0000 0000 0000 005c 0000 0001 0000
0000f70 0206 0000 0000 0000 0000 0000 0000 0000
0000f80 01cc 0000 0000 0000 0054 0000 0000 0000
0000f90 0000 0000 0000 0000 0002 0000 0000 0000
0000fa0 0000 0000 0000 0000 0057 0000 0004 0000
0000fb0 0040 0000 0000 0000 0000 0000 0000 0000
0000fc0 0ae8 0000 0000 0000 0030 0000 0000 0000
0000fd0 0016 0000 000b 0000 0008 0000 0000 0000
0000fe0 0018 0000 0000 0000 0078 0000 0001 0000
0000ff0 0206 0000 0000 0000 0000 0000 0000 0000
0001000 0220 0000 0000 0000 001b 0000 0000 0000
0001010 0000 0000 0000 0000 0002 0000 0000 0000
0001020 0000 0000 0000 0000 0073 0000 0004 0000
0001030 0040 0000 0000 0000 0000 0000 0000 0000
0001040 0b18 0000 0000 0000 0018 0000 0000 0000
0001050 0016 0000 000d 0000 0008 0000 0000 0000
0001060 0018 0000 0000 0000 0092 0000 000e 0000
0001070 0003 0000 0000 0000 0000 0000 0000 0000
0001080 0240 0000 0000 0000 0008 0000 0000 0000
0001090 0000 0000 0000 0000 0008 0000 0000 0000
00010a0 0000 0000 0000 0000 008d 0000 0004 0000
00010b0 0040 0000 0000 0000 0000 0000 0000 0000
00010c0 0b30 0000 0000 0000 0018 0000 0000 0000
00010d0 0016 0000 000f 0000 0008 0000 0000 0000
00010e0 0018 0000 0000 0000 009e 0000 0001 0000
00010f0 0030 0000 0000 0000 0000 0000 0000 0000
0001100 0248 0000 0000 0000 0036 0000 0000 0000
0001110 0000 0000 0000 0000 0001 0000 0000 0000
0001120 0001 0000 0000 0000 00a7 0000 0001 0000
0001130 0000 0000 0000 0000 0000 0000 0000 0000
0001140 027e 0000 0000 0000 0000 0000 0000 0000
0001150 0000 0000 0000 0000 0001 0000 0000 0000
0001160 0000 0000 0000 0000 00bc 0000 0001 0000
0001170 0002 0000 0000 0000 0000 0000 0000 0000
0001180 0280 0000 0000 0000 00d8 0000 0000 0000
0001190 0000 0000 0000 0000 0008 0000 0000 0000
00011a0 0000 0000 0000 0000 00b7 0000 0004 0000
00011b0 0040 0000 0000 0000 0000 0000 0000 0000
00011c0 0b48 0000 0000 0000 0090 0000 0000 0000
00011d0 0016 0000 0013 0000 0008 0000 0000 0000
00011e0 0018 0000 0000 0000 0011 0000 0003 0000
00011f0 0000 0000 0000 0000 0000 0000 0000 0000
0001200 0bd8 0000 0000 0000 00cd 0000 0000 0000
0001210 0000 0000 0000 0000 0001 0000 0000 0000
0001220 0000 0000 0000 0000 0001 0000 0002 0000
0001230 0000 0000 0000 0000 0000 0000 0000 0000
0001240 0358 0000 0000 0000 03a8 0000 0000 0000
0001250 0017 0000 0015 0000 0008 0000 0000 0000
0001260 0018 0000 0000 0000 0009 0000 0003 0000
0001270 0000 0000 0000 0000 0000 0000 0000 0000
0001280 0700 0000 0000 0000 01d6 0000 0000 0000
0001290 0000 0000 0000 0000 0001 0000 0000 0000
*
00012a8