【发布时间】:2013-05-08 16:09:00
【问题描述】:
我正在使用 Apple 的 otool 反汇编一些 x86_64 代码。这是otool输出的反汇编示例:
0000000100055de4 movq $0x00000000,%rax
只有该偏移量的最后 4 个字节,00055de4,表示该指令的文件地址。我可以打开一个十六进制编辑器并导航到0x55de4,movq 指令就在那里。
但是,我注意到 gdb 仅当我在地址中包含所有 8 个字节时才有效,包括神秘的1。 break *0x0000000100055de4 按预期工作,而 break *0x00055de4 永远不会触发。
我用otool 分析的每个 64 位二进制文件都显示了这种模式。它显然不适用于 32 位地址。
那么,如果0x55de4 是实际地址,为什么otool 和gdb 使用0x0000000100055de4?
【问题讨论】:
标签: macos 64-bit offset memory-address otool