8

在 MIPS 汇编中,使用addiuover 有什么好处addi?不是未addiu签名(并且会破坏我们的计算吗?)

4

1 回答 1

11

并且会破坏我们的计算

不,MIPS 使用二进制补码,因此相同的加法/减法指令可用于有符号和无符号运算。结果没有区别。

对于按位指令、非扩展乘法和许多其他操作也是如此。看

它们之间的唯一区别是溢出时会addi生成陷阱,而addiu不会溢出。因此addi,它的溢出系列(addsub...)通常是无用的。事实上,它addi在 MIPSr6 中被移除以将宝贵的操作码空间释放给其他指令,因此很少使用

这里的指令名称极具误导性,因为它实际上不是“无符号”加法。立即数仍然是符号扩展而不是零扩展。所以addiu $1, $2, 0xFFFF实际上会从中减去 1$2而不是向其添加 65535。

尽管它的名字,add immediate unsigned ( addiu) 用于在我们不关心溢出时将常量添加到有符号整数。MIPS 没有立即减法指令,负数需要符号扩展,因此 MIPS 架构师决定对立即数字段进行符号扩展。

计算机组织与设计:硬件/软件接口 David A. Patterson, John L. Hennessy

阅读更多add 和 addu 之间的区别

于 2016-03-29T03:16:38.203 回答