MIPS 彙編/偽指令
外觀
< MIPS 彙編
MIPS 指令集非常小,因此為了執行更復雜的任務,我們需要使用稱為偽指令的彙編器宏。
以下是作為偽指令實現的標準 MIPS 指令列表
- abs
- blt
- bgt
- ble
- neg
- negu
- not
- bge
- li
- la
- move
- sge
- sgt
小於分支 (blt)
blt 指令將兩個暫存器進行比較,將它們視為帶符號整數,如果一個暫存器小於另一個暫存器,則進行分支。
blt $8, $9, label
翻譯為
slt $1, $8, $9 bne $1, $0, label
立即載入 (li)
li 偽指令將立即值載入到暫存器中。
li $8, 0x3BF20
翻譯為
lui $at, 0x0003 ori $8, $at, 0xBF20
絕對值 (abs)
絕對值偽指令將一個暫存器中包含的絕對值載入到另一個暫存器中。
abs $1, $2
翻譯為
addu $1, $2, $0 bgez $2, 8 (offset=8 → skip 'sub' instruction) sub $1, $0, $2
移動 (move)
move 偽指令將第二個暫存器運算元的內容移動到第一個暫存器運算元中。
move $1, $2
翻譯為
add $1, $2, $0
載入地址 (la)
la $a0,address
翻譯為
lui $at, 4097 (0x1001 → upper 16 bits of $at). ori $a0,$at,disp
其中立即數 (“disp”) 是第一個資料位置(始終為 0x 1001 0000)與字串中第一個位元組的地址之間的位元組數。
大於或等於設定 (sge)
sge 指令將兩個暫存器進行比較,將它們視為帶符號整數,如果第一個暫存器 ($8) 的值大於或等於第二個暫存器 ($9) 的值,則設定給定暫存器 ($1),否則給定暫存器 ($1) == 00。
sge $1, $8, $9
翻譯為
addiu $9, $9, -0x01 slt $1, $9, $8