Skip to content

MIPS Cheatsheet

Avishai Dernis edited this page Apr 16, 2026 · 2 revisions

Register Encoding Table

Encoding Table 000 001 010 011 100 101 110 111
00 $zero $at $v0 $v1 $a0 $a1 $a2 $a3
01 $t0 $t1 $t2 $t3 $t4 $t5 $t6 $t7
10 $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7
11 $t8 $t9 $k0 $k1 $gp $sp $fp $ra

MIPS Instruction List

Real Instructions

Instruction Name Arg Pattern Version Added Version Removed Assembler Support Emulator Support (Interpreted) Emulator Support (JIT)
abs.fmt $fd, $fs, $ft MIPS I Yes ✅ Yes ✅ Not Yet Documented
add $rd, $rs, $rt MIPS I Yes ✅ Yes ✅ Not Yet Documented
addi $rd, $rs, immediate MIPS I Yes ✅ Yes ✅ Not Yet Documented
addiu $rd, $rs, immediate MIPS I Yes ✅ Yes ✅ Not Yet Documented
addu $rd, $rs, $rt MIPS I Yes ✅ Yes ✅ Not Yet Documented
addupc $rs, immediate MIPS R6 No ❌ No ❌ Not Yet Documented
add.fmt $fd, $fs, $ft MIPS I Yes ✅ Yes ✅ Not Yet Documented
and $rd, $rs, $rt MIPS I Yes ✅ Yes ✅ Not Yet Documented
andi $rd, $rs, immediate MIPS I Yes ✅ Yes ✅ Not Yet Documented
beq $rs, $rt, offset MIPS I Yes ✅ Yes ✅ Not Yet Documented
bgez $rs, offset MIPS I Yes ✅ Yes ✅ Not Yet Documented
bgezall $rs, offset MIPS II MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
bgezl $rs, offset MIPS II MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
bgtz $rs, offset MIPS I Yes ✅ Yes ✅ Not Yet Documented
bitswap $rd, $rt MIPS R6 No ❌ No ❌ Not Yet Documented
blez $rs, offset MIPS I Yes ✅ Yes ✅ Not Yet Documented
bltz $rs, offset MIPS I Yes ✅ Yes ✅ Not Yet Documented
bltzall $rs, offset MIPS II MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
bltzl $rs, offset MIPS II MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
bne $rs, $rt, offset MIPS I Yes ✅ Yes ✅ Not Yet Documented
break none MIPS I Yes ✅ Yes ✅ Not Yet Documented
ceil.L.fmt $fd, $fs MIPS III Yes ✅ Yes ✅ Not Yet Documented
ceil.W.fmt $fd, $fs MIPS I Yes ✅ Yes ✅ Not Yet Documented
clo $rd, $rs MIPS R1 MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
clz $rd, $rs MIPS R1 MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
cvt.D.fmt $fd, $fs MIPS I Yes ✅ Yes ✅ Not Yet Documented
cvt.L.fmt $fd, $fs MIPS III Yes ✅ Yes ✅ Not Yet Documented
cvt.S.fmt $fd, $fs MIPS I Yes ✅ Yes ✅ Not Yet Documented
cvt.W.fmt $fd, $fs MIPS I Yes ✅ Yes ✅ Not Yet Documented
deret none MIPS R1 Yes ✅ Yes ✅ Not Yet Documented
di none MIPS R2 Yes ✅ Yes ✅ Not Yet Documented
di $rt MIPS I Yes ✅ Yes ✅ Not Yet Documented
div $rs, $rt MIPS I Yes ✅ Yes ✅ Not Yet Documented
divu $rs, $rt MIPS I Yes ✅ Yes ✅ Not Yet Documented
div.fmt $fd, $fs, $ft MIPS I Yes ✅ Yes ✅ Not Yet Documented
ei none MIPS I Yes ✅ Yes ✅ Not Yet Documented
ei $rt MIPS I Yes ✅ Yes ✅ Not Yet Documented
eret none MIPS I Yes ✅ Yes ✅ Not Yet Documented
ext $rt, $rs, size, pos MIPS R2 Yes ✅ Yes ✅ Not Yet Documented
floor.L.fmt $fd, $fs MIPS III Yes ✅ Yes ✅ Not Yet Documented
floor.W.fmt $fd, $fs MIPS II Yes ✅ Yes ✅ Not Yet Documented
ins $rt, $rs, size, pos MIPS R2 Yes ✅ Yes ✅ Not Yet Documented
j address MIPS I Yes ✅ Yes ✅ Not Yet Documented
jal address MIPS I Yes ✅ Yes ✅ Not Yet Documented
jalr $rs MIPS I Yes ✅ Yes ✅ Not Yet Documented
jalx address MIPS I Yes ✅ Yes ✅ Not Yet Documented
jr $rs MIPS I Yes ✅ Yes ✅ Not Yet Documented
lb $rt, offset($rs) MIPS I Yes ✅ Yes ✅ Not Yet Documented
lbh $rt, offset($rs) MIPS I Yes ✅ Yes ✅ Not Yet Documented
ldc1 $ft, offset($rs) MIPS I Yes ✅ No ❌ Not Yet Documented
ldc2 $rt, offset($rs) MIPS I No ❌ No ❌ Not Yet Documented
ldxc1 $fd, $rt($rs) MIPS I Yes ✅ No ❌ Not Yet Documented
lh $rt, offset($rs) MIPS I Yes ✅ Yes ✅ Not Yet Documented
lhu $rt, offset($rs) MIPS I Yes ✅ Yes ✅ Not Yet Documented
lw $rt, offset($rs) MIPS I Yes ✅ Yes ✅ Not Yet Documented
lwc1 $ft, offset($rs) MIPS I Yes ✅ No ❌ Not Yet Documented
lwc2 $rt, offset($rs) MIPS I No ❌ No ❌ Not Yet Documented
lwxc1 $fd, $rt($rs) MIPS I Yes ✅ No ❌ Not Yet Documented
lui $rt, immediate MIPS I Yes ✅ Yes ✅ Not Yet Documented
madd $rs, $rt MIPS R1 MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
maddu $rs, $rt MIPS R1 MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
madd.fmt $fd, $fr, $fs, $ft MIPS I Yes ✅ No ❌ Not Yet Documented
mfc0 $rt, $rd MIPS I Yes ✅ Yes ✅ Not Yet Documented
mfc0 $rt, $rd, select MIPS I No ❌ No ❌ Not Yet Documented
mfc1 $rt, $rd MIPS I Yes ✅ Yes ✅ Not Yet Documented
mtc0 $rt, $rd MIPS I Yes ✅ Yes ✅ Not Yet Documented
mtc0 $rt, $rd, select MIPS I No ❌ No ❌ Not Yet Documented
mtc1 $rt, $rd MIPS I Yes ✅ Yes ✅ Not Yet Documented
mfhi $rd MIPS I Yes ✅ Yes ✅ Not Yet Documented
mflo $rd MIPS I Yes ✅ Yes ✅ Not Yet Documented
mthi $rs MIPS I Yes ✅ Yes ✅ Not Yet Documented
mtlo $rs MIPS I Yes ✅ Yes ✅ Not Yet Documented
movf.fmt $fd, $fs, cc MIPS I MIPS R6 No ❌ No ❌ Not Yet Documented
movn $rd, $rs, $rt MIPS IV MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
movn.fmt $fd, $fs, $ft MIPS IV MIPS R6 No ❌ No ❌ Not Yet Documented
movt $fd, $fs, cc MIPS I MIPS R6 No ❌ No ❌ Not Yet Documented
movz $rd, $rs, $rt MIPS IV MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
movz.fmt $fd, $fs, $rt MIPS IV MIPS R6 No ❌ No ❌ Not Yet Documented
msub $rs, $rt MIPS I MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
msubu $rs, $rt MIPS I MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
msub.fmt $fd, $fr, $fs, $ft MIPS I Yes ✅ No ❌ Not Yet Documented
mul $rd, $rs, $rt MIPS I Yes ✅ Yes ✅ Not Yet Documented
mult $rs, $rt MIPS I Yes ✅ Yes ✅ Not Yet Documented
multu $rs, $rt MIPS I Yes ✅ Yes ✅ Not Yet Documented
mul.fmt $fd, $fs, $ft MIPS I Yes ✅ Yes ✅ Not Yet Documented
neg.fmt $fd, $fs, $ft MIPS I Yes ✅ Yes ✅ Not Yet Documented
nmadd.fmt $fd, $fr, $fs, $ft MIPS I Yes ✅ No ❌ Not Yet Documented
nmsub.fmt $fd, $fr, $fs, $ft MIPS I Yes ✅ No ❌ Not Yet Documented
nor $rd, $rs, $rt MIPS I Yes ✅ Yes ✅ Not Yet Documented
or $rd, $rs, $rt MIPS I Yes ✅ Yes ✅ Not Yet Documented
ori $rd, $rs, immediate MIPS I Yes ✅ Yes ✅ Not Yet Documented
recip.fmt* $fd, $fs, $ft MIPS IV Yes ✅ Yes ✅ Not Yet Documented
round.L.fmt $fd, $fs, $ft MIPS III Yes ✅ Yes ✅ Not Yet Documented
round.W.fmt $fd, $fs, $ft MIPS II Yes ✅ Yes ✅ Not Yet Documented
rsqrt.fmt $fd, $fs, $ft MIPS I Yes ✅ No ❌ Not Yet Documented
sb $rt, offset($rs) MIPS I Yes ✅ Yes ✅ Not Yet Documented
sdbbp code MIPS I Yes ✅ No ❌ Not Yet Documented
sdc1 $ft, offset($rs) MIPS I Yes ✅ No ❌ Not Yet Documented
sdc2 $rt, offset($rs) MIPS I No ❌ No ❌ Not Yet Documented
sdxc1 $fd, $rt($rs) MIPS I Yes ✅ No ❌ Not Yet Documented
sh $rt, offset($rs) MIPS I Yes ✅ Yes ✅ Not Yet Documented
sll $rd, $rt, sa MIPS I Yes ✅ Yes ✅ Not Yet Documented
sllv $rd, $rt, $rs MIPS I Yes ✅ Yes ✅ Not Yet Documented
slt $rd, $rs, $rt MIPS I Yes ✅ Yes ✅ Not Yet Documented
sltu $rd, $rs, $rt MIPS I Yes ✅ Yes ✅ Not Yet Documented
sqrt.fmt $fd, $fs, $ft MIPS I Yes ✅ Yes ✅ Not Yet Documented
sra $rd, $rt, shift MIPS I Yes ✅ Yes ✅ Not Yet Documented
srav $rd, $rt, $rs MIPS I Yes ✅ Yes ✅ Not Yet Documented
srl $rd, $rt, sa MIPS I Yes ✅ Yes ✅ Not Yet Documented
srlv $rd, $rt, $rs MIPS I Yes ✅ Yes ✅ Not Yet Documented
sub $rd, $rs, $rt MIPS I Yes ✅ Yes ✅ Not Yet Documented
subu $rd, $rs, $rt MIPS I Yes ✅ Yes ✅ Not Yet Documented
sub.fmt $fd, $fs, $ft MIPS I Yes ✅ Yes ✅ Not Yet Documented
sw $rt, offset($rs) MIPS I Yes ✅ Yes ✅ Not Yet Documented
swc1 $ft, offset($rs) MIPS I Yes ✅ No ❌ Not Yet Documented
swc2 $rt, offset($rs) MIPS I No ❌ No ❌ Not Yet Documented
swxc1 $fd, $rt($rs) MIPS I Yes ✅ No ❌ Not Yet Documented
sync none MIPS II Yes ✅ No ❌ Not Yet Documented
syscall none MIPS I Yes ✅ Yes ✅ Not Yet Documented
teq $rs, $rt MIPS II Yes ✅ Yes ✅ Not Yet Documented
teqi $rs, immediate MIPS II MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
tge $rs, $rt MIPS II Yes ✅ Yes ✅ Not Yet Documented
tgei $rs, immediate MIPS II MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
tgeiu $rs, immediate MIPS II MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
tgeu $rs, $rt MIPS II Yes ✅ Yes ✅ Not Yet Documented
tlbp none MIPS I Yes ✅ No ❌ Not Yet Documented
tlbr none MIPS I Yes ✅ No ❌ Not Yet Documented
tlbwi none MIPS I Yes ✅ No ❌ Not Yet Documented
tlbwr none MIPS I Yes ✅ No ❌ Not Yet Documented
tlt $rs, $rt MIPS II Yes ✅ Yes ✅ Not Yet Documented
tlti $rs, immediate MIPS II MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
tltiu $rs, immediate MIPS II MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
tltu $rs, $rt MIPS II Yes ✅ Yes ✅ Not Yet Documented
tne $rs, $rt MIPS II Yes ✅ Yes ✅ Not Yet Documented
tnei $rs, immediate MIPS II MIPS R6 Yes ✅ Yes ✅ Not Yet Documented
trunc.L.fmt $fd, $fs MIPS III Yes ✅ Yes ✅ Not Yet Documented
trunc.W.fmt $fd, $fs MIPS II Yes ✅ Yes ✅ Not Yet Documented
wait none MIPS I Yes ✅ Yes ✅ Not Yet Documented
wrpgpr $rd, $rt MIPS R2 Yes ✅ No ❌ Not Yet Documented
wsbh $rd, $rt MIPS R2 Yes ✅ No ❌ Not Yet Documented
xor $rd, $rs, $rt MIPS I Yes ✅ Yes ✅ Not Yet Documented
xori $rd, $rs, immediate MIPS I Yes ✅ Yes ✅ Not Yet Documented

*recip.fmt was added in MIPS IV, then removed for MIPS32 Release 1 (though available in MIPS64 Release 1), then restored to both MIPS32 and MIPS64 in Release 2. In Zarem it is simply available starting in MIPS IV, then remains in all versions thereafter.

**If this list is missing any MIPS instructions, please submit an issue with the name of the instruction(s)

Pseudo-Instructions

Instruction Name Arg Pattern MIPS Versions
abs $rt, $rs All
b offset All
bal offset All
blt $rs, $rt, offset All
la address All
li immediate All
move $rt, $rs All
nop none All
sge $rd, $rs, $rt All
ssnop none All

Clone this wiki locally