Compilation
J'assure ce cours de
majeure 2
à partir de l'année 2005-2006. Les
travaux dirigés en salle machines sont encadrés
par Yannick Moy et
moi-même.
Aperçu
Le cours consiste à étudier et à écrire un compilateur d'un langage impératif simple, baptisé Pseudo-Pascal,
vers l'assembleur MIPS. Il permet de comprendre l'étendue et le franchissement
du fossé qui sépare langages de haut niveau et langages machine. Il permet également de découvrir des
techniques et algorithmes non triviaux et de les exprimer dans un langage de très haut niveau, à savoir
Objective Caml. Pour en savoir plus, consultez ces
quelques transparents de présentation.
Matériau
Mis dès à présent à votre disposition, mais néanmoins susceptible d'évolution à tout moment.
Projets
Consultez les quatre sujets proposés en 2006-2007
ainsi qu'une explication de ce que j'attends de vous.
Références
- Cet excellent manuel, dû à Jim Larus,
décrit l'architecture MIPS et son simulateur
spim. Les sections A.1 à A.6 se lisent comme un roman: lisez-les donc dès le premier cours!
Attention, les définitions des termes caller-saved et callee-saved en marge
de la page A.23 ont été interchangées par erreur.
Les sections A.9 et A.10 expliquent le simulateur spim et le jeu d'instructions du
processeur MIPS.
- Deux très courts documents vous aideront à utiliser
spim et
xspim.
- Le manuel de référence d'Objective Caml
et en particulier la description de sa
librairie standard
seront utiles. Voici en particulier deux liens directs vers la documentation des signatures
Set.S et
Map.S,
qui définissent les opérations fournies par les instances des modules Set et Map.
- Le manuel de référence de Menhir
pourra également être utile.
- Le livre Modern Compiler Implementation in ML,
d'Andrew Appel, est une excellente introduction à la compilation. Le livre aborde de nombreux sujets que
je ne peux traiter en cours, et vous conduit également à écrire votre propre compilateur en ML. Il existe
deux versions du livre dans lesquelles le langage d'implantation du compilateur est Java ou C.
- Pour en savoir (beaucoup) plus sur l'analyse syntaxique, le livre
Parsing Techniques - A Practical Guide,
de Dick Grune et Ceriel J. H. Jacobs, est excellent et intégralement disponible en ligne.
Remerciements
Merci à Luc Maranget, qui assurait précédemment ce cours, pour son aide.
Merci également à Xavier Leroy, dont le
compilateur certifié
a fortement inspiré l'architecture du petit compilateur que je présenterai en cours.
Contact
Envoyez vos questions ou commentaires à François Pottier.