Liens connexes

Dépêche modérée par

Dépêche éditée par

: LLVM 2.4 : le compilateur qui fait plus

Posté par Gilles G. (). Modéré le 12 novembre 2008.
24
La version 2.4 de la suite LLVM est sortie le 9 novembre.

LLVM est l'acronyme de Low Level Virtual Machine, mais c'est aussi :
  • un compilateur, avec des interfaces pour C, C++ au travers du projet CLang et du port des analyseurs de code C, C++ de GCC. D'autres langages sont également pris en charge.
  • un framework de compilateur qui permet d'ajouter simplement des nouveaux langages ou des nouvelles architectures matérielles.
  • un générateur de code embarquable pour la compilation à la volée (JIT).
  • une stratégie de compilation conçue pour autoriser des optimisations pendant toute la durée de vie d'un programme, c'est à dire à la compilation, pendant l'édition de lien, pendant l'exécution, et par profilage après l'exécution.
  • un jeu d'instruction virtuel, la représentation intermédiaire (IR). Celle-ci est accessible sous forme textuelle (c'est l'assembleur LLVM) ou binaire (c'est le bytecode LLVM). C'est cette représentation intermédiaire qui permet les optimisations.
La version 2.4 de LLVM apporte son lot de corrections de bogues, des temps de compilations réduits en utilisant -O0, des améliorations sur la génération de code, une nouvelle architecture cible (PIC16), de nouvelles possibilités pour la représentation intermédiaire, et de nombreuses autres améliorations et ajouts.

LLVM est le seul concurrent sérieux et libre de GCC GNU Compiler Collection. Il se distingue par sa conception très modulaire et sa simplicité d'utilisation. Cela se reflète dans son API et sa documentation abondante. Il existe même un tutoriel décrivant l'implémentation d'un petit langage en utilisant LLVM !
Évidemment, LLVM propose beaucoup moins de langages et d'architectures que GCC, mais il rattrape son retard et est déjà une alternative tout à fait valable à GCC en utilisant LLVM-GCC.

On peut essayer LLVM sans trop d'effort en le téléchargeant avec l'interface llvm-gcc. Vous pourrez ainsi compiler vos programmes favoris en utilisant la commande llvm-gcc de la même façon que vous utilisez gcc.

Il convient également de citer 2 projets annexes à LLVM, et qui évoluent avec celui-ci :
  • CLang est un projet dont le but est de fournir des interfaces C, C++ et Objective C pour LLVM qui soient de meilleure qualité que ce qui existe actuellement (les parseurs de GCC).
  • VMKit est une implémentation de la JVM et de la CLI. Il transforme le bytecode java et MSIL en représentation intermédiaire LLVM puis effectue les optimisations fournies par LLVM.
Enfin, signalons que des vidéos et présentations de la rencontre annuelle des développeurs de LLVM du 2 août 2008 sont disponibles.

> Lire les commentaires (29 commentaires, moyenne: 3,4).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

ref

Posté par TImaniac (Jabber id, page perso, ) le 12/11/2008 à 10:24. (lien). Évalué à 3.

Lien wikipedia CLI pas bon, le bon lien :
http://fr.wikipedia.org/wiki/Common_Language_Infrastructure

The CC Wars

Posté par GEDsismik (Jabber id, page perso, ) le 12/11/2008 à 10:32. (lien). Évalué à 9.

J'aime bien le "LLVM est le seul concurrent sérieux et libre de GCC" alors deux jours auparavant, un article concernant PCC déclarait "Beaucoup voient en lui une alternative viable à GCC qu'il pourra à terme remplacer." On dirait comme une revanche de cet article sur le précédent.

Personnellement, je n'utilise que GCC. En lisant l'article sur PCC (http://linuxfr.org/2008/11/10/24664.html), je n'ai même pas bien compris en quoi il pouvait rivaliser avec le compilateur GNU (exécution plus lente, moins d'architecture, moins d'optimisation...).

LLVM me parait déjà plus intéressant. Le modulaire, souvent, c'est bien et j'ai bien envie de gouter cette compilation à la volée pour C.

Sans aller jusqu'à chercher forcément à détrôner le "Grand Compilateur C", je trouve intéressant qu'il existe d'autres projets viables. C'est l'un des avantages du Libre : avoir le choix. Je ne pense pas remplacer mon gcc mais pourquoi pas tester LLVM par exemple.

Existe-t-il des comparatifs ou bench de ces compilo ?

Informations

Posté par s[e]th & h[o]lth () le 13/11/2008 à 12:53. (lien). Évalué à 3.

Je viens de lire cet article sur ce beau projet que je ne connaisssait absolument pas et je me pose une qestion : Pourrait-on se servir de LLVM afin de créer un émulateur pour un processeur donné ?
Par exemple, je voudrais interpréter du code ARM sur un PC x86 sous linux, est-ce que LLVM peut m'aider à créer l'interpréteur de code ARM avec des fonctionnalités de JIT ou alors je n'ai rien compris ?

Merci d'avance pour les réponses.

Revenir en haut de page