[英]Difference between “addi” and “add” for pseudoinstruction “move” in MIPS?
对于此伪指令:
move $rt, $rs
addi和add汇编代码都可接受吗? 所以我可以用
add $rt, $rs, $0
要么
addi $rt, $rs, $0
?
编辑:我认为我与addi
弄错了
add $rt, $rs, $0
将与
addi $rt, $rs, 0
因为add
添加寄存器,所以我需要一个常量来立即addi
addi
指令需要立即数而不是寄存器,因此$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
寄存器,因为这毕竟是其目的。
但是,我也倾向于使用unsigned变体,因为我似乎想起来可能会对签名指令进行额外的溢出检查:
addu $rt, $rs, $0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.