我正在浏览一个对应于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' –