Jit*_*ran 2 x86 assembly gdb mov
我正在浏览一个与 C 程序相对应的二进制文件。 我有一个非常大的地址存储在%eax. 当试图通过 来查看值时gdb,它会打印出一个负值(原因在这里)。
%eax
gdb
现在mov %eax, 0x4c(%esp)执行时,结果值0x4c(%esp)有时为正,有时为负。此效果cmp $0, 0x4c(%esp)说明如下!
mov %eax, 0x4c(%esp)
0x4c(%esp)
cmp $0, 0x4c(%esp)
有人可以解释这种行为吗?
如果这有帮助: core: ELF 32-bit LSB core file Intel 80386, version 1 (SYSV), SVR4-style
core: ELF 32-bit LSB core file Intel 80386, version 1 (SYSV), SVR4-style
MSa*_*ers 5
登记册没有标志;他们持有比特。这取决于你如何解释它们。堆栈也是如此:它包含位,如何解释它们取决于您。如果将一个值从寄存器移到堆栈中,则会复制这些位。如果您像解释寄存器中的位一样解释堆栈中的位,您将获得相同的值。
请注意,有一些指令将这些位解释为值 - 乘法、比较等。但MOV不是其中之一。
MOV
归档时间:
8 年,6 月 前
查看次数:
173 次
最近记录: