簡體   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