对于这个伪指令:
move $rt, $rs
addi和add汇编代码都可以接受吗?我可以使用
add $rt, $rs, $0
或
addi $rt, $rs, $0
编辑:
我认为我在addi
add $rt, $rs, $0
与
相同 addi $rt, $rs, 0
因为add
添加了寄存器,我需要addi
答案 0 :(得分:1)
$0
指令需要立即操作数而不是寄存器,因此0
实际上是add $rt, $rs, $0
addi $rt, $rs, 0
:
add $d, $s, $t
0000 00ss ssst tttt dddd d000 0010 0000
addi $t, $s, i
0010 00ss ssst tttt iiii iiii iiii iiii
两者都将工作并将所有必需的信息编码到指令本身中):
$0
然而,在这种特殊情况下使用零锁定addu $rt, $rs, $0
寄存器会更加通常,因为这毕竟是它的目的。
我也倾向于使用无符号变体,因为我似乎记得可能会对签名指令进行额外的溢出检查:
{{1}}