0% ont trouvé ce document utile (0 vote)
7 vues1 page

Somme récursive en MIPS : Fonction sum

Ce document présente une fonction récursive en MIPS qui calcule la somme des entiers de n à 1. La fonction est équivalente à une implémentation en C et utilise des instructions MIPS pour gérer les appels récursifs et la sauvegarde des registres. La logique de la fonction repose sur une condition de base et un appel récursif pour additionner les valeurs.

Transféré par

Bahri RiaDhe
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
7 vues1 page

Somme récursive en MIPS : Fonction sum

Ce document présente une fonction récursive en MIPS qui calcule la somme des entiers de n à 1. La fonction est équivalente à une implémentation en C et utilise des instructions MIPS pour gérer les appels récursifs et la sauvegarde des registres. La logique de la fonction repose sur une condition de base et un appel récursif pour additionner les valeurs.

Transféré par

Bahri RiaDhe
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi