" addq"溢出最大32位有符号整数

时间:2017-03-22 22:11:07

标签: assembly y86

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

0 个答案:

没有答案