Cours de Compilation 2005/2006
Master d'Informatique, 1ère annéeLaboratoire Preuves, Programmes, Systèmes (PPS)
Université de Paris VII
e-mail: roberto@dicosmo.org
WWW: http://www.dicosmo.org
Attention: les notes de cours 2005/2006 ne diffèrent pas trop de celles
de l'année 2004/2005, cependant, des corrections et améliorations significatives peuvent
apparaître.
Les notes corrigés apparaitront donc progressivement sur cette page, mises en évidence par un , et suivies par la date de dernière modification
- Introduction et survol (PDF, PDF 2up, PDF 4up) (24/9/2005)
- Rappels OCaml (13/10/2004)
- Présentation de la machine cible: assembleur MIPS (3/10/2005)
- Appels de fonctions dans la machine assembleur (6/10/2005)
- Rappels OcamlLex, OcamlYacc, Arbres de Syntaxe Abstraite et Tables des Symboles (24/10/2005)
- Compilation des langages à blocs: bloc d'activation, lien statique (31/10/2005)
- Code intermediaire: production et transformation (2/11/2005)
- Assembleur: production, allocation naïve des régistres et émission (21/11/204)
- Analyse de durée de vie des variables (27/11/2005)
- Allocation de registres par coloriage de graphes (05/12/2005)
- Un exemple complet en détail (12/12/2005)
Chargés de TD: Juliusz Chroboczek, Pierre Letouzey
La page des TD/TP se trouve ici.
Les horaires des cours et des TD sont en ligne sur le site de l'UFR
Le projet de compilation est disponible en ligne.
On a ouvert une mailing list m1-0506-compilation, en libre inscription. Allez vous inscrire tout de suite sur http://ufr.pps.jussieu.fr/wws/info/m1-0506-compilation (vous pouvez utiliser votre vrai adresse e-mail): on repondra sur cette liste aux questions posées sur le projet, dont les archives sont publiques.
Bibliographie
La bibliothèque dispose maintenant de plus de 20 copies du livre Modern Compiler Implementation in ML, Andrew W. Appel, Cambridge University Press, 1998, que l'on suit approximativement pour ce cours.
Il y a aussi plus de 20 copies du livre
Développement
d'applications avec Objective Caml
qui est entiérement dedié au langage Ocaml que nous
utilisons dans le cours, et dont je recommande fortement la
lecture. (N.B.: ce livre est entiérement en
ligne).
Enfin, SPIM, le simulateur RISC 2000 utilise pour le projet et dans le cours, est disponible, avec la documentation, en ligne, mais ATTENTION: on utilise une version modifiée pour permettre de l'arithmetique dans les declarations de symboles, qui est en ligne sur la page du projet.
Bric-à-brac
Pour les curieux, voici quelques autres ressources intéressantes- Émulateurs
- pour différentes architectures
- Un émulateur IA-32
- QEMU, un émulateur multi-architecture
- Documentation assembleur
- pour différentes architectures
Remerciements
Mes plus vifs remerciements vont à:- Andrew Appel, pour son excellent livre de texte, sans lequel il aurait été difficile de monter ce cours
- la merveilleuse équipe Cristal, pour OCaml, sans lequel il serait illusoire de mener à bien un projet si ambitieux en si peu de temps
- Didier Rémy, pour m'avoir transmis ses notes de cours, qui m'ont beaucoup aidé dans la redaction de la partie sur l'allocation de registres par coloriage de graphes