logo

CIL o MSIL | Llenguatge intermedi de Microsoft o llenguatge intermedi comú

El Microsoft Intermediate Language (MSIL), també conegut com a Common Intermediate Language (CIL) és un conjunt d'instruccions que són independents de la plataforma i que són generades pel compilador específic del llenguatge a partir del codi font. El MSIL és independent de la plataforma i, per tant, es pot executar en qualsevol dels entorns compatibles amb la Common Language Infrastructure com Windows. .NET temps d'execució.
El compilador JIT converteix el MSIL en un codi màquina específic d'un entorn informàtic particular. Això es fa abans que es pugui executar el MSIL. A més, el MSIL es converteix en el codi de màquina segons els requisits, és a dir, el compilador JIT compila el MSIL tal com es requereix en lloc de la totalitat.

Procés d'execució en Common Language Runtime (CLR): El procés d'execució que inclou la creació del MSIL i la conversió del MSIL en codi màquina per part del compilador JIT és el següent:



MSIL o CIL

cout
  • El codi font es converteix al MSIL mitjançant un compilador específic de l'idioma en temps de compilació del CLR. A més, juntament amb el MSIL, també es produeixen metadades a la compilació. Les metadades contenen informació com ara la definició i signatura dels tipus al codi, informació de temps d'execució, etc.
  • Un conjunt d'infraestructura de llenguatge comú (CLI) es crea mitjançant el muntatge del MSIL. Aquest conjunt és bàsicament una biblioteca de codi compilat que s'utilitza per a la seguretat, el desplegament, el control de versions, etc. i és de dos tipus, és a dir, el conjunt de processos (EXE) i el conjunt de biblioteca (DLL).
  • A continuació, el compilador JIT converteix el Microsoft Intermediate Language (MSIL) en el codi màquina específic de l'entorn informàtic en què s'executa el compilador JIT. El MSIL es converteix al codi de la màquina segons els requisits, és a dir, el compilador JIT compila el MSIL tal com es requereix en lloc de la totalitat.
  • El codi màquina obtingut mitjançant el compilador JIT és executat pel processador de l'ordinador.

Exemple: El MSIL el genera el compilador específic del llenguatge a partir del codi font que es mostra a continuació. Per comprendre el MSIL en detall, codi font C# senzill amb la classe Demo que imprimeix techcodeview.com es dóna de la següent manera:








using> System;> > public> class> Demo {> >public> static> void> Main()> >{> >Console.WriteLine(>'techcodeview.com'>);> >}> }>

vlc per descarregar vídeos de youtube

>

>

El MSIL que el compilador C# crea per al codi proporcionat anteriorment es dóna de la següent manera:

 // =============== 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 // =============================================================>

Al MSIL anterior, hi ha codis operatius que tenen un o dos bytes de llarg. Les declaracions de classe base de les quals s'hereten totes les altres classes estan contingudes al fitxer mscorlib.dll . En el mètode Main(), la instrucció ldstr carrega la cadena techcodeview.com a la pila. Després l'estàtica System.Console.Writeline es crida a la funció i la cadena surt de la pila. Finalment, la instrucció ret indica el final de la trucada de funció.
Aleshores el .ctor( ) implica un constructor predeterminat sense paràmetres per a la classe Demo. Aquest constructor el crea automàticament el compilador per a la classe no estàtica Demo. La instrucció de trucada passa el constructor d'objectes base i la instrucció ret indica el final de la crida de funció.