Cours de Compilation 2005/2006

Master d'Informatique, 1ère année
Roberto Di Cosmo
Laboratoire 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 tick, et suivies par la date de dernière modification

  1. Introduction et survol (PDF, PDF 2up, PDF 4up)tick (24/9/2005)
  2. Rappels OCamltick (13/10/2004)
  3. Présentation de la machine cible: assembleur MIPS tick (3/10/2005)
  4. Appels de fonctions dans la machine assembleur tick (6/10/2005)
  5. Rappels OcamlLex, OcamlYacc, Arbres de Syntaxe Abstraite et Tables des Symboles tick(24/10/2005)
  6. Compilation des langages à blocs: bloc d'activation, lien statique tick(31/10/2005)
  7. Code intermediaire: production et transformation tick(2/11/2005)
  8. Assembleur: production, allocation naïve des régistres et émission tick(21/11/204)
  9. Analyse de durée de vie des variables tick(27/11/2005)
  10. Allocation de registres par coloriage de graphes tick(05/12/2005)
  11. Un exemple complet en détail tick(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.
Le projet est partie intégrante du cours, et sa note correspond à un examen pratique, pour lequel n'est pas possible d'obtenir une dispense.

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.

Les notes de cours des années précédentes:

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
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

Valid HTML 4.01!