Livres sur la compilation :



Waite, Goos: "Compiler Construction", Springer, 1995 (?)

Techniques de base
Les exemples commencent à être anciens (PL1, ALGOL, ...)

disponible sur le web à des fins d'enseignement :
(postcript compressé)   (pdf)
transparents et exercices de Goos et Waite (en allemand)
A. Aho, R. Sethi, J. Ullman
"Compilateurs : principes techniques et outils, cours et exercices"
Dunod (1989)

"Le dragon" : grand classique sur la compilation, en traduction française
Nielson, Nielson et Hankin :
"Principles of Program Analysis" (1999)

Bases théoriques de l'analyse de programmes.
Interprétation abstraite.
Andrew Appel :
"Modern Compiler Implementation in ML" (1998)

Suit la construction d'un compilateur depuis l'analyse lexicale
jusqu'à l'optimisation du code généré
Chapitres sur langages fonctionnels, OO, ramasse-miettes, ordonnancement, ...
En suivant les exercices on finit par construire son compilateur !
Versions du livre pour C et Java.
A. Darte, Y. Robert, F. Vivien :
"Scheduling and Automatic Parallelization"
(Birkhaüser, 2000)

Reprend en grande partie la thèse de F. Vivien : 
PhD97-12.ps.Z
Steven Muchnick :
"Advanced Compiler Design and Implementation" (1997)

Point de vue ``ingénieur'' sur la compilation des langages impératifs (Fortran, C).
Tables de symboles, analyses de flot, optimisations de code,
allocation de registres, pipeline logiciel, transformations de boucles.
Beaucoup d'algorithmes, guère de démonstrations.
À lire si on veut effectivement écrire un compilateur !
D. Grune, H. E. Bal, C. J.H. Jacobs, K. G. Langendoen :
"Modern Compiler Design" (Wiley, 2000)

Peut-être un successeur au dragon ?
Détaille l'analyse lexico-syntaxique, les grammaires attribuées,
la génération de code.
chapitres sur la gestion mémoire, langages fonctionnels, parallélisme.
Randy Allen, Ken Kennedy :
"Optimizing Compilers for Modern Architectures: A Dependence-based Approach"
(2001)

Analyses et optimisations pour Fortran, Fortran90, HPF, C.
Application aux langages de spécification de hardware.
Jean-François Collard
"Reasoning About Program Transformations"
(Springer Verlag, 2002. ISBN: 0387953914)

Décrit les analyses de flots de données "par instance" :
Travaux de Bill Pugh, Feautrier, Collard
Nombreux exemples illustrés par l'utilisation de l'omega-test


Architecture des ordinateurs :

John L. Hennessy, David A. Patterson :
"Computer Architecture: A Quantitative Approach"
(2002)



Bien sûr, les appréciations n'engagent que moi !