Bibliographie complémentaire
pour Compilateurs : principes, techniques et outils - 2e édition

 

Outre les références présentes dans le texte d'origine, le lecteur intéressé pourra consulter avec bénéfice les références suivantes.

 

Chapitre 4

SYNTAX est un générateur d'analyseurs lexicaux et syntaxiques (déterministes ou non-déterministes) pour toutes les grammaires non-contextuelles ainsi que certaines classes de grammaires contextuelles. Il est développé à l'INRIA depuis plusieurs dizaines d'années, et est librement disponible depuis 2007, sous licence CeCILL. http://syntax.gforge.inria.fr/hist.html

  1. Pierre Boullier, Martin Jourdan :
    A new error repair and recovery scheme for lexical and syntactic analysis.
    Science of Computer Programming, (1987) 9 : 271-286.

  2. Pierre Boullier, Philippe Deschamp :
    Le système SYNTAX — manuel d'utilisation et de mise en œuvre sous UNIX.
    (1988-1997).

  3. Pierre Boullier :
    Guided Earley parsing.
    Proceedings of International Workshop on Parsing Technologies (8ème IWPT), pages 43-54. Nancy, France (2003).

 

Chapitre 5

  1. Didier Parigot, Gilles Roussel, Etienne Duris, Martin Jourdan :
    Les Grammaires Attribuées : un Langage Fonctionnel Déclaratif.
    Journées Francophones des Langages Applicatifs p. 263-279, 1996, Val-Morin, Québec.
    (Le texte de cet article est encore accessible par http://citeseer.ist.psu.edu/)

 

Chapitre 7

  1. Objective Caml (OCaml)  http://caml.inria.fr/
    OCaml est un langage de la famille ML développé à l'INRIA par Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy, Pierre Weis... C'est la principale implémentation du langage Caml. Caml est un langage qui permet aussi bien la programmation impérative que la programmation fonctionnelle. Objective Caml étend les possibilités du langage en permettant la programmation orientée objet et la programmation modulaire.

  2. Bernard Lang, Francis Dupont :
    Incremental incrementally compacting garbage collection.
    Symposium on interpreters and interpretive techniques, p. 253-263, June 24-26, 1987, St. Paul, Minnesota, United States.
    (Cet article a introduit le ramassage de miettes par trace.)

 

Chapitre 10

  1. Christine Eisenbeis, Antoine Sawaya :
    Optimal Loop Parallelization under Register Constraints.
    Proceedings of 6th Workshop on Compilers for Parallel Computers, Décembre 1996, Aachen, Germany. 245-259.
    Rapport de recherche disponible en ligne : http://hal.inria.fr/docs/00/07/39/11/PDF/RR-2781.pdf

  2. Christine Eisenbeis, Sylvain Lelait, Bruno Marmol :
    The meeting graph: a new model for loop cyclic register allocation.
    Proceedings of International Conference on Parallel Architectures and Compiler Techniques, Chypre, Juin 1995.
    ftp://ftp.inria.fr//INRIA/a3/eisenbei/CPC95.ps.gz

  3. Sylvain Lelait, Bruno Marmol :
    Allocation cyclique de registres et déroulage de boucles.
    Technique et Science Informatiques, Hermès. pages 583-608, volume 16, numéro 5, Mai 1997.

  4. Sylvain Lelait, Guang R. Gao, Christine Eisenbeis :
    A New Fast Algorithm for Optimal Register Allocation in Modulo Scheduled Loops.
    Rapport de Recherche INRIA RR-3337, 1998.
    http://hal.inria.fr/inria-00073352/fr/

  5. D. Fimmel, J. Muller :
    Optimal Software Pipelining Under Resource Constraints.
    International Journal of Foundations of Computer Science (IJFCS), pages 697-718, volume 12, numéro 6, 2001.

  6. J.A. Fisher, B.R. Rau :
    Instruction-Level Parallel Processing.
    Science, pages 1233-1241, volume 253, Septembre 1991.

  7. Guillaume Huard :
    Algorithmique du décalage d'instructions.
    Thèse, École Normale Supérieure de Lyon, Décembre 2001.

  8. Waleed M. Meleis :
    Dural-Issue Scheduling for Binary Trees with Spills and Pipelined Loads.
    SIAM Journal of Computing, pages 1921-1941, volume 30, numéro 6, Mars 2001.

  9. Olivier Temam :
    Cours d'Architecture à Polytechnique (Majeure 1).
    http://www.lri.fr/~temam/enseignement/x/

  10. Sid-Ahmed-Ali Touati :
    Register Saturation in Instruction Level Parallelism.
    International Journal of Parallel Programming, Springer-Verlag, 33, numéro 4, Août 2005.
    Thèse disponible en ligne : http://tel.archives-ouvertes.fr/docs/00/04/72/88/PDF/A_these7405.pdf

 

Chapitre 11

  1. C. Ancourt, François Irigoin :
    Scanning polyhedra with DO-loops.
    Proceedings of 3rd ACM SIPLAN Symposium on Principles and Practice of Parallel Programming (Avril 1991). 39-50.

  2. Denis Barthou, Jean-François Collard, Paul Feautrier :
    Fuzzy Array Dataflow Analysis.
    Journal of Parallel and Distributed Computing, 40, numéro 2 (Oct. 1991), 210-226.
    (Parallélisation des boucles while)

  3. Jean-François Collard, Paul Feautrier, Tanguy Risset :
    Construction of DO Loops from Systems of Affine Constraints.
    Rapport de Recherche 93-15, Ecole Normale Supérieure de Lyon, 1993.

  4. Alain Darte, Frédéric Vivien :
    On the Optimality of Allen and Kennedy's Algorithm for Parallelism Detection in Nested Loops.
    Journal of Parallel Algorithms and Applications. 12, numéro 1-3 (Juin 1997), 83-112.
    (Comparaison de plusieurs algorithmes de parallélisation, y compris l'algorithme présenté dans ce livre)

  5. Alain Darte :
    De l'organisation des calculs dans les codes répétitifs.
    Mémoire d'habilitation à diriger des recherches, ENS Lyon, 1999.
    ftp://ftp.ens-lyon.fr/pub/LIP/Rapports/HDR/HDR1999/HDR1999-03.ps.Z
    Panorama des recherches en parallélisation en 1999. Une bibliographie plus complète est disponible dans la page http://perso.ens-lyon.fr/alain.darte/

  6. Alain Darte, Yves Robert, Frédéric Vivien :
    Scheduling and Automatic Parallelization.
    Birkhäuser, 2000.
    (Traite des transformations de boucle)

  7. Alain Darte, Yves Robert :
    Affine-by-Statement Scheduling of Uniform and Affine Loop Nests over Parametric Domains.
    Journal of Parallel and Distributed Computing. 29 (1995), 43-59.

  8. Paul Feautrier :
    Parametric Integer Programming.
    RAIRO, Recherche Opérationnelle. pages 243-268, Septembre 1988.
    (Résolution de systèmes linéaires en nombres entiers, avec seconds membres paramétriques)

  9. Paul Feautrier :
    Automatic Parallelization in the Polytope Model.
    In Guy-René Perrin and Alain Darte, editors, The Data-Parallel Programming Model, volume LNCS 1132, 79-103 (1996). Springer.

  10. Paul Feautrier :
    Some Efficient Solutions to the Affine Scheduling Problem.
    I : One Dimensional Time.
    International Journal of Parallel Programming, 21(5):313–348, October 1992.
    II : Multidimensional Time.
    International Journal of Parallel Programming, 21(6):389–420, December 1992.
    (Temps hiérarchisé)

  11. François Irigoin, Rémy Triolet :
    Supernode Partitioning.
    Proceedings of 15th Annual ACM Symposium on Principles of Programming Languages (SanDiego, California, Janvier 1988). 319-329.
    (Introduction du blocage de boucles)

  12. Kathryn McKinley, Olivier Temam :
    How to quantify loop nest locality.
    MIT Press, Rudi Egeinmann, January 2000.
    (localité des données)

  13. F. Quilleré, S. Rajopadhye :
    On Code-Generation in the Polyhedral Model.
    2001

  14. F. Quilleré, S. Rajopadhye, Doran Wilde :
    Generation of Efficient Nested Loops from Polyhedra.
    International Journal of Parallel Programming, pages 469-498, volume 28, numéro 5, 2000.

  15. Cédric Bastoul :
    Code generation in the polyhedral model is easier than you think.
    IEEE PACT 2004: 7-16, Septembre 2004.

  16. Alexander Schrijver :
    Theory of Linear and Integer Programming.
    John Wiley & Sons, New York, 1986.
    (La référence pour la théorie de la programmation linéaire)

  17. Frédéric Vivien :
    Détection de parallélisme dans les boucles imbriquées.
    Thèse de doctorat, École Normale Supérieure de Lyon, Décembre 1997.

  18. M. J. Wolfe :
    High Performance Compilers for Parallel Computing.
    Addison-Wesley, 1996.

  19. Jingling Xue :
    Loop Tiling for Parallelism.
    Kluwer Academic Publishers, Août 2000.

Parmi les projets de parallélisation automatique, il faut citer le projet PIPS de l'École des Mines de Paris, une plate-forme permettant d'expérimenter des transformations de programme : http://www.cri.ensmp.fr/~pips/

 

Chapitre 12

  1. Albert Cohen :
    Analyse de flot de données pour programmes récursifs à l'aide de langages algébriques.
    Technique et Science Informatiques (TS) 18 (3):323–343, Mars 1999.

  2. Pierre Amiranoff, Albert Cohen et Paul Feautrier :
    Beyond iteration vectors: Instancewise relational abstract domains.
    Proceedings of Static Analysis Symposium (SAS'06), Seoul, Korea, August 2006.

  3. Patrick Cousot :
    Program Analysis Position Statement: The Abstract Interpretation Perspective.
    ACM Workshop on Strategic Directions in Computing Research, 1996.
    Présentation des principes de l'interprétation abstraite. Les articles de P. Cousot sont disponibles sur le site de l'ENS : http://www.di.ens.fr/~cousot

  4. Alain Deutsch :
    Interprocedural May-Alias Analysis for Pointers: beyond k-limiting.
    SIGPLAN Notices, 6 (1994) 230-241.