Ein C#-Complier kann als integrierte Komponente definiert werden, die zum Umwandeln des in C# programmierten Codes in einen maschinenlesbaren Sprachcode verwendet wird, der die Ausgabedateien in Form von DLL-Dateien oder EXE-Dateien zurückgibt. C# verfügt über zwei verschiedene Arten von Kompilierungsmethoden, nämlich Common Language Runtime-Kompilierung (CLR) und Just-in-Time-Kompilierung (JIT). Die JIT-Compiler werden weiter in Pre-JIT-Compiler, Normal-JIT-Compiler und Econo-JIT-Compiler unterteilt. Einige der häufig verwendeten Tools für diese Kompilierungszwecke sind C#-Compiler 2.0, C#-Compiler 3.5, C#-Compiler 4.x, Roslyn- und Mono-Compiler.
Nachdem die Zwischensprache generiert wurde, mussten wir diese IL in Maschinencodes konvertieren, da der Prozessor nur Maschinencodes verstand. Deshalb haben wir für diese Konvertierung CLR (Common Language Runtime) verwendet. CLR ist ein Programm, das auf dem Computer ausgeführt wird und den IL-Code mithilfe von Just-In-Time (allgemein als JIT bezeichnet) in Maschinencodes umwandelt. Wenn wir auf die .exe-Datei doppelklicken, wird der JIT-Compiler aufgerufen und kompiliert den IL-Code zu diesem Zeitpunkt, weshalb er JUST-IN-TIME (JIT) heißt.
Die Kompilierung kann implizit oder explizit erfolgen. Bei der impliziten Kompilierung handelt es sich um eine zweifache Kompilierung, bei der zunächst IS kompiliert und anschließend in Maschinensprache kompiliert wird. Dieser Vorgang wird als JIT-Kompilierung oder JUST-In-Time-Kompilierung bezeichnet. JIT unterstützt mehrere Plattformen und beschleunigt die Ausführung des Codes.
Es gibt drei verschiedene Just-In-Time-Compiler
1. Pre-JIT-Compiler
In diesem Compiler gibt es nur einen einzigen Kompilierungsvorgang, da der gesamte Quellcode in den nativen Code kompiliert wird.
2. Normaler JIT-Compiler
In diesem Compiler werden nur die Methoden in Maschinencode kompiliert, die zur Laufzeit benötigt werden. Der Compiler kompiliert diese Methoden, speichert sie im Cache und verwendet dieselbe Methode erneut.
3. Econo JIT-Compiler
In diesem Compiler werden nur die Methoden in Maschinencode kompiliert, die zur Laufzeit erforderlich sind. Diese Methoden werden jedoch entfernt, wenn sie nicht erforderlich sind. In JIT wird zur Laufzeit nur die erforderliche Methode kompiliert, daher ist weniger Speicherverbrauch erforderlich.
Im obigen Diagramm
1–3 Schritte werden zur Kompilierungszeit ausgeführt
3–5 Schritte werden zur Laufzeit ausgeführt.
Wenn wir also ausführen, treten diese beiden Arten von Fehlern auf.
Frühere Microsoft-Compiler wurden als .Net Framework bezeichnet, z. B. C#-Compiler 2.0, C#-Compiler 3.5, C#-Compiler 4.x usw. Diese Compiler wurden nicht in C# geschrieben, oder wir können sagen, dass C# nicht von C# kompiliert wurde. Die anderen Compiler, die danach entstanden sind, sind:
Früher wurde der Compiler in C/C++ geschrieben. Roslyn ist ein Open-Source-.Net-Compiler, in dem der C++-Code ersetzt wird. Es ruft die Arten von Elementen im Code und ihre Beziehung zueinander ab. Da C#- und VB-Teams den Compiler geschrieben haben, stehen für beide Visual Studio-Vorlagen zur Verfügung. Es ermöglicht uns, Code zu schreiben, der eine Quelldatei analysiert, und es ist für uns einfach, Quellcode zu ändern.
Im Folgenden sind die vier API-Ebenen von Roslyn aufgeführt
Mono-C#-Compiler basierend auf ECMA-Standards für C#. Es gibt mehrere Versionen mit einem Framework wie C# 1.0, 2.0, 3.0, 4.0. Der Mono-Compiler mcs zielt auf Framework 1.1 ab, gmcs auf Framework 2.0, während smcs und dmcs auf Framework 2.1 bzw. 4.0 abzielen.
Der andere Compiler wie RemObjects C#-Compiler, der dem C#-Standard gemäß EMCA-Spezifikation folgt, und darüber hinaus gibt es GNU-C#-Compiler, die C# und .Net implementieren.
Der C#-Compiler ist wie jeder andere Compiler, der Code in Maschinencode kompiliert, damit der Prozessor den Prozess verstehen kann.
Das obige ist der detaillierte Inhalt vonC#-Compiler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!