537 votes

Qu'est-ce que LLVM exactement ?

Je n'arrête pas d'entendre parler de LLVM. C'est dans Perl, puis c'est dans Haskell, puis quelqu'un l'utilise dans un autre langage ? Qu'est-ce que c'est ?

  • Qu'est-ce qui le distingue exactement de GCC (perspectives = sécurité, etc.) ?

52 votes

Il y a un bon chapitre dans un livre qui explique tout joliment ici : www.aosabook.org/en/llvm.html

8voto

Hashim Sharif Points 1

L'infrastructure du compilateur LLVM est particulièrement utile pour effectuer des optimisations et des transformations sur le code. Elle se compose également d'un certain nombre d'outils servant des usages distincts. llvm-prof est un outil de profilage qui vous permet d'effectuer un profilage de l'exécution afin d'identifier les points chauds du programme. Opt est un outil d'optimisation qui propose différentes passes d'optimisation (élimination du code mort par exemple).

Il est important de noter que LLVM vous fournit les bibliothèques nécessaires pour écrire vos propres Passes. Par exemple, si vous avez besoin d'ajouter un contrôle d'étendue sur certains arguments qui sont passés dans certaines fonctions d'un programme, écrire un simple Pass LLVM sera suffisant.

Pour plus d'informations sur la rédaction de votre propre Pass, consultez le site suivant http://llvm.org/docs/WritingAnLLVMPass.html

8voto

yoAlex5 Points 2350

Machine virtuelle de bas niveau (LLVM)

Alternatif : GCC(GNU Compiler Collection). GDB(GNU Debugger) - outil de débogage. Supporte plus de langages et d'architectures.

LLVM - est un projet parapluie (ensemble de bibliothèques), c'est un nom de marque avec différents projets (IR - Intermediate Representation, debug tool...) et maintenant ce n'est pas une machine virtuelle ou un acronyme. LLDB(LLVM Debugger) - outil de débogage. Soutenu par de grandes entreprises

Compilateur :

Language FrontEnd(Many: Clang, Haskel...) -> Optimizer(Single) -> Backend(Many: ARM, x86...)

FrontEnd génère Intermediate Representation (IR) . Ce site commun permet un processus de mise à l'échelle simple. Si vous créez un nouveau langage, vous n'êtes responsable que du FrontEnd, si vous développez une nouvelle architecture, vous devez vous occuper du BackEnd. Il s'agit d'une sorte de .class dans la JVM qui sont utilisés par ClassLoader [À propos]

Il existe des formes IR équivalentes :

llvm-dis peut être utilisé pour convertir bitcode en human readable

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X