LLVM c'est une infrastructure pour compilateur qui travaille à bas niveau. Il traite un langage (également appelé LLVM) qui ressemble à une abstraction générique pour les langages type assembleurs (qui eux sont spécifiques à des architectures données). Grosso modo : c'est un langage qui a la tronche de l'assembleur et qui peut se traduire facilement vers n'importe quel assembleur.
On se sert de LLVM pour écrire des compilateurs : le code d'origine est compilé vers LLVM qui se charge ensuite de traduire vers le code machine cible.
Clang c'est un compilateur C, C++ et Obj-C qui utilise LLVM dans ses couches de bas niveau.
Parce que tous les compilateurs passent pas une phase de compilation où l'on obtiendra un AST de très bas niveau proche de l'assembleur. Donc avoir un framework pour faire la dernière traduction vers le langage machine est largement souhaitable :
on n'a pas à écrire les optimisations correspondantes soi-même,
on n'a pas à écrire la traduction vers la bonne architecture soi-même,
si LLVM supporte une nouvelle architecture, on la supporte aussi directement,
si LLVM produit de nouvelles optimisations, on en bénéficie immédiatement.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C