在 MIPS 程序集中,使用 addiu
优于 addi
有什么好处? addiu
不是无符号的(并且会破坏我们的计算?)
最佳答案
不,MIPS 使用 two's complement ,因此相同的加法/减法指令可用于有符号和无符号运算。结果没有区别。
对于按位指令、非加宽乘法和许多其他操作也是如此。看
它们之间的唯一区别是
addi
会在溢出时生成陷阱,而 addiu
不会。所以 addi
及其溢出族( add
、 sub
...)通常是无用的。事实上, addi
was removed in MIPSr6 很少使用它来释放宝贵的操作码空间给其他指令这里的指令名称非常具有误导性,因为它实际上不是“无符号”添加。立即数仍然是符号扩展而不是零扩展。所以
addiu $1, $2, 0xFFFF
实际上会从 $2
中减去 1 而不是将 65535 添加到它。阅读更多Difference between add and addu
关于assembly - 为什么我们要使用 addiu 而不是 addi?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36274590/