Exos TD - Brahim Hamdouni

Transcription

Exos TD - Brahim Hamdouni
Programmation bas niveau – exercices
1
Binaire
1) Simplifier :
— a + ab
— ac + c(a + ab)
— ab + abc + abcd + abcde
— a+b c+d+e+a+b
— ab + ac + bc
— ab + abc + a + c
— a + b + abc
— abc + cd
2) Dessiner le circuit correspondant à l’opération ab + ab + bc.
Simplifier l’expression et dessiner le circuit correspondant.
3) Dessiner les circuits NON, ET et OU en n’utilisant que des portes NAND.
2
Bases
1) Convertir C4, 1A43, 320E en base 10.
2) Convertir 17, 99, 2718 en bases 2 et 16.
3) Qu’est-ce que l’opérateur de décalage ?
3
Assembleur
1) Les variables a, b et c sont resp. dans les registres $s0, $s1 et $s2, et l’adresse du tableau tab dans
$s3. Traduire en assembleur l’opération a = b + c + tab[3].
2) Traduire en assembleur :
a) if ((a<b) && (c==0)) c = 1;
b) if (a > 0)
b = a + 10;
else
b = a - 10;
1
c) for (int i=0; i<5; i++)
a += b;
3) Coder la fonction valeur absolue en assembleur.
4) Ajouter 1 aux éléments d’un tableau donné.
5) Afficher les entiers de 1 à 10.
6) $s0 et $s1 contenant les valeurs a et b, calculer a3 + 3a2 b + 3ab2 + b3 .
(On peut utiliser la pseudo-instruction ternaire mul $t0,$t1,$t2 sans problème de dépassement.)
Y a-t-il une autre façon de procéder ?
7) Copier un tableau de 100 entiers du label src à dest.
8) Écrire une fonction qui range 3 entiers en $a0, $a1, $a2 dans l’ordre croissant.
9) On considère la fonction C suivante :
int f(int x, int y) {
int tab[30];
//...
tab[1] = g(y,x,tab[2]);
return tab[0];
}
a) Est-ce une fonction feuille ?
b) En sachant qu’on a besoin de travailler sur les registres $s0, $s1 et $s3, combien d’espace faut-il
réserver sur la pile ? La dessiner.
c) Réserver la pile et sauver $ra.
d) Sauver les registres $s0, $s1 et $s3.
e) Qu’y a-t-il actuellement dans les registres A ? Où doit-on les sauver avant d’appeler g ?
f) Appeler g, en supposant que tab contient les mots 7 à 36 de la pile, et sauver le résultat où demandé.
g) Mettre la valeur de retour dans $v0.
h) Rétablir les registres utilisés et $ra.
i) Que reste-t-il à faire ?
2

Documents pareils