【发布时间】:2018-11-11 19:12:25
【问题描述】:
我搜索了一下,没有找到任何可以正确解释这一点的东西。
在 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吗?进位标志呢?
【问题讨论】:
-
你指的是哪个进位标志? MIPS 架构中没有状态寄存器。
-
@Michael 哦,我以为有。我的错。
-
仅供参考,
1000在二进制补码中是 -8,而不是 -1。