Skip to article frontmatterSkip to article content

Cheatsheet MIPS Assembly

1. Chargement et stockage (mémoire)

InstructionSyntaxeDescriptionExempleEffet mémoire
lwlw $rt, d($rs)Charge un mot (4 octets) depuis la mémoire à l’adresse $rs + d vers $rt.lw $t0, 8($a1)Copie Mem[$a1+8] → $t0.
swsw $rt, d($rs)Stocke le contenu de $rt en mémoire à l’adresse $rs + d.sw $t0, 0($t1)Copie $t0 → Mem[$t1+0].
lala $rt, labelCharge l’adresse d’une donnée.la $a0, hw$a0 ← adresse de hw.
li (pseudo)li $rt, immCharge une constante immédiate (peut générer 1 ou 2 instructions).li $t0, 42$t0 ← 42.
move (pseudo)move $rd, $rsCopie un registre dans un autre.move $t1, $t0$t1 ← $t0.

2. Arithmétique et logique

InstructionSyntaxeDescriptionExempleEffet
addadd $rd, $rs, $rtAddition signée.add $t0, $t1, $t2$t0 ← $t1 + $t2.
addiaddi $rt, $rs, immAddition avec immédiat.addi $t0, $t0, 5$t0 ← $t0 + 5.
subsub $rd, $rs, $rtSoustraction.sub $t0, $t1, $t2$t0 ← $t1 - $t2.
mulmul $rd, $rs, $rtMultiplication.mul $t0, $t1, $t2$t0 ← $t1 * $t2.
divdiv $rs, $rtDivision entière. Quotient → $lo, reste → $hi.div $t1, $t2$lo ← $t1 / $t2, $hi ← $t1 % $t2.
mflo/mfhimflo $rd / mfhi $rdRécupère résultat de division/multiplication.mflo $t0$t0 ← lo.
and / or / xorand $rd, $rs, $rt etc.Logique bit-à-bit.and $t0, $t1, $t2$t0 ← $t1 & $t2.
sll / srl / srasll $rd, $rt, shamtDécalage gauche/droite (arith/log).sll $t1, $t1, 1$t1 ← $t1 << 1.
sltslt $rd, $rs, $rtMet $rd=1 si $rs<$rt, sinon 0.slt $t0, $t1, $t2$t0 ← ($t1<$t2)?1:0.

3. Comparaisons et branchements

InstructionSyntaxeDescriptionExempleEffet
beqbeq $rs, $rt, labelBranche si $rs == $rt.beq $t0, $t1, equalPC ← label si égal.
bnebne $rs, $rt, labelBranche si $rs != $rt.bne $t0, $zero, loopPC ← loop si ≠0.
blt / ble / bgt / bge (pseudo)blt $rs, $rt, LBranche si <, ≤, >, ≥.blt $t0, $t1, LPC ← L si $t0<$t1.
beqz / bnezbeqz $rs, labelBranche si $rs==0 ou $rs≠0.bnez $t0, loopPC ← loop si $t0≠0.
bb labelBranche inconditionnelle (pseudo).b endPC ← end.

4. Sauts et fonctions

InstructionSyntaxeDescriptionExemple
jj labelSaut inconditionnel à label.j main
jrjr $rsSaut à l’adresse dans $rs.jr $ra (retour de fonction)
jaljal labelAppel fonction : PC ← label, $ra ← PC+4.jal printf
jalrjalr $rsComme jal mais adresse dans un registre.jalr $t0

5. Pile et mémoire

InstructionSyntaxeDescriptionExemple
push (pseudo)addi $sp,$sp,-4; sw $rt,0($sp)Empile $rt.sw $ra,0($sp)
pop (pseudo)lw $rt,0($sp); addi $sp,$sp,4Dépile dans $rt.lw $ra,0($sp)

6. Appels système (syscall)

ServiceCodeArgument(s)Exemple
Print int1$a0 = entierli $v0,1; li $a0,42; syscall
Print string4$a0 = adresseli $v0,4; la $a0,msg; syscall
Read int5$v0li $v0,5; syscall
Exit10li $v0,10; syscall