【发布时间】:2013-11-12 22:42:52
【问题描述】:
我最近开始更深入地研究汇编,当我分析以下代码段时,我无法确定发生了什么。本质上,0xFFFFFFFF 被移动到EAX,然后添加了 0x10。在 GDB 中查看EAX 时,执行后的值为 0xF 而不是 0x9。当我添加 0x11 而不是 0x10 时,会显示正确的结果 (0x10)。任何帮助将不胜感激。
我在下面附上了调试输出。
命令执行后的第一个值为EAX,使用print/x $eax显示。
(gdb) ni
$11 = 0xffffffff
Dump of assembler code from 0x8048096 to 0x80480a0:
=> 0x08048096 <_start+22>: add eax,0x10
0x08048099 <_start+25>: mov eax,0x0
0x0804809e <_start+30>: add BYTE PTR ds:0x804910c,0x22
End of assembler dump.
0x08048096 in _start ()
(gdb) ni
$13 = 0xf
Dump of assembler code from 0x8048099 to 0x80480a3:
=> 0x08048099 <_start+25>: mov eax,0x0
0x0804809e <_start+30>: add BYTE PTR ds:0x804910c,0x22
End of assembler dump.
0x08048099 in _start ()
【问题讨论】:
标签: math assembly printing gdb cpu-registers