我试图为计算器编写一个简单的编译器。但是,我的所有汇编指令(加,减和乘)分别在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,正如我预期的那样:(。 (我知道它目前尚未优化,我希望在我弄清楚这个问题之后再改进它。谢谢!)