Microsoft Intermediate Language (MSIL), även känt som Common Intermediate Language (CIL) är en uppsättning instruktioner som är plattformsoberoende och genereras av den språkspecifika kompilatorn från källkoden. MSIL är plattformsoberoende och följaktligen kan den köras i vilken som helst av de Common Language Infrastructure-stödda miljöerna som Windows .NETTO körning.
MSIL konverteras till en speciell datormiljöspecifik maskinkod av JIT-kompilatorn. Detta görs innan MSIL kan exekveras. Dessutom konverteras MSIL till maskinkoden på kravbasis, dvs JIT-kompilatorn kompilerar MSIL efter behov snarare än hela den.
Exekveringsprocess i Common Language Runtime (CLR): Exekveringsprocessen som inkluderar skapandet av MSIL och omvandlingen av MSIL till maskinkod av JIT-kompilatorn ges enligt följande:

vad är autowired i java
- Källkoden konverteras till MSIL av en språkspecifik kompilator under kompileringstiden för CLR. Tillsammans med MSIL produceras också metadata i kompileringen. Metadatan innehåller information som definition och signatur av typerna i koden, körtidsinformation, etc.
- En Common Language Infrastructure (CLI)-sammansättning skapas genom att montera MSIL. Denna assembly är i grunden ett kompilerat kodbibliotek som används för säkerhet, distribution, versionshantering etc. och det är av två typer, dvs process assembly (EXE) och library assembly (DLL).
- JIT-kompilatorn konverterar sedan Microsoft Intermediate Language (MSIL) till maskinkoden som är specifik för den datormiljö som JIT-kompilatorn körs på. MSIL konverteras till maskinkoden på kravbasis, dvs JIT-kompilatorn kompilerar MSIL efter behov snarare än hela den.
- Maskinkoden som erhålls med hjälp av JIT-kompilatorn exekveras sedan av datorns processor.
Exempel: MSIL genereras av den språkspecifika kompilatorn från källkoden nedan. För att förstå MSIL i detalj, enkel C#-källkod med klassen Demo som skriver ut techcodeview.com ges enligt följande:
using> System;> > public> class> Demo {> >public> static> void> Main()> >{> >Console.WriteLine(>'techcodeview.com'>);> >}> }> |
>
>
hashset java
MSIL som skapas av C#-kompilatorn för koden ovan ges enligt följande:
// =============== 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 // =============================================================> I ovanstående MSIL finns det opkoder som är en eller två byte långa. Basklassdeklarationerna som alla andra klasser ärvs från finns i mscorlib.dll . I metoden Main(), instruktionen ldstr laddar strängen techcodeview.com på traven. Sedan det statiska System.Console.Writeline funktionen anropas och strängen tas från stacken. Slutligen signalerar ret-instruktionen slutet på funktionsanropet.
Sedan .ctor( )-satsen innebär en standardkonstruktor utan parametrar för klassen Demo. Denna konstruktor skapas automatiskt av kompilatorn för den icke-statiska klassen Demo. Anropsinstruktionen passerar basobjektkonstruktören och ret-instruktionen signalerar slutet på funktionsanropet.