c++编译链接过程

c++源码处理转化为可执行文件的流程可以分为三个部分:预处理(preprocessing),编译(compilation)与链接(linking)。
c++ build process

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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值