1

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

在 MIPS 中,你有add并且addu可以做加法。主要区别在于addu不会产生溢出异常。

假设我们有这个二进制文件(我使用了 4 位,尽管 MIPS 为 32 以进行简化):

0111

如果我们添加1它变成1000.

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

addu没有溢出也没有进位,因为一切都按预期进行。

现在假设你有这个二进制文件:

1111

如果我们添加1它变成0000.

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

addu指令会发生什么?是否认为溢出,因为 15 变成了 0?我知道没有溢出异常,但是溢出标志会发生什么?它被设置为1吗?携带标志呢?

4

1 回答 1

2

MIPS 架构中没有进位标志。

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

  • 当您添加两个正数并得到一个负数时
  • 当您添加两个负数并得到一个正数时

所以是的,在您假设的 4 位 MIPS 0111+1 中会导致溢出,并激活相应的标志。

于 2018-11-18T17:06:21.500 回答