我们为什么要使用addiu而不是addi?

时间:2016-03-29 02:59:14

标签: assembly mips add unsigned immediate-operand

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

1 个答案:

答案 0 :(得分:5)

  

并且会破坏我们的计算

不,MIPS使用two's complement,因此加法/减法的相同指令可用于有符号和无符号运算。结果没有区别。

对于按位指令,非加宽乘法和许多其他操作也是如此。参见

它们之间的唯一区别是addiaddiu没有溢出时会产生陷阱。因此addi及其溢出系列(addsub ...)通常无用。实际上很少使用addi was removed in MIPSr6将有价值的操作码空间释放给其他指令

这里的指令名称极具误导性,因为它实际上并不是一个未签名的"加成。立即仍然符号扩展而不是零扩展。因此,addiu $1, $2, 0xFFFF实际上会从$2中减去1,而不是向其中添加65535。

  

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

     

Computer Organization and Design: The Hardware/software Interface By David A. Patterson, John L. Hennessy

了解更多Difference between add and addu