INF 155 : Architecture de l'ordinateur
Année universitaire 2008-2009, groupe A3
- Feuille de TP
numéro 1 (premiers pas en assembleur).
- Séance 2 (mercredi 4 février) sur le thème
lire et écrire en mémoire :
construire un programme (exécutable par le simulateur Y86)
qui calcule et range en mémoire 16 termes de la suite
de Fibonacci
— voici un corrigé.
- Séance 3 (jeudi 5 février) sur le thème de la pile :
modifier le programme de la semaine précédente
en introduisant une procédure pour incrémenter
le pointeur.
Voici un corrigé et un
exercice
(distribué au début de la séance de travaux dirigés numéro 4)
construit à partir de
deux clichés pris pendant
l'exécution de ce programme.
Evaluation d'une expression par la méthode polonaise :
on empile les arguments du calcul, et lorsqu'une opération est possible
sur les deux éléments x et y en haut de pile on les dépile,
on effectue l'opération, et on empile le résultat.
- Séance 4 (mercredi 11 février) : écrire un programme qui fusionne
deux tableaux triés (exercice numéro 2 de la
feuille de TP numéro 2 de l'année précédente).
- Séance 5 (jeudi 12 février) :
exercice construit à partir
d'un programme qui calcule la valeur d'une expression
en appliquant la méthode polonaise (cf séance 3).
Analyse de code produit par le compilateur gcc.
- Séance 6 (mercredi 18 février) :
transformation du programme de fusion de deux tableaux
(séance 4) en une fonction avec paramètres
et variables locales. Voici
l'énoncé qui inclut … un corrigé.
- Séance 7 (jeudi 19 février) :
travaux dirigés sur la représentation des entiers et sur
la condition de débordement :
an overflow condition exists when a carry (an extra 1)
is generated into but not out of the far left bit (the MSB),
or out of but not into the MSB (wikipedia).
- Séance 8 (mercredi 4 mars) :
corrigé du devoir
surveillé ; travaux pratiques : analyse du code produit par gcc pour la fonction
Sum du devoir.
- Séances 9 (mercredi 11 mars) et 10 (jeudi 12 mars) :
additionneurs.
Travaux pratiques : écrire un programme
récursif en assembleur pour calculer la somme des valeurs
des feuilles d'un arbre binaire complet ; voici
le corrigé (fichiers tp8.ys
et tp8.yo).
Il est vivement conseillé d'exécuter pas à pas
ce programme avec le simulateur en prévoyant à chaque fois
l'état de la pile, et en vérifiant ces prévisions !
- Séance 11 (mercredi 1er avril) — et oui deux semaines de perdues.
Travaux dirigés : comparateur 4 bits et décodeur.
Travaux pratiques : utiliser
- le simulateur Y86 pour exécuter pas à pas le programme
tp8.yo,
- le cours de cette semaine,
- et ce résumé de l'architecture d'une machine
séquentielle exécutant du code Y86,
pour comprendre en détail ce qui se passe lors de l'exécution d'un programme.
- Séance 12 (jeudi 2 avril).
Travaux dirigés : étude d'une réalisation possible d'un
bistable D.
Travaux pratiques : suite de la séance 11.
- Séances 13 et 14 (mercredi 8 avril et jeudi 9 avril).
Travaux dirigés : circuits pour
registres et mémoires.
Travaux pratiques : modifier le fichier seq-full.hcl
(hardware control language) pour
construire une version du simulateur qui
exécute deux instructions supplémentaires
(addition immédiate et leave).
- Séances 15 à 17 (mercredi 22 avril,
mercredi 29 avril et jeudi 30 avril) :
pipelines et correction du devoir
surveillé numéro 2.
- Séances 18 et 19 (mercredi 6 mai et jeudi 7 mai) :
travail sur le projet.
Documents de cours (en anglais) issus du site de l'université
Carnegie Mellon :
- Introduction :
architectures Intel, comment produire
du code assembleur à partir d'un programme C,
registres, mémoire, modes d'adressage,
opérations arithmétiques.
- Control flow :
codes ZF, SF, OF, CF, instructions de saut,
boucles, etc.
- Procedures :
pile, appels de procédures, sauvegarde des registres ;
avec des exemples détaillés !
- Instruction Set Architecture :
jeu d'instructions pour le simulateur Y86.
Circuits combinatoires :
Idem pour les circuits séquentiels :