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