Microsoft Intermediate Language (MSIL), tiež známy ako Common Intermediate Language (CIL), je súbor inštrukcií, ktoré sú nezávislé na platforme a sú generované kompilátorom špecifickým pre daný jazyk zo zdrojového kódu. MSIL je nezávislý na platforme, a preto môže byť spustený v akomkoľvek prostredí podporovanom Common Language Infrastructure, ako je Windows .NET beh programu.
MSIL je konvertovaný do strojového kódu špecifického pre konkrétne počítačové prostredie kompilátorom JIT. Toto sa vykoná pred spustením MSIL. MSIL sa tiež konvertuje do strojového kódu na základe požiadaviek, t. j. kompilátor JIT kompiluje MSIL podľa potreby a nie celý.
Proces vykonávania v Common Language Runtime (CLR): Proces vykonávania, ktorý zahŕňa vytvorenie MSIL a konverziu MSIL na strojový kód kompilátorom JIT, je daný nasledovne:

štátov v USA
- Zdrojový kód je konvertovaný do MSIL kompilátorom špecifickým pre daný jazyk v čase kompilácie CLR. Spolu s MSIL sa v kompilácii vytvárajú aj metadáta. Metadáta obsahujú informácie, ako je definícia a podpis typov v kóde, informácie o behu atď.
- Zostava Common Language Infrastructure (CLI) sa vytvorí zostavením MSIL. Toto zhromaždenie je v podstate skompilovaná knižnica kódu, ktorá sa používa na zabezpečenie, nasadenie, verzovanie atď., a má dva typy, tj zostavovanie procesov (EXE) a zostavovanie knižníc (DLL).
- Kompilátor JIT potom skonvertuje jazyk MSIL (Microsoft Intermediate Language) na strojový kód, ktorý je špecifický pre počítačové prostredie, na ktorom kompilátor JIT beží. MSIL sa konvertuje do strojového kódu na základe požiadaviek, t.j. kompilátor JIT kompiluje MSIL podľa potreby a nie celý.
- Strojový kód získaný pomocou kompilátora JIT potom vykoná procesor počítača.
Príklad: MSIL generuje kompilátor špecifický pre daný jazyk zo zdrojového kódu uvedeného nižšie. Na podrobné pochopenie MSIL stačí jednoduchý zdrojový kód C# s triedou Demo, ktorá sa vytlačí techcodeview.com sa uvádza takto:
using> System;> > public> class> Demo {> >public> static> void> Main()> >{> >Console.WriteLine(>'techcodeview.com'>);> >}> }> |
>
>
binárne na bcd
MSIL, ktorý je vytvorený kompilátorom C# pre vyššie uvedený kód, je uvedený takto:
// =============== 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 // =============================================================> Vo vyššie uvedenom MSIL sú operačné kódy dlhé jeden alebo dva bajty. Deklarácie základnej triedy, z ktorých sú zdedené všetky ostatné triedy, sú obsiahnuté v mscorlib.dll . V metóde Main() je inštrukcia ldstr načíta reťazec techcodeview.com na stohu. Potom statika System.Console.Writeline zavolá sa funkcia a reťazec sa vyberie zo zásobníka. Nakoniec inštrukcia ret signalizuje koniec volania funkcie.
Potom .ctor( ) znamená predvolený konštruktor bez parametrov pre triedu Demo. Tento konštruktor je automaticky vytvorený kompilátorom pre nestatickú triedu Demo. Inštrukcia volania prechádza cez konštruktor základného objektu a inštrukcia ret signalizuje koniec volania funkcie.