assembly - 需要了解 .init_array 部分
问题描述
我是 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。但它的原因是什么?
谢谢!!
解决方案
推荐阅读
- json - 从 Postgres 中的 JSON 获取嵌套对象值
- android - 如何为每个 RadioButton 设置单独的颜色?
- deno - 无法测试我的 Deno/Oak 错误处理中间件
- python - 为什么 7-zip 不解码 zlib.compress() 编码的内容?
- python - 如何在 Python 中执行 Gremlin 查询
- javascript - 在 useEffect 运行后测试更改的状态
- java - java String.split中的空白拆分字符串
- azure - Azure 函数调用其他 API,失败并显示“连接尝试失败,因为连接方在一段时间后没有正确响应,,,”
- c# - 如何使用 LINQ 计算列表中每个项目的平均值?
- django - 如何通过 django 中的模型进行多对多更新?