Le Microsoft Intermediate Language (MSIL), également connu sous le nom de Common Intermediate Language (CIL), est un ensemble d'instructions indépendantes de la plate-forme et générées par le compilateur spécifique au langage à partir du code source. Le MSIL est indépendant de la plate-forme et, par conséquent, il peut être exécuté sur n'importe quel environnement pris en charge par Common Language Infrastructure, tel que Windows. .FILET Durée.
Le MSIL est converti en un code machine spécifique à un environnement informatique particulier par le compilateur JIT. Ceci est fait avant que le MSIL puisse être exécuté. En outre, le MSIL est converti en code machine selon les besoins, c'est-à-dire que le compilateur JIT compile le MSIL selon les besoins plutôt que dans son intégralité.
Processus d'exécution dans Common Language Runtime (CLR) : Le processus d'exécution qui comprend la création du MSIL et la conversion du MSIL en code machine par le compilateur JIT est donné comme suit :

octets dans la chaîne python
- Le code source est converti en MSIL par un compilateur spécifique au langage au moment de la compilation du CLR. En plus du MSIL, des métadonnées sont également produites dans la compilation. Les métadonnées contiennent des informations telles que la définition et la signature des types dans le code, des informations d'exécution, etc.
- Un assembly CLI (Common Language Infrastructure) est créé en assemblant le MSIL. Cet assembly est essentiellement une bibliothèque de code compilée utilisée pour la sécurité, le déploiement, la gestion des versions, etc. et il est de deux types, à savoir l'assemblage de processus (EXE) et l'assemblage de bibliothèque (DLL).
- Le compilateur JIT convertit ensuite le Microsoft Intermediate Language (MSIL) en code machine spécifique à l'environnement informatique sur lequel le compilateur JIT s'exécute. Le MSIL est converti en code machine selon les besoins, c'est-à-dire que le compilateur JIT compile le MSIL selon les besoins plutôt que dans son intégralité.
- Le code machine obtenu à l'aide du compilateur JIT est ensuite exécuté par le processeur de l'ordinateur.
Exemple: Le MSIL est généré par le compilateur spécifique au langage à partir du code source indiqué ci-dessous. Pour comprendre le MSIL en détail, un simple code source C# avec la classe Demo qui imprime techcodeview.com est donné comme suit :
using> System;> > public> class> Demo {> >public> static> void> Main()> >{> >Console.WriteLine(>'techcodeview.com'>);> >}> }> |
>
>
tableau de chaînes en c
Le MSIL créé par le compilateur C# pour le code fourni ci-dessus est donné comme suit :
// =============== CLASS MEMBERS DECLARATION =================== .class public auto ansi beforefieldinit Demo extends [mscorlib]System.Object { .method public hidebysig static void Main() cil managed { // .maxstack 8 IL_0000: nop IL_0001: ldstr 'techcodeview.com' IL_0006: call void [mscorlib]System.Console::WriteLine(string) IL_000b: nop IL_000c: ret } // end of method Demo::Main .method public hidebysig specialname rtspecialname instance void .ctor() cil managed { // .maxstack 8 IL_0000: ldarg.0 IL_0001: call instance void [mscorlib]System.Object::.ctor() IL_0006: ret } // end of method Demo::.ctor } // end of class Demo // =============================================================> Dans le MSIL ci-dessus, il existe des opcodes d'une longueur d'un ou deux octets. Les déclarations de classe de base dont toutes les autres classes sont héritées sont contenues dans le mscorlib.dll . Dans la méthode Main(), l'instruction ldstr charge la chaîne techcodeview.com sur la pile. Puis le statique Système.Console.Writeline la fonction est appelée et la chaîne est extraite de la pile. Enfin, l'instruction ret signale la fin de l'appel de fonction.
Puis le .ctor( ) implique un constructeur par défaut sans paramètres pour la classe Demo. Ce constructeur est automatiquement créé par le compilateur pour la classe non statique Demo. L'instruction call transmet le constructeur de l'objet de base et l'instruction ret signale la fin de l'appel de fonction.