Séminaire PEQUANRSS

Etendre le compilateur GCC avec MELT


10/05/2012
Intervenant(s) : Basile Starynkevitch
Le compilateur GCC (version 4.6 ou 4.7) est un mastodonte de plusieurs millions de lignes. Le langage MELT est un langage spécifique dédié (domain specific language) à son extension, realisé à travers un greffon.
A l'aide de plusieurs exemples, nous présentons le langage MELT (langage lispien, compilé en du code C) et les données qu'il peut traiter (valeurs natives à typage dynamique, et "trucs" internes de GCC statiquement typés). Les traits de haut niveau de MELT (filtrage par motif, programmation applicative & objet, ...) seront donnés. L'organisation en de nombreuses passes de GCC sera évoquée (et son extension par insertions de nouvelles passes en MELT). Les principales représentations internes de GCC (notamment Gimple & Tree) seront expliquées.
Cet exposé s'adresse à ceux qui voudraient profiter de la puissance de GCC pour l'étendre pour des besoins variés (validation de règle de codage, analyse statique, optimisations spécifiques, refactoring...). Il ne suppose pas de connaître les internes de GCC (ni MELT).
Ce tutoriel est une version améliorée d'un tutoriel présenté à HiPEAC 2012 (Paris, janvier 2012)
A l'issue de ce tutoriel, l'auditeur intéressé devrait être capable de coder des extensions de GCC simples en MELT (sous GNU/Linux).
Extend the GCC compiler with MELT
The GCC compiler (version 4.6 or 4.7) is a monster of many millions lines of code. The MELT language is a high-level domain specific language to extend GCC, implemented as a plugin.
Thru several examples, we present the MELT language (MELT is a Lisp-like language, compiled to C code) and the data it is able to handle (native values, with dynamic typing, and internal GCC "stuff", statically typed). The high-level traits of MELT (pattern-matching, functional & object programming) will be explained. The many passes organization ofg GCC will be shownn (and how to extend it by inserting new passes in MELT). The major internal representations of GCC (including Gimple & Tree) will be explained.
This talk aims those who would like to take advantage of the power of GCC to extend it for their various needs (coding rule validation, static analysis, specific optimizations, refactoring...). It does not presuppose internal knowledge of GCC (nor of MELT).
This tutorial is an improved version of a tutorial given at HiPEAC 2012 (Paris, january 2012).
After attending this tutorial, the interested audience should be able to code simple GCC extensions in MELT (sous GNU/Linux)
Plus d'informations ici
Thibault.Hilaire (at) nulllip6.fr, Jean-Luc.Lamotte (at) nulllip6.fr
 Mentions légales
Carte du site |