Microsoft Intermediate Language (MSIL), také známý jako Common Intermediate Language (CIL), je sada instrukcí, které jsou nezávislé na platformě a jsou generovány kompilátorem specifickým pro daný jazyk ze zdrojového kódu. MSIL je nezávislý na platformě, a proto jej lze spustit v jakémkoli prostředí podporovaném Common Language Infrastructure, jako je Windows .SÍŤ runtime.
MSIL je převáděn do strojového kódu specifického pro konkrétní počítačové prostředí kompilátorem JIT. To se provádí před spuštěním MSIL. MSIL se také převádí do strojového kódu na základě požadavků, tj. kompilátor JIT kompiluje MSIL podle potřeby, nikoli celý.
Proces provádění v Common Language Runtime (CLR): Proces provádění, který zahrnuje vytvoření MSIL a převod MSIL na strojový kód kompilátorem JIT, je dán následovně:

gimp uložit jako jpeg
- Zdrojový kód je převeden na MSIL kompilátorem specifickým pro daný jazyk v době kompilace CLR. Spolu s MSIL se v kompilaci vytvářejí také metadata. Metadata obsahují informace, jako je definice a podpis typů v kódu, runtime informace atd.
- Sestavení CLI (Common Language Infrastructure) je vytvořeno sestavením MSIL. Toto sestavení je v podstatě zkompilovaná knihovna kódu, která se používá pro zabezpečení, nasazení, verzování atd. a je dvou typů, tj. sestavení procesu (EXE) a sestavení knihovny (DLL).
- Kompilátor JIT pak převede jazyk MSIL (Microsoft Intermediate Language) na strojový kód, který je specifický pro prostředí počítače, na kterém kompilátor JIT běží. MSIL se převádí do strojového kódu na základě požadavků, tj. kompilátor JIT kompiluje MSIL podle potřeby, nikoli celý.
- Strojový kód získaný pomocí JIT kompilátoru je pak spuštěn procesorem počítače.
Příklad: MSIL je generován kompilátorem specifickým pro daný jazyk ze zdrojového kódu uvedeného níže. Chcete-li podrobně porozumět MSIL, jednoduchý zdrojový kód C# s ukázkou třídy, která se vytiskne techcodeview.com je dáno následovně:
using> System;> > public> class> Demo {> >public> static> void> Main()> >{> >Console.WriteLine(>'techcodeview.com'>);> >}> }> |
>
>
MSIL, který je vytvořen kompilátorem C# pro výše uvedený kód, je dán takto:
příklad alfa beta prořezávání
// =============== 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 // =============================================================> Ve výše uvedeném MSIL jsou operační kódy dlouhé jeden nebo dva bajty. Deklarace základních tříd, ze kterých jsou zděděny všechny ostatní třídy, jsou obsaženy v mscorlib.dll . V metodě Main(), instrukce ldstr načte řetězec techcodeview.com na zásobníku. Pak statika System.Console.Writeline je zavolána funkce a řetězec je vytažen ze zásobníku. Nakonec instrukce ret signalizuje konec volání funkce.
Potom .ctor( ) implikuje výchozí konstruktor bez parametrů pro třídu Demo. Tento konstruktor je automaticky vytvořen kompilátorem pro nestatickou třídu Demo. Instrukce volání předá konstruktor základního objektu a instrukce ret signalizuje konec volání funkce.