在 MIPS 汇编中,使用addiu
over 有什么好处addi
?不是未addiu
签名(并且会破坏我们的计算吗?)
问问题
26398 次
1 回答
11
并且会破坏我们的计算
不,MIPS 使用二进制补码,因此相同的加法/减法指令可用于有符号和无符号运算。结果没有区别。
对于按位指令、非扩展乘法和许多其他操作也是如此。看
它们之间的唯一区别是溢出时会addi
生成陷阱,而addiu
不会溢出。因此addi
,它的溢出系列(add
,sub
...)通常是无用的。事实上,它addi
在 MIPSr6 中被移除以将宝贵的操作码空间释放给其他指令,因此很少使用
这里的指令名称极具误导性,因为它实际上不是“无符号”加法。立即数仍然是符号扩展而不是零扩展。所以addiu $1, $2, 0xFFFF
实际上会从中减去 1$2
而不是向其添加 65535。
尽管它的名字,add immediate unsigned (
addiu
) 用于在我们不关心溢出时将常量添加到有符号整数。MIPS 没有立即减法指令,负数需要符号扩展,因此 MIPS 架构师决定对立即数字段进行符号扩展。
阅读更多add 和 addu 之间的区别
于 2016-03-29T03:16:38.203 回答