Microsoft starpvaloda (MSIL), kas pazīstama arī kā kopējā starpvaloda (CIL), ir instrukciju kopa, kas ir neatkarīga no platformas un ko ģenerē valodai specifisks kompilators no pirmkoda. MSIL ir neatkarīga no platformas, un līdz ar to to var izpildīt jebkurā no Common Language Infrastructure atbalstītajām vidēm, piemēram, Windows. .TĪKLS izpildlaiks.
JIT kompilators MSIL pārvērš konkrētai datora videi specifiskā mašīnkodā. Tas tiek darīts, pirms var izpildīt MSIL. Turklāt MSIL tiek pārveidots mašīnkodā pēc nepieciešamības, t.i., JIT kompilators apkopo MSIL pēc vajadzības, nevis visu to.
Izpildes process Common Language Runtime (CLR): Izpildes process, kas ietver MSIL izveidi un MSIL pārveidošanu mašīnkodā, ko veic JIT kompilators, ir norādīts šādi:

datu bāze
- Avota kodu konvertē MSIL valodā specifisks kompilators CLR kompilēšanas laikā. Tāpat kopā ar MSIL apkopojumā tiek radīti arī metadati. Metadati satur tādu informāciju kā koda tipu definīcija un paraksts, izpildlaika informācija utt.
- Kopējās valodas infrastruktūras (CLI) montāža tiek izveidota, montējot MSIL. Šī montāža būtībā ir apkopota koda bibliotēka, ko izmanto drošībai, izvietošanai, versiju veidošanai utt., un tai ir divu veidu, t.i., procesa montāža (EXE) un bibliotēkas montāža (DLL).
- Pēc tam JIT kompilators pārveido Microsoft Intermediate Language (MSIL) mašīnkodā, kas ir raksturīgs datora videi, kurā darbojas JIT kompilators. MSIL tiek pārveidots mašīnkodā pēc nepieciešamības, t.i., JIT kompilators kompilē MSIL pēc vajadzības, nevis visu to.
- Mašīnas kodu, kas iegūts, izmantojot JIT kompilatoru, pēc tam izpilda datora procesors.
Piemērs: MSIL ģenerē valodai specifisks kompilators no tālāk norādītā pirmkoda. Lai detalizēti izprastu MSIL, izmantojiet vienkāršu C# pirmkodu ar klases demonstrāciju, kas tiek drukāta techcodeview.com tiek sniegts šādi:
using> System;> > public> class> Demo {> >public> static> void> Main()> >{> >Console.WriteLine(>'techcodeview.com'>);> >}> }> |
>
>
MSIL, ko C# kompilators izveido iepriekš norādītajam kodam, ir norādīts šādi:
vai android var spēlēt gamepigeon
// =============== 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 // =============================================================> Iepriekš minētajā MSIL ir opkodi, kuru garums ir viens vai divi baiti. Bāzes klašu deklarācijas, no kurām tiek mantotas visas pārējās klases, ir ietvertas mscorlib.dll . Metodē Main(), instrukcija ldstr ielādē virkni techcodeview.com uz kaudzes. Tad statiskā System.Console.Writeline tiek izsaukta funkcija un virkne tiek izlaista no steka. Visbeidzot, ret instrukcija signalizē par funkcijas izsaukuma beigām.
Tad .ctor( ) priekšraksts ietver noklusējuma konstruktoru bez parametriem klasei Demo. Šo konstruktoru automātiski izveido nestatiskās klases Demo kompilators. Izsaukuma instrukcija nodod bāzes objekta konstruktoram, un ret instrukcija signalizē par funkcijas izsaukuma beigām.