Kompilieren in MSIL

Beim Kompilieren in verwalteten Code übersetzt der Compiler den Quellcode in MSIL (Microsoft Intermediate Language), ein prozessorunabhängiger Satz von Anweisungen, die auf einfache Weise in systemeigenen Code konvertiert werden können. MSIL enthält Anweisungen zum Laden, Speichern, Initialisieren und Aufrufen von Methoden für Objekte sowie Anweisungen für arithmetische und logische Operationen, Ablaufsteuerung, direkten Speicherzugriff, Ausnahmebehandlung und andere Operationen. Bevor Code ausgeführt werden kann, muss MSIL in prozessorspezifischen Code konvertiert werden, i. d. R. durch eine JIT-Kompilierung. Da die Common Language Runtime für jede unterstützte Computerarchitektur mindestens einen JIT-Compiler bereitstellt, können MSIL-Anweisungen unter jeder unterstützten Architektur JIT-kompiliert und ausgeführt werden.

Wenn ein Compiler MSIL erstellt, erstellt er auch Metadaten. Metadaten beschreiben im Code vorhandene Typen und enthalten die Definition jedes Typs, die Signaturen der Member jedes Typs, die Member, auf die der Code verweist, sowie weitere Daten, die von der Laufzeit zur Ausführungszeit verwendet werden. MSIL und Metadaten befinden sich in einer PE-Datei (Portable Executable), die auf dem traditionell für ausführbare Inhalte verwendeten, veröffentlichten PE-Dateiformat und COFF (Common Object File Format) von Microsoft beruht und dieses erweitert. Mit diesem für MSIL oder systemeigenen Code sowie für Metadaten ausgelegten Dateiformat kann das Betriebssystem Common Language Runtime-Abbilder erkennen. Da in der Datei Metadaten und MSIL gleichzeitig vorhanden sind, kann sich der Code selbst beschreiben. Dies bedeutet, dass Typbibliotheken oder eine IDL (Interface Definition Language, Schnittstellendefinitionssprache) nicht erforderlich sind. Die Laufzeit sucht und extrahiert die Metadateien aus der Datei je nach Bedarf während der Ausführung.

Siehe auch

Referenz

MSIL Assembler-Tool (Ilasm.exe)

Konzepte

Der verwaltete Ausführungsprozess

Weitere Ressourcen

Metadaten und selbstbeschreibende Komponenten