附-MIPS指令

算术指令

指令 示例 含义 指令结构类型 OP funct 注释
加法 add $s1, $s2, $s3 $s1 = $s2 + $s3
减法 sub $s1, $s2, $s3 $s1 = $s2 - $s3
立即数加法 addi $s1, $s2, 20 $s1 = $s2 + 20

数据传输

指令 示例 含义 指令结构类型 OP funct 注释
取字 lw $s1, 20($s2) $s1 = Memory[$s2 + 20]
存字 sw $s1, 20($s2) Memory[$s2 + 20] = $s1
取半字 lh $s1, 20($s2) $s1 = Memory[$s2 + 20]
取无符号半字 lhu $s1, 20($s2) $s1 = Memory[$s2 + 20]
存半字 sh $s1, 20($s2) Memory[$s2 + 20] = $s1
取字节 lb $s1, 20($s2) $s1 = Memory[$s2 + 20]
取无符号字节 lbu $s1, 20($s2) $s1 = Memory[$s2 + 20]
存字节 sb $s1, 20($s2) Memory[$s2 + 20] = $s1
取链接字 ll $s1, 20($s2) $s1 = Memory[$s2 + 20]
存条件字 sc $s1, 20($s2) Memory[$s2 + 20] = $s1; $s1 = 0 or 1
取立即数的高位 lui $s1, 20 $s1 = 20 * 2162^{16}

逻辑

指令 示例 含义 指令结构类型 OP funct 注释
按位与 and $s1, $s2, $s3 $s1 = $s2 & $s3
按位或 or $s1, $s2, $s3 $s1 = $s2 | $s3
或非 nor $s1, $s2, $s3 $s1 = ~($s2 | $s3)
立即数与 addi $s1, $s2, 20 $s1 = $s2 & 20
立即数或 ori $s1, $s2, 20 $s1 = $s2 | 20
逻辑左移 sll $s1, $s2, 10 $s1 = $s2 << 10
逻辑右移 srl $s1, $s2, 10 $s1 = $s2 >> 10

条件分支

指令 示例 含义 指令结构类型 OP funct 注释
相等时跳转 beq $s1, $s2, 25 PC+4+100 when $s1 == $s2
不相等时跳转 bne $s1, $s2, 25 PC+4+100 when $s1 != $s2
小于时复位 slt $s1, $s2, $s3 when $s2 < $s3 then $s1 = 1 else $s1 = 0
无符号数比较小于时复位 sltu $s1, $s2, $s3 when $s2 < $s3 then $s1 = 1 else $s1 = 0
无符号比较小于立即数时复位 slti $s1, $s2, $s3 when $s2 < $s3 then $s1 = 1 else $s1 = 0
无符号比较小于无符号立即数时复位 sltiu $s1, $s2, $s3 when $s2 < $s3 then $s1 = 1 else $s1 = 0

无条件跳转

指令 示例 含义 指令结构类型 OP funct 注释
跳转 j 2500 go to 10000
跳转至寄存器所指位置 jr $ra go to address($ra)
跳转并链接 jal 2500 $ra = PC + 4; go to 10000