繁体   English   中英

MIPS中伪指令“移动”的“ addi”和“ add”之间的区别?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM