我正在查看一些 x86_64 代码与 Apple 的otool
. 这是反汇编的示例,由以下内容输出otool
:
0000000100055de4 movq $0x00000000,%rax
只有该偏移量中的最后 4 个字节00055de4
, 表示该指令的文件地址。我可以打开一个十六进制编辑器并导航到那里0x55de4
,movq
指令就在那里。
但是,我注意到 gdb 仅在地址中包含所有 8 个字节时才有效,包括神秘的1
. break *0x0000000100055de4
按预期工作,而break *0x00055de4
从不触发。
我分析过的每个 64 位二进制文件都otool
显示了这种模式。它显然不适用于 32 位地址。
那么,如果是实际地址,0x55de4
为什么要使用?otool
gdb
0x0000000100055de4