Académique Documents
Professionnel Documents
Culture Documents
Année 2020-2021
L2- S3
Solutionnaire
Exercice 2 :
add $7, $3 , $3
add $7, $7 , $7
add $7, $7 , $5
add $7, $7 , $5
add $7, $7 , $2
2. Déterminer la durée d’exécution de ce programme sur processeur à un cycle par
instruction ayant une fréquence d’horloge 1Ghz.
Solution :
1. Commentaires
add $7, $3 , $3 # F ← X + X
add $7, $7 , $7 # F ← 2X + 2X
add $7, $7 , $5 # F ← 4X + Z
add $7, $7 , $5 # F ← 4X + 2Z
add $7, $7 , $2 # F ← 4X + 2Z + Y
2. Temps d’exécution du programme
Tex = (IC *CPI)/f
Tex = (5*1)/109 = 5 nano sec
1
Département d’informatique
Année 2020-2021
L2- S3
Exercise 3 :
1. Représentez l’algorithme de ce programme.
add $9, $0 , $0
Loop:
lw $10, 1000($9)
add $10, $10 , $2
sw $10, 1000($9)
add $9, $9 , $3
beq $9, $4, loop
j end
Supposons que le corps de la boucle s’effectue K fois, i.e. K itérations sont effectuées (K
positif non nul).
1. Déterminer le nombre total d’instructions statiques.
2. Déterminer le nombre total d’instructions dynamiques.
3. Dans le cas de la mise en œuvre (1 cycle par instruction), combien de cycles seront
requis pour l’exécution de la suite d’instructions ci-dessus ?
Solution :
2
Département d’informatique
Année 2020-2021
L2- S3
Exercice 5:
STORE Word R0, MEM[$0] ranger dans la mémoire le mot 0x23456789 à l’adresse ($0)
LOAD BYTE R1, MEM[1 + $0] charger dans R1 le byte qui se trouve dans la mémoire à l’adresse
(1+$0)
Solution :
Gros-boutiste : R1 = 0x00000045
Petit-boutiste : R1 = 0x00000067
Exercice 6 :
1. Quel est l’avantage de l’alignement des mots mémoires ?
2. Étant donné les adresses mémoires suivantes :
Exercice 7 :
Pour chacun des transferts ci-dessous, écrire l’instruction d’assemblage correspondant dans le
cas où les opérandes sont signés, puis dans le cas où ils sont non signés.
$5 ← $12 + $4
$7 ← $4 - $3
$8 ← $8 + 1
$17 ← $9 – 13
$13 ← $20 and $15
$6 ← decal age à gauche de $7
$4 ← decalage à droite de $9
Exercice 8 :
1. Quelle est la différence entre les instructions de saut suivantes ?
1. j etiquette
2. jr $31
3. jal proc1
3
Département d’informatique
Année 2020-2021
L2- S3
2. Supposons que A est un ensemble de 100 mots et que le compilateur a associé les
variables g et h aux registres $s1 et $s2. Supposons aussi que l'adresse du premier
élément du tableau A est en $s3.
g = h + A[8];
Solution :
1. Les instructions des sauts
- « j » saut inconditionnel vers « etiquette ».
- « jr » (jump register) : saut vers l’adresse indiquée dans le registre.
- « jal » fait le branchement vers l’adresse proc1 de début de la procédure et mémorise
l’adresse de retour dans le registre ra (return address ou R31). Donc la procédure se
termine par l’instruction jr (jump register) avec comme argument 31 : jr $31.
-
2. Bien qu'il y ait une seule opération dans cette déclaration d'affectation, l'un des
opérandes est en mémoire, donc il faut d'abord transférer A[8] à un registre. L'adresse
de cet élément du tableau est la somme de la base du tableau A, qui se trouve dans le
registre $s3, plus le nombre de décalage 32 pour sélectionner l’élément A[8]. Les
données doivent être placées dans un registre temporaire pour une utilisation dans
l'instruction suivante.
Exercice 9 :
Ecrire l’instruction MIPS correspondante à chaque. Dans tous les cas l’étiquette
"suite" figurera dans l’instruction de branchement.
Solution :
4
Département d’informatique
Année 2020-2021
L2- S3
Ecrire les deux instructions MIPS de chaque condition de test ci-dessous. On utilisera
le registre $1 comme registre intermédiaire :
2. if $18 ≥ $13 then sub $1, $18, $13 slt $1, $18, $13
instructions bltz $1, suite bne $1, $0, suite
end_if
suite:
3. if $21 > $17 then sub $1, $21, $17 slt $1, $21, $17
instructions blez $1, suite bne $1, $0, suite
end_if
suite:
4. if $18 ≤ $13 then sub $1, $18, $13 slt $1, $13, $18
instructions bgtz $1, suite bne $1, $0, suite
end_if
suite:
Exercice 10
Écrire en langage d’assemblage MIPS le fragment C suivant :
if (t1 < t2) slt $t0,$t1,$t2 # Si $t1<$t2 alors mettre 1 dans $t0
{ bne $t0, $zero, etiquette # branchement vers etiquette si $t0 ≠ 0
t3 = t1 ; move $t3, $t2 # transfert du contenu de $t2 dans $t3
else etiquette:
t3 = t2 ; move $t3, $t1 # transfert du contenu de $t1 dans $t3
}
t2 = 0; li $t2, 0 # t2 = 0
while (t1 > 0) while: # début de la boucle
5
Département d’informatique
Année 2020-2021
L2- S3