我搜索了一下,没有找到任何能正确解释这一点的东西。
在MIPS中,您有add
和addu
做加法。主要区别在于addu
不会生成溢出异常。
假设我们有这个二进制文件(尽管我使用的是四位,但为简化起见,MIPS为32):
0111
如果我们添加1
,它将变成1000
。
使用add
指令会产生溢出且没有进位,因为正7变为负1(假设MIPS中为2的补码)。这也会产生溢出异常。
有了addu
,就不会出现溢出和进位,因为一切都按预期进行了。
现在,假设您拥有此二进制文件:
1111
如果我们添加1
,它将变成0000
。
使用add
指令应该不会有溢出,因为负1变为0。进位标志会变为1吗?
addu
指令会发生什么?自15变为0以来,它是否被视为溢出?我知道没有溢出异常,但是溢出标志会怎样?是否设置为1?那进位标志呢?
答案 0 :(得分:0)
MIPS体系结构中没有进位标记。
加法时发生溢出异常时,结果的符号与可能发生的预期符号不同:
是的,假设您的4位MIPS 0111 + 1导致溢出,并且相应的标志被激活。