next up previous
Next: Examen finalGroupe 10, Up: No Title Previous: Examen finalGroupe 10,

Examen final, Groupe 11, Hiver 1996

Examen Final
Inf 2170, Groupe 11
Hiver 1996, 25 points
Durée: 1h30
À livres fermés

6 pts No 1) Répondre à chacune des questions suivantes.

s a) Est-ce que la représentation en point-flottant IEEE 32 bits permet une plus grande précision qu'une représentation en point-fixe [14,18]? Justifiez votre réponse.

s b) Donnez une raison majeure justifiant l'emploi de la représentation en point-flottant plutôt que la représentation en point-fixe par les processeurs numériques.

s c) Est-ce qu'on peut espérer obtenir dans le futur des processeurs numériques capables de calculer sans perte de précision à l'aide de la représentation IEEE-754 ? (Utilisant un nombre approprié de bits, pas nécessairement la forme 32 bits.) Justifiez votre réponse.

6pts No 2) Soit un ensemble représenté par une chaîne de 32 bits stockée dans le registre d0.l (Représentation telle que vue en classe où l'univers ensembliste est les entiers de 0 à 31). Donnez une séquence d'au plus 9 instructions pour faire la somme des éléments appartenant à cet ensemble plaçant le résultat dans le registre d3.w.

Solution

 	  move.w  #31,d1
 	  move.w  #0,d3
 boucle:
 	  lsl.l   #1,d0
 	  bcc     passe
 	  add.w   d1,d3
 passe:  dbra    d1,boucle

6pts No 3) Voici une fonction récursive en pseudocode. Implantez celle-ci sous la forme d'une sous-routine en assembleur en indiquant clairement en commentaire l'entrée et la sortie de votre sous-routine.

    Fonction f(a, b: Cardinal): Cardinal;
    Début 
      Si (a-b) < 100 Alors retourner(1)
                     Sinon retourner( f(b, 2*a) + f(a, 2*b) );
    Fin f;

7pts No 4) Le registre a0 pointe une matrice de 100 lignes et 40 colonnes de nombre entiers de 32 bits. Écrire une fonction d'au plus 18 instructions qui calcule la valeur

et place le résultat dans le registre d0.l.

Solution

 ; Entrée: a0 pointe une matrice de 100 lignes et 40 colonnes
 ; Sortie: d0.l contient la valeur Somme de (i+j)*M[i,j]
 ;
           movem.l  d1-d4/a0,-(sp)
           move.l   #0,d0          ; somme à zéro au départ.
           move.l   #99,d1
           move.l   #0,d4          ; (i+j) <- 0
 ligne:    move.l   #39,d2
 col:
 	   move.l   d4,d3  
           muls.l   (a0)+,d3
           add.l    d3,d0
           add.l    #1,d4
           dbra     d2,col
           sub.l    #39,d4
           dbra     d1,ligne
           movem.l  (a0)+,d1-d4/a0
 	   rts



Mario Latendresse
Wed Jan 15 18:27:16 EST 1997