-
-
Notifications
You must be signed in to change notification settings - Fork 0
MIPS Cheatsheet
Avishai Dernis edited this page Apr 16, 2026
·
2 revisions
| 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 |
| 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)
| 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 |