Microsoft Intermediate Language (MSIL), også kendt som Common Intermediate Language (CIL) er et sæt instruktioner, der er platformsuafhængige og genereres af den sprogspecifikke compiler fra kildekoden. MSIL er platformsuafhængig og kan følgelig udføres på et hvilket som helst af de Common Language Infrastructure-understøttede miljøer såsom Windows .NET køretid.
MSIL konverteres til en bestemt computermiljøspecifik maskinkode af JIT-kompileren. Dette gøres før MSIL kan udføres. Desuden konverteres MSIL'en til maskinkoden på kravbasis, dvs. JIT-kompileren kompilerer MSIL'en efter behov i stedet for hele den.
Udførelsesproces i Common Language Runtime (CLR): Udførelsesprocessen, der inkluderer oprettelsen af MSIL og konverteringen af MSIL til maskinkode af JIT compileren, er givet som følger:

oracle sql ikke ens
- Kildekoden konverteres til MSIL af en sprogspecifik compiler i kompileringstiden for CLR. Sammen med MSIL produceres der også metadata i kompileringen. Metadataene indeholder information såsom definition og signatur af typerne i koden, runtime-information mv.
- En Common Language Infrastructure (CLI)-samling oprettes ved at samle MSIL. Denne assembly er dybest set et kompileret kodebibliotek, der bruges til sikkerhed, udrulning, versionering osv. og det er af to typer, dvs. processamling (EXE) og bibliotekssamling (DLL).
- JIT-kompileren konverterer derefter Microsoft Intermediate Language (MSIL) til den maskinkode, der er specifik for det computermiljø, som JIT-kompileren kører på. MSIL'en konverteres til maskinkoden på kravbasis, dvs. JIT-kompileren kompilerer MSIL'en efter behov i stedet for hele den.
- Maskinkoden opnået ved hjælp af JIT-kompileren udføres derefter af computerens processor.
Eksempel: MSIL er genereret af den sprogspecifikke compiler fra kildekoden nedenfor. For at forstå MSIL i detaljer, simpel C#-kildekode med klassen Demo, der udskriver techcodeview.com er givet som følger:
using> System;> > public> class> Demo {> >public> static> void> Main()> >{> >Console.WriteLine(>'techcodeview.com'>);> >}> }> |
>
>
string split bash
MSIL'en, der er oprettet af C#-kompileren til den ovenfor angivne kode, er givet som følger:
// =============== 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 ovenstående MSIL er der opkoder, der er en eller to byte lange. Basisklasseerklæringerne, som alle andre klasser er nedarvet fra, er indeholdt i mscorlib.dll . I metoden Main(), instruktionen ldstr indlæser strengen techcodeview.com på stakken. Så det statiske System.Console.Writeline funktionen kaldes og strengen poppes fra stakken. Til sidst signalerer ret-instruktionen slutningen af funktionskaldet.
Derefter .ctor( )-sætning antyder en standardkonstruktør uden parametre for klassen Demo. Denne konstruktør oprettes automatisk af compileren til den ikke-statiske klassedemo. Kaldsinstruktionen passerer basisobjektkonstruktøren, og ret-instruktionen signalerer slutningen af funktionskaldet.