在 MIPS 程序集中,使用 addiu 优于 addi 有什么好处? addiu 不是无符号的(并且会破坏我们的计算?)

最佳答案


不,MIPS 使用 two's complement ,因此相同的加法/减法指令可用于有符号和无符号运算。结果没有区别。
对于按位指令、非加宽乘法和许多其他操作也是如此。看

  • Which arithmetic operations are the same on unsigned and two's complement signed numbers?
  • Difference between signed and unsigned on bitwise operations

  • 它们之间的唯一区别是 addi 会在溢出时生成陷阱,而 addiu 不会。所以 addi 及其溢出族( addsub ...)通常是无用的。事实上, 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/

    10-12 13:41