Einführung in C # -Compiler

In Artikel C # -Compiler ist Compiler ein Softwareprogramm, das den Quellcode (den Code, den jeder Entwickler in einer beliebigen Sprache geschrieben hat) in eine maschinelle Lernsprache konvertiert, damit er vom Prozessor verstanden werden kann. Der Prozessor ist der wichtigste Teil des Computers, der nur Maschinencodes versteht. Daher ist es obligatorisch, Sprachcodes in Maschinencodes umzuwandeln.

In C # führen wir die Compiler aus, sie nehmen Code als Eingabeparameter und führen eine Verarbeitung durch, nachdem sie die Ausgabe in der Zwischensprache bereitgestellt haben. Diese Ausgabe wird in * .dll- oder * .exe-Dateien gespeichert

Nach der Generierung der Zwischensprache 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 ändert. Wenn wir auf die EXE-Datei doppelklicken, wird der JIT-Compiler aufgerufen und kompiliert den IL-Code zu diesem Zeitpunkt. Deshalb heißt er JUST-IN-TIME (JIT).

Die Kompilierung kann implizit oder explizit erfolgen. Die implizite Kompilierung ist eine zweifache Kompilierung, bei der zunächst IS und anschließend Maschinensprache kompiliert werden. Dieser Prozess wird als JIT-Kompilierung oder JUST-In-Time-Kompilierung bezeichnet. JIT unterstützt mehrere Plattformen und beschleunigt die Ausführung des Codes.

Arten von Just-In-Time-Compilern

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, der zur Laufzeit erforderlich ist. 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 benötigt werden. Diese Methoden werden jedoch entfernt, wenn sie nicht benötigt werden. In JIT wird zur Laufzeit nur die erforderliche Methode kompiliert, daher wird weniger Speicher benötigt.

Im obigen Diagramm

1-3 Schritte werden zur Kompilierungszeit ausgeführt

3-5 Schritte werden zur Laufzeit ausgeführt.

Wenn wir also diese beiden Fehlertypen ausführen, tritt ein Fehler auf.

Laufzeitfehler und Compilerfehler

  • Compiler-Fehler: Diese Art von Fehler tritt im C # -Compiler selbst auf. Es verhindert, dass der C # -Code in das EXE-Format kompiliert wird. Diese Fehler treten im Wesentlichen aufgrund eines Syntaxfehlers auf. Wenn wir eine Syntax falsch geschrieben haben oder das Komma oder Semikolon fehlen, hat der Compiler dies nicht verstanden und bricht die Verarbeitung ab und löst den Fehler bei der Kompilierung aus. Wir können diese Fehler im Ausgabefenster von IDE sehen. Indem wir diese Fehler untersuchen, können wir unseren Code korrigieren.
  • Laufzeitfehler: Dies sind Echtzeitfehler. Diese treten auf, wenn der Code erfolgreich kompiliert wurde, während der Ausführung jedoch Probleme auftreten. Dies wirkt sich auf das Verhalten des Codes aus. Zum Beispiel können wir sagen, wann wir versuchen, eine beliebige Zahl mit Null zu teilen, wenn ein Laufzeitfehler auftritt. Diese Fehler sind langwieriger als Compilerfehler, da wir in diesem Fall das Verhalten des Codes korrigieren müssen.

Art der C # -Compiler

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:

1. Roslyn

Zuvor war 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 ab, ihre Beziehung zueinander. Als C # - und VB-Teams den Compiler schrieben, standen daher 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, den Quellcode zu ändern.

Das Folgende sind die vier API-Schichten von Roslyn

  • Skript-API: Diese Ebene stellt einen Laufzeit-Ausführungskontext bereit und ermöglicht es uns, C # als Skriptsprache zu verwenden. Sie ist nicht von Visual Studio-Komponenten abhängig.
  • Compiler-API: Diese Ebene wird für die Syntax verwendet und enthält Referenzen für Assemblys und Quellcodedateien. Diese Ebene hat auch keine Abhängigkeiten von Visual Studio-Komponenten.
  • Service-API: Diese Ebene bietet IntelliSense, Formatierung, Alle Referenzen suchen usw. oben im SDK. Es hilft auch beim Verwalten von Informationen über das Projekt und beim Verwalten von Projektabhängigkeiten.
  • Arbeitsbereich-API: Diese Ebene dient hauptsächlich zur Analyse von Code und zum Refactoring über IDEs. Roslyn vereinfacht den Code und besteht aus einer Reihe von APIs wie Compiler und Service, die viele Funktionen wie Formatierung, Intellisense usw. bereitstellen. Es bietet Unterstützung für mehrere Sprachen. Workspace-APIs bieten umfassende Informationen zum Quellcode.

2. Mono-Compiler

Mono C # -Compiler basierend auf ECMA-Standards für C #. Es hat mehrere Versionen mit einem Framework wie C # 1.0, 2.0, 3.0, 4.0. Der Mono-Compiler mcs zielt auf das Framework 1.1 ab, gmcs auf das Framework 2.0, während smcs und dmcs auf das Framework 2.1 bzw. 4.0 abzielen.

  • mcs: Unterstützt alle C # 1.1-Funktionen wie anonyme Methoden, nullfähige Typen, feste Puffer, Zugriffsmodifikatoren für Eigenschaften, statische Klassen usw.
  • gmcs : Es unterstützt C # 2.0-Funktionen wie Abfrageausdrücke, Objektinitialisierer, Teilmethoden, Lambda-Ausdrücke, automatisch implementierte Eigenschaften usw.
  • dmcs : Unterstützt C # 4.0-Funktionen, darunter benannte Argumente, generische Typvarianz, Dynamikbindung usw.

Der andere Compiler wie der RemObjects C # -Compiler, der dem C # -Standard gemäß der EMCA-Spezifikation folgt, und andere als GNU C # -Compiler, die C # und .Net implementieren.

Fazit

C # -Compiler ist wie jeder andere Compiler, der Code in Maschinencode kompiliert, damit der Prozessor den Prozess verstehen kann.

Empfohlener Artikel

Dies war eine Anleitung zum Data Mining-Tool. Hier diskutieren wir eine Einführung in C # -Compiler und verschiedene Arten von Just-In-Time-Compilern und C # -Compilern. Sie können auch unsere anderen Artikelvorschläge durchgehen, um mehr zu erfahren -

  1. Python-Compiler
  2. Java-Compiler
  3. Beste C-Compiler
  4. Beste Java-Compiler
  5. Anleitung zum PHP Compiler
  6. Zugriffsmodifikatoren in PHP