Math GDB寄存器显示问题

Math GDB寄存器显示问题,math,assembly,printing,gdb,cpu-registers,Math,Assembly,Printing,Gdb,Cpu Registers,我最近开始深入研究汇编,在分析下面的代码段时,我无法确定发生了什么。实际上,0xFFFFFF被移动到EAX中,然后0x10被添加到EAX中。在GDB中查看EAX时,执行后的值是0xF而不是0x9。当我添加0x11而不是0x10时,将显示正确的结果0x10。任何帮助都将不胜感激 我在下面附上了调试输出 执行命令后的第一个值是EAX,它使用print/x$EAX显示 您似乎期望将0x10添加到-1 0xFFFFFF将产生0x9 但是0x10是16位小数,加上-1会产生15位小数,也就是0xF 因此,

我最近开始深入研究汇编,在分析下面的代码段时,我无法确定发生了什么。实际上,0xFFFFFF被移动到EAX中,然后0x10被添加到EAX中。在GDB中查看EAX时,执行后的值是0xF而不是0x9。当我添加0x11而不是0x10时,将显示正确的结果0x10。任何帮助都将不胜感激

我在下面附上了调试输出

执行命令后的第一个值是EAX,它使用print/x$EAX显示


您似乎期望将0x10添加到-1 0xFFFFFF将产生0x9

但是0x10是16位小数,加上-1会产生15位小数,也就是0xF


因此,这里的一切都正常工作。

我刚刚意识到我将0x10解释为十六进制。谢谢你的帮助,你是对的。
(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 ()