Common Intermediate Language

Common Intermediate Language (CIL) (tidigare kallat Microsoft Intermediate Language eller MSIL) är ett mellanliggande högnivå-assemblyspråk som beskrivs i Common Language Infrastructure (CLI). Alla CLI-kompatibla programspråk kompileras till CIL bytekod. CIL är ett objektorienterat assemblyspråk som är baserad på stack-principen. CIL är plattformsoberoende och exekveras av en virtuell maskin. Bland språk som kompileras till CIL finns C#, Visual Basic .NET, C++/CLI och J#.

CIL gick tidigare under namnet Microsoft Intermediate Language (MSIL) men är sedan standardisering känt som CIL. Trots detta kallas det fortfarande MSIL av många utvecklarna som varit med från början.

Syntax

Common Intermediate Language är stack-baserat dvs. att variablerna som används i en operation sparas på en stack, till skillnad från vanliga assemblerspråk som är register-baserade. Utöver detta så är språket också objektorienterat. Dessa funktioner är integrerade i CIL för att göra det enklare för programmeringsspråken som delar det som ett mellanliggande språk lättare ska kunna interagera med varandra.

Exekvera CIL

  1. Källkoden (skriven i ett .NET-språk) kompileras till CIL och ett .NET Assembly skapas.
  2. Vid exekvering skickas CIL-instruktionerna genom exekveringsmotorns (till exempel CLR) JIT-kompilator och översätts till maskinkod. (NGEN eliminerar det här steget vid körning).
  3. Maskinkoden exekveras av datorns processor.

Exempel

Här är det berömda Hello World-programmet skrivet i CIL.

.assembly HelloWorld{}
.method public hidebysig static void Main() cil managed
{
   .entrypoint
   ldstr "Hello World!"
   call void [mscorlib]System.Console::WriteLine(string)
   ret
}

Se även

  • Java Bytecode

Externa länkar

  • Hello world program in CIL
  • Kenny Kerr's intro to CIL (called MSIL in the tutorial)
  • Common Language Infrastructure (CLI ) - Partition III - CIL Instruction Set
  • Tutorial including CIL (called MSIL in the tutorial) by Aleksey Nudelman
  • Common Language Infrastructure (Standard ECMA-335)
  • Speed: NGen Revs Up Your Performance With Powerful New Features -- MSDN Magazine, April 2005
v  r
.NET Framework
Arkitektur
Base Class Library · Common Language Runtime · Code Access Security · Assembly · Metadata · COM Interop
CLI
Common Language Infrastructure (CLI) · Common Type System · Common Intermediate Language · Virtual Execution System
CLI-programspråk
C# · Visual Basic .NET · C++/CLI (Managed) · J# · JScript .NET