Microsoft Intermediate Language (MSIL), cunoscut și sub numele de Common Intermediate Language (CIL) este un set de instrucțiuni care sunt independente de platformă și sunt generate de compilatorul specific limbajului din codul sursă. MSIL este independent de platformă și, prin urmare, poate fi executat în oricare dintre mediile suportate de Common Language Infrastructure, cum ar fi Windows .NET timpul de rulare.
MSIL este convertit într-un anumit cod de mașină specific mediului de computer de către compilatorul JIT. Acest lucru se face înainte ca MSIL să poată fi executat. De asemenea, MSIL este convertit în codul mașinii pe baza cerințelor, adică compilatorul JIT compilează MSIL după cum este necesar, mai degrabă decât în întregime.
Procesul de execuție în Common Language Runtime (CLR): Procesul de execuție care include crearea MSIL și conversia MSIL în cod mașină de către compilatorul JIT este dat după cum urmează:

este grasime proteica
- Codul sursă este convertit în MSIL de către un compilator specific limbajului în timpul de compilare al CLR. De asemenea, împreună cu MSIL, metadatele sunt, de asemenea, produse în compilație. Metadatele conțin informații precum definiția și semnătura tipurilor din cod, informații despre timpul de execuție etc.
- Un ansamblu Common Language Infrastructure (CLI) este creat prin asamblarea MSIL. Acest ansamblu este, practic, o bibliotecă de cod compilat care este utilizat pentru securitate, implementare, versiuni etc. și este de două tipuri, adică ansamblu de proces (EXE) și ansamblu de bibliotecă (DLL).
- Compilatorul JIT convertește apoi Microsoft Intermediate Language (MSIL) în codul mașinii care este specific mediului de computer pe care rulează compilatorul JIT. MSIL este convertit în codul mașinii pe baza cerințelor, adică compilatorul JIT compilează MSIL după cum este necesar, mai degrabă decât în întregime.
- Codul mașină obținut cu ajutorul compilatorului JIT este apoi executat de procesorul computerului.
Exemplu: MSIL este generat de compilatorul specific limbajului din codul sursă prezentat mai jos. Pentru a înțelege MSIL în detaliu, cod sursă C# simplu cu clasa Demo care se imprimă techcodeview.com este dat după cum urmează:
using> System;> > public> class> Demo {> >public> static> void> Main()> >{> >Console.WriteLine(>'techcodeview.com'>);> >}> }> |
>
>
MSIL care este creat de compilatorul C# pentru codul furnizat mai sus este dat după cum urmează:
ce este exportul în linux
// =============== 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 // =============================================================> În MSIL de mai sus, există coduri operaționale lungi de unul sau doi octeți. Declarațiile clasei de bază din care sunt moștenite toate celelalte clase sunt conținute în mscorlib.dll . În metoda Main(), instrucțiunea ldstr încarcă șirul techcodeview.com pe stivă. Apoi static System.Console.Writeline funcția este apelată și șirul este scos din stivă. În cele din urmă, instrucțiunea ret semnalează sfârșitul apelului de funcție.
Apoi .ctor( ) implică un constructor implicit fără parametri pentru clasa Demo. Acest constructor este creat automat de compilator pentru clasa nestatică Demo. Instrucțiunea de apel trece constructorul de obiect de bază și instrucțiunea ret semnalează sfârșitul apelului de funcție.