• [^] # Re: Superbe article !

    Posté par (Mastodon) . En réponse à la dépêche LLVM 3.3 et Clang 3.3. Évalué à 10.

    LLVM fonctionne comme n'importe quel autre compilateur. Il y a deux parties : le front-end et le back-end. Le front-end est chargé de lire un fichier écrit dans un langage précis, de le traduire sous forme d'une structure de données qu'on appelle un arbre de syntaxe abstrait. Cet arbre est alors traduit dans un langage intermédiaire qui est une abstraction des instructions d'une machine. Une des forces de LLVM est que ce langage intermédiaire est très bien spécifié et peut s'utiliser tout seul sous forme textuel (un peu comme un langage assembleur). Ensuite vient le back-end, qui transforme la représentation intermédiaire en assembleur (ou en code objet) suivant l'architecture cible.

    Entre le front-end et le back-end, on peut agir sur la représentation intermédiaire pour faire des optimisations (qui sont donc communes à tous les langages sources et toutes les architectures cibles).

    Pour répondre à tes questions, non ça n'a rien à voir avec make ou cmake. En revanche, LLVM peut être utile pour implémenter une JVM (et d'ailleurs, il y a un projet qui s'appelle VMKit et qui fait exactement ça).