MIPS中的溢出/进位标志

时间:2018-11-11 19:12:26

标签: overflow mips carryflag

我搜索了一下,没有找到任何能正确解释这一点的东西。

在MIPS中,您有addaddu做加法。主要区别在于addu不会生成溢出异常。

假设我们有这个二进制文件(尽管我使用的是四位,但为简化起见,MIPS为32):

0111

如果我们添加1,它将变成1000

使用add指令会产生溢出且没有进位,因为正7变为负1(假设MIPS中为2的补码)。这也会产生溢出异常。

有了addu,就不会出现溢出和进位,因为一切都按预期进行了。

现在,假设您拥有此二进制文件:

1111

如果我们添加1,它将变成0000

使用add指令应该不会有溢出,因为负1变为0。进位标志会变为1吗?

addu指令会发生什么?自15变为0以来,它是否被视为溢出?我知道没有溢出异常,但是溢出标志会怎样?是否设置为1?那进位标志呢?

1 个答案:

答案 0 :(得分:0)

MIPS体系结构中没有进位标记。

加法时发生溢出异常时,结果的符号与可能发生的预期符号不同:

  • 当您添加两个正数而结果为负数时
  • 当您添加两个负数并得到一个正数时

是的,假设您的4位MIPS 0111 + 1导致溢出,并且相应的标志被激活。