Compilation C++ avec LLVM et clang - Partie 1 : générer du code C++ dynamiquement depuis Lua
Chers membres du club,
J'ai le plaisir de vous présenter ce tutoriel d'Emmanuel ROCHE :
Citation:
L'objectif de ce tutoriel d'Emmanuel Roche est de vous apprendre à générer du code C++ dynamiquement depuis Lua.
Bonne lecture ;)
:fleche: Retrouvez Les meilleurs cours et tutoriels pour apprendre le C++.
Partie 2 : construire un compilateur C++ JIT fonctionnel avec LLVM
Chers membres du club,
J'ai le plaisir de vous présenter la deuxième partie de ce tutoriel 'Emmanuel ROCHE :
Citation:
Dans
mon article précédent sur ce sujet, j’ai décrit comment j’ai essayé d’utiliser LLVM et clang pour exécuter certains tests préliminaire de compilation C++ dynamique. Maintenant, dans ce post, je veux pousser ce concept un peu plus loin et construire un compilateur JIT fonctionnel, que je puisse éventuellement utiliser en production, soit directement, soit depuis du code C++ ou Lua ou d’autres interfaces.
Bonne lecture ;)
:fleche: Retrouvez Les meilleurs cours et tutoriels pour apprendre le C++.
Compilation C++ JIT*avec LLVM - Partie 3 : Corriger le crash du ModulePassManager
Chers membres du club,
J'ai le plaisir de vous présenter la troisième partie de ce tutoriel d'Emmanuel ROCHE :
Citation:
Si vous avez lu mon article précédent sur ce sujet (
Compilateur C++ JIT avec LLVM - Partie 2), vous avez probablement noté qu’il y avait un sérieux problème avec l’implémentation de NervJIT que j’ai décrite (et aussi dans l’implémentation expérimentale de runClang() décrite dans le tout premier article) : je ne pouvais pas libérer les ressources de la passe d’optimisation IR (Intermediate Representation : représentation intermédiaire), ni non plus l’objet llvm::orc::LLJIT, car tenter de le faire produisait des plantées silencieuses. Dans ce nouveau post, nous nous concentrerons sur les étapes que j’ai suivies pour me débarrasser finalement de ce problème.
Alors, allons-y !😀
Bonne lecture ;)
:fleche: Retrouvez Les meilleurs cours et tutoriels pour apprendre le C++.
Compilation C++ JIT avec LLVM - Partie 4 : dépendance à l’environnement d’exécution C
Chers membres du club,
J'ai le plaisir de vous présenter la quatrième partie de ce tutoriel d'Emmanuel ROCHE :
Citation:
Dans
l'article précédent sur ce sujet, nous avons vu comment corriger les plantées du module d’optimisation de la représentation intermédiaire (IR) ou les fuites de mémoire dues à une mauvaise configuration de construction. Maintenant, dans ce billet, je veux évoquer les problèmes que j’ai rencontrés lors d’une compilation JIT légèrement plus avancée*: l’idée de base était de vérifier que nous pouvons vraiment nous fier à des bibliothèques externes provenant de notre code JIT compilé, ce qui est évidemment une caractéristique clé. Et ceci s’est révélé loin d’être aussi facile que je le pensais…😀
Bonne lecture ;)
:fleche: Retrouvez Les meilleurs cours et tutoriels pour apprendre le C++.
Compilation C++ JIT avec LLVM - Partie 5 : Bitcode, PCH, gestion des exceptions, liaison des modules et plus…
Chers membres du club,
J'ai le plaisir de vous présenter la cinquième partie de ce tutoriel d'Emmanuel ROCHE :
Citation:
Voilà maintenant quelque temps que je vous présentais
mon dernier article sur mes expériences avec le compilateur JIT. J’ai beaucoup joué avec ce code ces derniers jours . Si vous ne vous en souvenez pas, mon but premier était de pouvoir générer du code C++ directement depuis le langage de scripting Lua.
C’est exactement ce que j’ai fait, et en passant j’ai construit un “frontal” pour mon compilateur en Lua, qui évolue encore et que j’utilise maintenant pour exécuter la plupart de mes tests. Au cours de cette démarche j’ai aussi travaillé sur la génération d’entêtes précompilés (PCH), les constructeurs et destructeurs de modules LLVM, les tests unitaires C++ depuis des scripts, la gestion d’exceptions, et les soucis de liaison des modules. Je pense donc qu’il est grand temps d’arrêter de coder un moment et d’essayer de partager ce que j’ai appris sur tous ces points dans l’hypothèse que ceci puisse intéresser quelqu’un (ou en réalité, juste pour que je me souvienne de ce que j’ai fait si je dois y revenir un jour ).
Bonne lecture ;)
:fleche: Retrouvez Les meilleurs cours et tutoriels pour apprendre le C++.