需要了解.init_array部分

时间:2020-10-22 09:27:19

标签: assembly x86 g++ gnu

我是x86汇编的新手,请帮助我了解.init_array的基本知识。我已经在线搜索了5个小时的文档,但没有找到任何有用的文档进行解释。

 3240 Disassembly of section .init_array:
 3241   
 3242 0000000000602dc0 <__frame_dummy_init_array_entry>:
 3243   602dc0:   90                      nop
 3244   602dc1:   1f                      (bad)  
 3245   602dc2:   40 00 00                add    %al,(%rax)
 3246   602dc5:   00 00                   add    %al,(%rax)
 3247   602dc7:   00 e0                   add    %ah,%al
 3248   602dc9:   1c 40                   sbb    $0x40,%al
 3249   602dcb:   00 00                   add    %al,(%rax)
 3250   602dcd:   00 00                   add    %al,(%rax)
 3251   602dcf:   00 50 1e                add    %dl,0x1e(%rax)
 3252   602dd2:   40 00 00                add    %al,(%rax)
 3253   602dd5:   00 00                   add    %al,(%rax)
 3254     ...

以上代码由libc ++库的objdump转储。

问题一:在上面的代码中,al和rax代表什么?试图达到什么目的?在3254行上,为什么这里有一个'''...'''?

问题二:我看到有人张贴他们的.init_array如下图所示:

Disassembly of section .init_array:

c1008db4 <.init_array>:
c1008db4:   c1000000    .word   0xc1000000
c1008db8:   c1000a68    .word   0xc1000a68
c1008dbc:   c1000b64    .word   0xc1000b64
c1008dc0:   c1000c04    .word   0xc1000c04
c1008dc4:   c1000c68    .word   0xc1000c68
What are they representing? Why mine is totally different from his/her.

问题三:要放入.init_array的东西是什么?

问题四:我知道类构造函数的所有函数指针都放在.init_array中。但这是什么原因呢?

谢谢!

0 个答案:

没有答案