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