IL2C est un traducteur (transpileur) du langage ECMA-335 CIL/MSIL vers C.
Nous visons :
Meilleure prévisibilité des coûts d'exécution
Meilleure lisibilité humaine du code source C traduit par IL2C.
Exigences en matière d'encombrement très réduit
Nous réfléchissons à la manière de passer d'un grand système doté de nombreuses ressources à un petit système embarqué. (Commande de Ko pour le système sans système d'exploitation)
Meilleure portabilité du code/de l'exécution
L'exigence minimale est uniquement le compilateur C99. Le minimum d'exécution nécessite uniquement le tas, les instructions CAS, le signal (POSIX) et setjmp/longjmp. Une autre meilleure fonctionnalité est l'API de thread (Win32, pthreads et FreeRTOS.)
Meilleures interopérabilités pour les bibliothèques C existantes
Vous pouvez utiliser les techniques d'interopérabilité standard .NET (comme P/Invoke.)
Contenant des systèmes de construction transparents pour les principales boîtes à outils C
par exemple : système CMake, IDE Arduino, VC++...
Code source C# d'origine :
classe statique publique HelloWorld{public static void Main(){Console.WriteLine("Bonjour tout le monde avec IL2C !");}}
Traduit en code source C (tous les commentaires sont supprimés) :
IL2C_CONST_STRING(string0__, L"Bonjour tout le monde avec IL2C !");void HelloWorld_Main() {struct{const IL2C_EXECUTION_FRAME* pNext__;const uint16_t objRefCount__;const uint16_t valueCount__;System_String* stack0_0__; } frame__ = { NULL, 1, 0 };il2c_link_execution_frame(&frame__);frame__.stack0_0__ = string0__;System_Console_WriteLine_10(frame__.stack0_0__);il2c_unlink_execution_frame(&frame__);return; }
Afficher avec des commentaires / d'autres exemples de résultats de traduction (contiennent des résultats complexes)
L'état actuel de l'IL2C est expérimental , lisez un simple "Mise en route" pour la première étape.
Si vous avez besoin de connaissances approfondies sur IL2C, consultez « À l’intérieur d’IL2C » .
Les listes suivantes sont générées automatiquement par test unitaire.
Liste des opcodes IL pris en charge
Types de base pris en charge
Fonctionnalités du système d'exécution prises en charge
Fonctionnalités prises en charge (anciennes)
Forfaits | maître | développer |
---|---|---|
IL2C.Build | ||
IL2C.Interopérabilité | ||
IL2C.Core | ||
IL2C.Runtime | ||
IL2C.Runtime.msvc | ||
IL2C.Runtime.Arduino | (Construction) | (Construction) |
Configuration | maître |
---|---|
Publier | |
Déboguer | |
Libérer |
Configuration | développer |
---|---|
Publier | |
Déboguer | |
Libérer |
Sous Apache v2.
Diapositive : Créer une archive IL2C
Couvre des informations générales sur IL2C interne.
Session #6-52 de la conférence dotNET 600 2018.
Diapositive : Écrivez en commun, exécutez n'importe où
Session #6-51 de la conférence dotNET 600 2017
Vidéo de la session (japonais)
Calculateur de notation polonaise : impls minimaux mais utiles pour "Win32", "UEFI" et "M5Stack (ESP32)"
Slide : Comment fabriquer une calculatrice / Création d'une archive IL2C
Session #6-52 dans .NET Fringe Japon 2018
Diapositive : Créer une archive IL2C
Session #6-53 au MVP Summit F# Meetup / SEATTLE F# USERS GROUP
Diapositive : Créer une archive IL2C
Session #6-54 du Microsoft MVP Global Summit 2018 – VS HACKATHON"
Vidéo de la session (japonais) : "Création d'une liste de lecture IL2C d'archive"
"Comment créer IL2C ou un outil similaire à IL2CPP ? Vous voyez que seul le processus de conception pur inclut le concept."
Séance #1 au Centre CLR #6
Lettre vidéo (japonais) : Testé IL2C sur plateforme micro:bit et arduino
Vidéo de la session (japonais) : Création d'archives IL2C
Session #6-28 de la .NET Conf 2017 dans la salle B de Tokyo
Informations sur le jalon 2+ (japonais) : Xamarin étendu - Xamaritans
inclus dans le livret "Extensive Xamarin - Techbook Fest part 3"
#6-6 : Près des jalons
#6-14 : Analyse du flux de données
Jalon 1 : testez sur VC++ et vérifiez le fonctionnement de l'optimiseur du compilateur C.
#6-48 : Comment fonctionne le garbage collection par marquage et balayage sur un code traduit.
Comment fonctionne le calcul des symboles de surcharge/remplacement/méthode virtuelle.
Comment traduire les gestionnaires d'exceptions en combinant le déroulement local et le déroulement global.
Nous réfléchissons au Centre CLR Try! rencontre de développement (10/11/2018, japonais)
Il s'agit du graphe de structure pour le cadre d'exécution et le cadre d'exception.