qai*_*pak 5 assembly unsigned add mips immediate-operand
在MIPS组件中,使用addiuover有addi什么好处?是不是addiu未签名的(会破坏我们的计算?)
会破坏我们的计算
不,MIPS使用二进制补码,因此相同的加/减指令可用于有符号和无符号运算。结果没有差异。
对于按位指令,非扩展乘法和许多其他运算,也是如此。看到
它们之间的唯一区别是,addi当addiu没有溢出时会生成陷阱。因此addi,它的溢出族(add,sub...)通常是无用的。实际上,它很少使用,addi因此已在MIPSr6中删除,以释放宝贵的操作码空间给其他指令
这里的指令名称极具误导性,因为它实际上不是“未签名”的加法。立即数仍然是符号扩展而不是零扩展。因此addiu $1, $2, 0xFFFF实际上将减去1 $2而不是将65535加到它。
尽管有名字,但是
addiu当我们不关心溢出时,使用添加立即无符号()将常量添加到有符号整数中。MIPS没有立即数减法指令,负数需要扩展符号,因此MIPS架构师决定对立即数字段进行符号扩展。
阅读更多add和addu之间的区别