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