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