A Common Intermediate Language ( röviden CIL ) a .NET virtuális gép "magas szintű összeszerelője" . A Microsoft által a .NET-keretrendszerhez kifejlesztett köztes nyelv . A CIL JIT fordító a CLR ( c ommon l Anguage r untime ) része, amely a .NET nyelveken írt programok közös végrehajtási környezete . A nyelvet korábban " Microsoft Intermediate Language (MSIL) "-nek hívták, de átnevezték az "ECMA-335" szabvány létrehozására.
Minden .NET platformot támogató fordítónak le kell fordítania a kódot a .NET platform magas szintű nyelveiről CIL-re. A CIL kódot a Microsoft Visual Studio fejlesztői környezetében található összes Microsoft .NET fordító generálja ( C# , Managed C++ , Visual Basic .NET , Visual J# .NET ).
A CIL szintaxisban és mnemonikában hasonlít az assembly nyelvre . Felfogható egy .NET virtuális gép összeszerelőnek. Ugyanakkor a CIL nyelv tartalmaz néhány meglehetősen magas szintű konstrukciót, amelyek bármely valós gép esetén az assembler szintje fölé emelik, és könnyebb közvetlenül CIL-ben kódot írni, mint valódi gépeknél assemblerben. Ezért a CIL egyfajta "magas szintű assemblernek" tekinthető.
A CIL nyelvet gyakran egyszerűen IL-nek is nevezik az angolból. i ntermediate l anguage - szó szerint "köztes nyelv".
A CIL nyelv szintaxisát és mnemonikáját az ECMA-335 szabvány írja le. A CIL specifikáció egy általánosabb specifikáció – a CLI specifikáció ( angol c ommon l anguage i nfrastructure ) – szerves része.
A következő program CIL-ben íródott, és a " Hello, world !" karakterláncot adja ki.
.assembly Szia {} .method public static void Main() cil kezelve { .belépési pont .maxstack 1 ldstr "Szia, világ!" call void [mscorlib]System.Console::WriteLine(string) ret }A következő program C# nyelven íródott .
static void Main ( string [ ] args ) { for ( int i = 2 ; i < 1000 ; i ++ ) { for ( int j = 2 ; j < i ; j ++ ) { if ( i % j == 0 ) ) külső ; _ } Konzol . WriteLine ( i ); külső :; } }Tekintsük azt a CIL kódot, amelyre a fenti C# kód fordít.
.assembly prímszámok{} .method private hidebysig static void Main(string[] args) cil kezelve { .belépési pont .max verem 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 add hozzá 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 add hozzá stloc.0 //v_0+=1 IL_001f: ldloc.0 ldc.i4 0x3e8 blt.s IL_0004 //if v_0<=1000 ret }A Microsoft Visual Studio IDE egy segédprogramot tartalmaz , amely lehetővé teszi a CIL-kódok megtekintését. alapértelmezés szerint a " C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools " mappába van telepítve (a pontos elérési út az operációs rendszer bitjétől és a a .NET-keretrendszer ). ildasmildasm
.HÁLÓ | |
---|---|
Megvalósítások | |
Építészet | |
Infrastruktúra |
|
Microsoft nyelvek | |
Más nyelvek | |
Windows alapok | |
Alkatrészek | |
Összehasonlítások |
|
Jövő technológiái | |
Információs források |