close

Gemeinsame Zwischensprache

Zur Navigation gehen Zur Suche gehen

Common Intermediate Language (CIL, ausgesprochen „sil“ oder „kil“) (früher Microsoft Intermediate Language oder MSIL genannt) ist die niedrigste menschenlesbare Programmiersprache in der Common Language Infrastructure und im .NET Framework . Die .NET Framework-Sprachen kompilieren zu CIL. CIL ist eine objektorientierte Assemblersprache und basiert auf Stacks . Es wird von einer virtuellen Maschine ausgeführt . Die wichtigsten .NET-Sprachen sind C# , Visual Basic .NET , C++/CLI und J# .

CIL war während der Testversionen der .NET-Sprachen ursprünglich als Microsoft Intermediate Language (MSIL) bekannt. Aus diesem Grund wird CIL oft als MSIL bezeichnet. Es ist möglich, diese Sprache auf GNU/Linux -Plattformen auszuführen, dank des Mono-Projekts , das eine virtuelle Maschine implementiert, die .NET ähnelt, aber freie Software ist.

Allgemeine Informationen

Bei der Kompilierung von .NET - Programmiersprachen wird statt plattform- oder prozessorspezifischer Objektcode der Quellcode in CIL-Code konvertiert . CIL ist ein plattformunabhängiger Befehlssatz , der auf jeder CPU ausgeführt werden kann.

CIL-Anweisungen

Der CIL-Zwischencode enthält eine Reihe von Anweisungen für die folgenden Aufgabengruppen:

Kompilierung zur Laufzeit

Die Just -in-Time-Kompilierung (JIT) beinhaltet das Umwandeln von Zwischencode in Code, der sofort von der CPU ausgeführt werden kann . Die Konvertierung erfolgt schrittweise während der Ausführung des Programms. Die JIT-Kompilierung bietet umgebungsspezifische Optimierung, Laufzeittypsicherheit und Assemblyprüfung. Um dies zu erreichen, untersucht der JIT-Compiler die Metadaten der Assembly auf illegalen Zugriff und behandelt Verstöße entsprechend.

Nativer Bildgenerator

Der native Image Generator (NGEN) erzeugt ein natives Binärimage für die aktuelle Umgebung. Der Bytecode wird entweder vollständig weggelassen oder vor der Ausführung in native CPU-Befehle umgewandelt. Dadurch entfällt der JIT-Overhead auf Kosten der Portabilität; Wenn ein von NGEN generiertes Image in einer nicht unterstützten Umgebung ausgeführt wird, verwendet das .NET-Framework automatisch den JIT-Compiler.

NGEN soll die Assemblyausführung beschleunigen, indem der JIT-Kompilierungsprozess zur Laufzeit eliminiert wird, aber in einigen Fällen hat dies aufgrund der Optimierung durch den JIT-Optimierer negative Auswirkungen. Aus diesem Grund wird empfohlen, NGEN nur zu verwenden, nachdem die Anwendungsleistung vor und nach der Verwendung gemessen wurde.

Kompilieren zu .NET Native in der Cloud

Ab April 2014 begann Microsoft mit der Entwicklung der Cloud-Technologie, die erforderlich ist, damit alle Apps in seinem Universal App Store mit .NET Native to Native Code auf Gerätebasis kompiliert werden können. [ 1 ] Dadurch wird die Leistung von Universal Apps in Windows 10 sowohl für Telefone als auch für PCs erheblich verbessert , sodass sie 60 % schneller geöffnet und fortgesetzt werden können und 20 % weniger Speicher benötigen, was schnellere Systemreaktionszeiten ermöglicht. [ 2 ]

Dies wird die Leistung enorm verbessern, insbesondere auf Geräten, bei denen der Speicher- und Prozessorverbrauch kritisch ist, wie z. B. Geräte mit derzeit Windows Phone 8.1 , die Ende 2015 auf Windows 10 Mobile aktualisiert werden . [ 3 ]

Metadaten

Die Metadaten sind Informationen über die kompilierten Klassen. Wie Bibliothekstypen im Komponentenobjektmodell ermöglicht es Anwendungen, Schnittstellen, Klassen, Typen, Methoden und Felder in der Assembly bereitzustellen und zu erkennen. Der Prozess des Lesens von Metadaten wird als Reflektion bezeichnet .

CIL-Ausführung

  • Der Quellcode wird in die Common Intermediate Language konvertiert und eine .NET-Assembly erstellt.
  • Bis zur Ausführung einer .NET-Assembly wird ihre CIL durch den JIT-Compiler der Common Language Runtime geleitet, um nativen Code zu generieren. (Der NGEN-Build entfernt diesen Schritt zur Laufzeit.)
  • Der native Code wird vom Prozessor des Computers ausgeführt.

Referenzen

  1. „Innerhalb von .NET Native . Kanal 9. 2. April 2014 . Abgerufen am 13. Oktober 2015 . 
  2. „Microsoft .NET Native“ (auf Englisch) . Microsoft. 10. Juli 2015 . Abgerufen am 13. Oktober 2015 . 
  3. ^ "Das Update auf Windows 10 Mobile würde laut Lumia Spanien im November eintreffen" . Microsoft-Insider. 8. Oktober 2015 . Abgerufen am 13. Oktober 2015 . 

Externe Links