我正在尋找與Apple的otool
反彙編一些x86_64代碼。這裏的拆卸的樣本,通過otool
作爲輸出:爲什麼64位地址的前4個字節打印爲0x00000001?
0000000100055de4 movq $0x00000000,%rax
只有最後4個字節在該偏移量,00055de4
,代表該指令的文件地址。我可以打開一個十六進制編輯器並導航到0x55de4
和movq
指令在那裏。
但是,我注意到gdb只適用於當我在地址中包含所有8個字節時,包括神祕的1
。 break *0x0000000100055de4
按預期工作,而break *0x00055de4
從不觸發。
我用otool
分析過的每個64位二進制顯示了這種模式。它顯然不適用於32位地址。
那麼,如果0x55de4
是實際地址,爲什麼otool
和gdb
使用0x0000000100055de4
?