我最近开始深入研究 Assembly,当我分析以下代码段时,我无法确定发生了什么。本质上,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 ()