Common Intermediate Language

Common Intermediate Language (CIL; teilweise auch nur Intermediate Language, IL) ist eine Zwischensprache, in die alle Programme der Common Language Infrastructure übersetzt werden. CIL ist eine objektorientierte Assemblersprache und ist vollständig stackbasiert. Auf dem Zielcomputer wird die CIL von einem Laufzeitsystem (Virtual Execution System) in systemeigenen Programmcode übersetzt, um in CIL vorliegende Programme ausführen zu können.

CIL ist in frühen Entwicklungsphasen des .Net-Frameworks als Microsoft Intermediate Language (MSIL) bezeichnet worden, mit der Standardisierung der Common Language Infrastructure ist diese Bezeichnung aber verworfen worden.

Grundlegende Funktionsweise

Bei der Kompilierung von Quellcode aus .NET-Sprachen wird nicht direkt systemeigener Programmcode erzeugt, sondern in einem ersten Schritt zunächst CIL-Code. In CIL werden die Programmbefehle als eine Folge von Bytewerten (teilweise auch mehr als ein Byte) angegeben. Dieser Code wird auf dem Ausführungsrechner in einem Laufzeitsystem (der Common Language Runtime) zu nativem Maschinencode übersetzt (sogenannte JIT-Kompilierung) und ausgeführt.

Während der Übersetzung werden auch die Sicherheit und die Korrektheit des Codes (Manipulation) überprüft.

NGEN-Kompilierung (Native Image Generation)

Alternativ zur JIT-Kompilierung ist es auch möglich, ein Programm vor dessen Ausführung zu übersetzen. Das Programm Native Image Generator (NGEN) bietet im .NET-Framework diese Möglichkeit. Dies macht die Übersetzung des Programmes zur Laufzeit überflüssig, so dass der Programmstart beschleunigt werden kann.[1] Der vorerzeugte Programmcode kann allerdings nicht auf andere Plattformen übertragen werden. Hier ist wieder eine Neukompilierung mit NGEN notwendig oder der Rückfall auf den JIT-Compiler.

Auch ein nativ kompiliertes Programm benötigt immer die Laufzeitumgebung, da wesentliche Metadaten nicht Teil des nativen Programmabbildes werden. Somit wird lediglich die JIT-Kompilierung überflüssig.

CIL als Sprache

Es ist möglich, den CIL-Zwischencode durch assemblerähnliche Befehle zu repräsentieren und so auch direkt Programme in CIL zu programmieren.

Siehe Hallo-Welt-Beispiel in CIL.

Einzelnachweise

  1. Surupa Biswas: Die Leistungsvorteile durch NGen. In: Microsoft. 17. Juni 2009, abgerufen am 29. Januar 2025.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.