在MIPS汇编中,使用addiu
优于addi
有什么好处?不是addiu
未签名(会破坏我们的计算吗?)
答案 0 :(得分:5)
并且会破坏我们的计算
不,MIPS使用two's complement,因此加法/减法的相同指令可用于有符号和无符号运算。结果没有区别。
对于按位指令,非加宽乘法和许多其他操作也是如此。参见
它们之间的唯一区别是addi
在addiu
没有溢出时会产生陷阱。因此addi
及其溢出系列(add
,sub
...)通常无用。实际上很少使用addi
was removed in MIPSr6将有价值的操作码空间释放给其他指令
这里的指令名称极具误导性,因为它实际上并不是一个未签名的"加成。立即仍然符号扩展而不是零扩展。因此,addiu $1, $2, 0xFFFF
实际上会从$2
中减去1,而不是向其中添加65535。
尽管有其名称,但添加立即无符号(
addiu
)用于在我们不关心溢出时将常量添加到有符号整数。 MIPS没有减去立即指令,负数需要符号扩展,因此MIPS架构师决定对立即数字进行符号扩展。