Architecture des ordinateurs

TP n° 5

(assembleur MIPS : structures de contrôle et appels de fonctions)



Notions abordées : branchement conditionnel, usage de la pile.



1 Appel de fonctions

Traduire le programme C suivant en assembleur MIPS ; les arguments de la fonction puissance (ç.-à-d. n et puiss), ainsi que les variables locales (i et temp) devront être stockés dans la pile.

#include <stdio.h>

int puissance (int n, int puiss) {
    int i, temp = 1;
    for(i = 0; i < puiss; i++){
        temp = temp *n ;
    }
    return temp ;
}

void main() {
    int x,y;
    scanf("%d",&x);
    scanf("%d",&y);
    printf("x^y = %d\n",puissance(x,y));
    return;
}


2 Récursivité

Ecrire un programme assembleur calculant la factorielle d’un entier de manière récursive (utilisé la pile comme à la question précédente).