我正在瀏覽一個對應於C程序的二進制文件。
我有一個非常大的地址存儲在%eax
。
當試圖通過gdb
查看該值時,它會打印一個負值(原因here)。非常大的地址複製爲負值
現在執行mov %eax, 0x4c(%esp)
時,0x4c(%esp)
中的結果值有時爲正值,有時爲負值。這個效果cmp $0, 0x4c(%esp)
聲明如下!
有人可以解釋這種行爲嗎?
如果這有助於:
core: ELF 32-bit LSB core file Intel 80386, version 1 (SYSV), SVR4-style
你是如何實際顯示在'gdb'這些價值觀? –
您正在複製的位序列總是相同的,但解釋可能會有所不同,可能gdb默認爲二進制補碼32位值 –
我正在使用'print%eax'顯示'%eax' –