Společný středně pokročilý jazyk

Common Intermediate Language ( zkráceně CIL ) je "vysokoúrovňový assembler" virtuálního stroje .NET . Zprostředkující jazyk vyvinutý společností Microsoft pro rozhraní .NET Framework . Kompilátor CIL JIT je součástí CLR ( c ommon  l anguage r untime ), běžného spouštěcího prostředí pro programy napsané v jazycích .NET . Jazyk se dříve nazýval „ Microsoft Intermediate Language (MSIL) “, ale byl přejmenován, aby vytvořil standard „ECMA-335“.

Všechny kompilátory , které podporují platformu .NET , musí překládat kód z jazyků vysoké úrovně platformy .NET do CIL. Zejména kód CIL generují všechny kompilátory Microsoft .NET zahrnuté ve vývojovém prostředí Microsoft Visual Studio ( C# , Managed C++ , Visual Basic .NET , Visual J# .NET ).

CIL se podobá jazyku symbolických instrukcí v syntaxi a mnemotechnických pomůckách . Lze si to představit jako assembler virtuálního stroje .NET. Jazyk CIL zároveň obsahuje některé konstrukce na poměrně vysoké úrovni, které jej povyšují nad úroveň assembleru pro jakýkoli skutečný stroj a je jednodušší psát kód přímo v CIL než v assembleru pro skutečné stroje. Proto lze CIL považovat za jakýsi „high-level assembler“.

Jazyk CIL je také často označován jednoduše jako IL z angličtiny.  i nintermediate l anguage  – doslova „středně pokročilý jazyk“.

Syntaxe a mnemotechnika jazyka CIL jsou popsány standardem ECMA-335. Specifikace CIL je nedílnou součástí obecnější specifikace - specifikace CLI ( anglicky  c ommon l anguage i nfrastructure ).

Ukázkový kód

Následující program je napsán v CIL a výstupem je řetězec " Ahoj, světe !".

.assembly Dobrý den, {} .method public static void Main() cil spravováno { .Vstupní bod .maxstack 1 ldstr "Ahoj světe!" call void [mscorlib]System.Console::WriteLine(string) ret }

Následující program je napsán v C# .

static void Main ( string [] args ) { for ( int i = 2 ; i < 1000 ; i ++ ) { for ( int j = 2 ; j < i ; j ++ ) { if ( i % j == 0 ) goto external ; } Konzole . WriteLine ( i ); vnější :; } }

Zvažte kód CIL, do kterého se kompiluje výše uvedený kód C# .

.montážní prvočísla{} .method private hidebysig static void Main(string[] args) cil managed { .Vstupní bod .maximální zásobník 2 .locals init(int32 V_0, int32 V_1) ldc.i4.2 stloc.0 // v_0=2 br.s IL_001f IL_0004: ldc.i4.2 stloc.1 // v_1=2 br.s IL_0011 IL_0008: ldloc.0 // V_0 ldloc.1 // V_1 rem // V_0 % V_1 brfalse.s IL_001b ldloc.1 //v_1 ldc.i4.1 přidat stloc.1 // v_1+=1 IL_0011: ldloc.1 //if v_1<=v_0 ldloc.0 blt.s IL_0008 ldloc.0 call void [mscorlib]System.Console::WriteLine(int32) IL_001b: ldloc.0 //v_0 ldc.i4.1 přidat stloc.0 //v_0+=1 IL_001f: ldloc.0 ldc.i4 0x3e8 blt.s IL_0004 //if v_0<=1000 ret }

Microsoft Visual Studio IDE je dodáváno s nástrojem , který vám umožňuje zobrazit kód CIL. ve výchozím nastavení se instaluje do složky " C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools " (přesná cesta závisí na bitové verzi operačního systému a verzi .NET Framework ) .ildasmildasm