Les jeux d’instructions MIPS

Programming, MIPS Assembly, Computer Science · exam

Voir tous les documents en programmation

TD N°1

« Les jeux d’instructions MIPS»

Exercice 1 :

Soit les fragments de C suivants, donner ses traductions en MIPS.

a/ if (a == b) c = d + e; else c = d – e;

Avec a, b, c, d, e sont respectivement $s0, …, $s4

b/ if (($s1 > 0) && ($s2 < 0)) {$s3++;};

c/ if (($sl > $s2) || ($s2 > $s3)) {$s4 = 1;};

d/ if( $s1 <= $s2 ) {$s3 = $s4}; avec $s1 et $s2 sont non signés

e/ if (($s3 <= $s4) && ($s4 > $s5)) {$s3 = $s4 + $s5}; avec $s3, $s4, et $s5 sont singés

f/ i = 0; do {target[i]=source[i]; i++;} while (source[i]!=0);

Publicité

Avec Adresse de source dans $s0 et l'adresse de la cible dans $s1 Les chaînes sont terminées par un

caractère nul

g/ sum = 0; for (i=0; i<n; i++) sum = sum + A[i];

Avec $s0 = adresse de tableau A, $s1 = longueur de tableau A= n

Exercice 2 :

Ecrire un programme SPIM qui permet de sélectionner les éléments d’un tableau source nommé

Tab en nombres positifs et négatifs, de les ranger respectivement dans Tabneg et Tabpos et d’afficher les

contenus de ces deux tableaux.

Soit la déclaration suivante :

Tab : .byte 45, -36, 28, -70, -37, 90, -98, 32, -20

Exercice 3 :

Publicité

Ecrire un programme SPIM qui permet de recopier les éléments d’une table source Tab1 dans une

table destination Tab2 en ordre inverse et faire la somme des éléments de cette dernière table et mettre le

résultat dans la case mémoire Somm avec affichage sur écran de ce résultat

Soit la déclaration suivante :

Exercice 4 :

Ecrire un programme SPIM qui permet sélectionner les éléments d’une table source Tab1 en

nombres paires et impaires et de les ranger respectivement dans deux tables Tabpaire et Tabimpaire.

Exercice 5 :

Ecrire un procédure trouve_b qui cherche le lettre b dans une chaine de caractère et retourne la

position de b dans $2 sinon retourne les nombres des caractères dans la chaine.

Exercice 6 :

Publicité

Ecrire un programme qui calcule la factorielle d’un nombre n saisi par l’utilisateur de manière récursive

terminale. Le programme C équivalent est le suivant :

-1-

int fact (int n)

{

return fact_tail(n,1);

}

int fact_tail (int n, int res)

{

if (n==1) return res;

else

Publicité

return fact_tail(n-1,res*n);

}

Exercice 7 :

Ecrire une routine MIPS Fib permettant de calculer la fonction de Fibonacci d’une manière

récursive.

Fib(0) = Fib(1) = 1

Fib(n) = Fib(n-1) + Fib(n-2)

-2-