我的数字类型是有符号的二进制补码整数。
在内存寄存器 %rdi/edi/di 中,我有 0xFFFFFFFF。在 %rsi/esi/si 中,我有 0x80000000。
我的指示是addl %edi, %esi
。
如何正确添加这些?
我认为答案是:
由于我要添加完整的 32 位寄存器,因此我可以添加完整的 0xFFFFFFFF 和 0x80000000。
所以,我有一个有符号整数添加到一个有符号的,它们都是 32 位的。我有效地添加了 -2147483648 和 0x80000000。由于 0x80000000 是十六进制的 2147483648,我将这两个相加得到零。
零标志被激活 进位标志被激活(因为我添加了 32 位寄存器的前导值)