Introduction

Chibil est un compilateur C basé sur chibicc, réécrit en C# et mis à jour pour cibler .NET IL (MSIL). Il est suffisamment complet pour exécuter DOOM (PureDOOM), démontrant ainsi ses capacités.

Contexte Technique

Chibil prend des fichiers source C et génère des fichiers OBJ COFF. Ces fichiers OBJ sont compatibles binairement avec les fichiers OBJ produits par le compilateur MSVC en mode /clr. L'utilitaire link.exe de Visual Studio est utilisé pour relier les fichiers objet ensemble et produire des exécutables finaux. Il est même possible de mélanger des fichiers objet produits par Chibil et des fichiers objet C++/CLI.

Chibil dispose d'un stub minimal de bibliothèque de runtime C dans le répertoire crt, qui fournit un main exécutable prenant un tableau de chaînes de caractères en arguments et dispatchant vers le main standard C avec argc et argv. L'assemblage produit est converti en un fichier objet COFF à l'aide de l'utilitaire asm2obj et peut être lié avec le code C pour former un exécutable.

Analyse et Implications

Chibil présente un intérêt certain pour les développeurs souhaitant utiliser du code C dans des applications .NET. Cependant, il est important de noter que le code généré est actuellement placé dans l'espace de noms global, ce qui nécessite l'utilisation de la réflexion pour consommer le code compilé depuis d'autres parties du programme.

Perspective

À l'avenir, il faudra surveiller les progrès de Chibil, notamment l'ajout d'un lien propre et l'amélioration de la prise en charge de la bibliothèque de runtime C. Les outils tels que coffobjdumper.cs, qui dump les fichiers OBJ .NET, pourraient également être améliorés pour offrir une meilleure visibilité sur les métadonnées .NET et les corps de méthode.