Zum Inhalt springen

„Common Intermediate Language“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
interwiki
Kielschlinger (Diskussion | Beiträge)
Linkvorschlag-Funktion: 2 Links hinzugefügt.
 
(29 dazwischenliegende Versionen von 26 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''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 [[Objektorientierung|objektorientierte]] [[Assemblersprache]] und ist vollständig [[Stapelspeicher|stack]]basiert.
'''Common Intermediate Language''' ('''CIL'''; teilweise auch nur '''Intermediate Language''', '''IL''') ist eine [[Zwischencode|Zwischensprache]], in die alle Programme der [[Common Language Infrastructure]] übersetzt werden. CIL ist eine [[Objektorientierung|objektorientierte]] [[Assemblersprache]] und ist vollständig [[Stapelspeicher|stack]]basiert.
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.
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 von [[.NET]] als '''Microsoft Intermediate Language''' (MSIL) bezeichnet worden, mit der [[Standard]]isierung der [[Common Language Infrastructure]] ist diese Bezeichnung aber verworfen worden.
CIL ist in frühen Entwicklungsphasen des [[.Net-Framework]]s als '''Microsoft Intermediate Language''' ('''MSIL''') bezeichnet worden, mit der [[Standard]]isierung der [[Common Language Infrastructure]] ist diese Bezeichnung aber verworfen worden.


== Grundlegende Funktionsweise ==
== Grundlegende Funktionsweise ==
Bei der Kompilierung von [[Quelltext|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-Compiler|JIT]]-Kompilierung) und ausgeführt.

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 zu nativem [[Maschinencode]] übersetzt ([[JIT-Compiler|Just in time (JIT)]] Kompilierung) und ausgeführt.


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


== NGEN (Native Image Generator) Kompilierung ==
== 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.<ref>{{Internetquelle |url=http://msdn.microsoft.com/de-de/library/bb978898.aspx |titel=Die Leistungsvorteile durch NGen |autor=Surupa Biswas |werk=Microsoft |datum=2009-06-17 |abruf=2025-01-29}}</ref> Der vorerzeugte Programmcode kann allerdings nicht auf andere [[Plattform (Computer)|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.
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 daß der Programmstart beschleunigt werden kann.<ref>http://msdn.microsoft.com/de-de/library/bb978898.aspx</ref> Der vorerzeugte Programmcode kann allerdings nicht auf andere [[Plattform_%28Computer%29|Plattformen]] übertragen werden. Hier ist wieder eine Neukompilierung mit NGEN notwendig oder der Rückfall auf den JIT-Kompiler.

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 ==
== 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 [[Liste von Hallo-Welt-Programmen/Programmiersprachen#CIL|Hallo-Welt-Beispiel in CIL]].
Es ist möglich, den CIL-Zwischencode durch assemblerähnliche Befehle zu repräsentieren und so auch direkt in CIL Programme mit einem CIL-Assembler zu programmieren.

Siehe [[Liste_von_Hallo-Welt-Programmen/Programmiersprachen#CIL|Hallo Welt Beispiel in CIL]].

== Weblinks ==

<references/>


== Einzelnachweise ==
[[Kategorie:.Net]]
<references />


[[Kategorie:.NET]]
[[en:Common Intermediate Language]]
[[es:MSIL]]
[[fr:Common Intermediate Language]]
[[he:MSIL]]
[[hu:Common Intermediate Language]]
[[id:Microsoft Intermediate Language]]
[[it:Common Intermediate Language]]
[[ja:共通中間言語]]
[[pl:Common Intermediate Language]]
[[ru:Microsoft Intermediate Language]]
[[zh:微软中间语言]]

Aktuelle Version vom 10. April 2025, 09:01 Uhr

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

[Bearbeiten | Quelltext bearbeiten]

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)

[Bearbeiten | Quelltext bearbeiten]

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

[Bearbeiten | Quelltext bearbeiten]

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

[Bearbeiten | Quelltext bearbeiten]
  1. Surupa Biswas: Die Leistungsvorteile durch NGen. In: Microsoft. 17. Juni 2009, abgerufen am 29. Januar 2025.