Fonction Récursive en MIPS : Somme (sum)
Cette fonction MIPS calcule la somme des entiers de n jusqu'à 1 (sum(n)).
Elle est équivalente à la fonction C suivante :
int sum(int n) {
if (n <= 1)
return n;
else
return n + sum(n - 1);
sum:
li $t0, 1
ble $a0, $t0, base # si n <= 1, aller à base
addi $sp, $sp, -8 # réserver 8 octets
sw $a0, 0($sp) # sauvegarder argument n
sw $ra, 4($sp) # sauvegarder adresse retour
addi $a0, $a0, -1 # n = n - 1
jal sum # appel sum(n - 1)
lw $a0, 0($sp) # restaurer n
lw $ra, 4($sp) # restaurer $ra
add $v0, $v0, $a0 # v0 = sum(n - 1) + n
addi $sp, $sp, 8
jr $ra
base:
move $v0, $a0 # si n <= 1, retourner n
jr $ra