0

我正在尝试为计算器编写一个简单的编译器。但是,我所有的汇编指令(加法、减法和乘法)分别在 2,147,483,647 和 -2,147,483,648 处保持上溢和下溢,而不是最大 64 位有符号值。我无法弄清楚为什么会发生这种情况并且真的很令人沮丧,所以任何帮助将不胜感激!以下是生成的汇编代码,以防有帮助:

.globl compute
compute:
movq   $2147483646, %rcx
pushq  %rcx
movq   $2147483646, %rcx
pushq  %rcx
popq   %rcx
popq   %r8
addq   %rcx, %r8
pushq  %r8
popq   %rax
retq

但是,这将返回值 -4,而不是我预期的 4,294,967,292 :(。(我知道它目前没有优化,我希望稍后在解决这个问题后改进它。谢谢!)

4

0 回答 0