Heim > Artikel > Backend-Entwicklung > Eingehende Analyse der C#-Ausführungsprinzipien (Bilder und Texte)
Der Inhalt dieses Artikels ist eine ausführliche Analyse (Bilder und Texte) der C#-Ausführungsprinzipien. Ich hoffe, dass er für Sie hilfreich ist.
Warum kann Unity3D C# ausführen, welche Beziehung besteht zwischen C# und Mono und welche Beziehung besteht zwischen Mono und .Net Framework? Lassen Sie uns ausführlich über dieses Thema sprechen!
Beginnen Sie mit dem Prinzip der Kompilierung
Stellen Sie den Compiler in einem Satz vor: Ein Compiler konvertiert Quellcode (Quellsprache), der in einer bestimmten Programmiersprache geschrieben ist, in eine äquivalente Form einer anderen Programmiersprache (Zielsprache). des Programms. Normalerweise konvertieren wir eine bestimmte Hochsprache (wie C, C++, C#, Java) in eine Niedrigsprache (Assemblersprache, Maschinensprache).
Der Compiler arbeitet in Form einer Pipeline und ist in mehrere Stufen unterteilt: Quellcode → lexikalische Analyse → Syntaxanalyse → semantische Analyse → Zielcode → Link → ausführbare Datei. Moderne Compiler werden komplexer sein und in der Mitte wird mehr Verarbeitung hinzugefügt, z. B. Präprozessoren, Zwischencodegenerierung, Codeoptimierung usw.
Was ist eine virtuelle Maschine?
Eine virtuelle Maschine (VM), einfach verstanden, bedeutet dass es ein bestimmtes Programm von Anweisungen ausführen kann. Um Anweisungen auszuführen, sind auch einige unterstützende Einrichtungen erforderlich, wie z. B. Register, Stapel usw. Eine virtuelle Maschine kann sehr komplex sein, so komplex, dass sie echte Computerhardware simuliert, oder sie kann so einfach sein, dass sie nur Addition, Subtraktion, Multiplikation und Division ausführen kann.
Im Bereich der Compiler führen virtuelle Maschinen normalerweise eine Sprache aus, die als Zwischencode bezeichnet wird. Der Zwischencode wird von einer Hochsprache in umgewandelt Nehmen wir als Beispiel Java. Was nach der Java-Kompilierung generiert wird, ist keine ausführbare Datei, sondern eine ByteCode-Datei (Bytecode), die den Code von Java enthält Der Quellcode wird in äquivalenten Code in Bytecode-Form umgewandelt. Für die Ausführung dieser Datei ist die Java Virtual Machine (JVM) verantwortlich.
Die Art und Weise, wie die virtuelle Maschine den Zwischencode ausführt, ist in zwei Arten unterteilt: interpretierte Ausführung und JIT (Just-in-Time-Kompilierung). Unter Interpretation und Ausführung versteht man die Ausführung jeder Anweisung einzeln, JIT Der Zwischencode wird zunächst in Maschinencode kompiliert, wenn er ausgeführt wird, und dann wird der Maschinencode ausgeführt. Da der Zwischencode ausgeführt wird, können verschiedene auf verschiedenen Plattformen implementierte virtuelle Maschinen denselben Zwischencode ausführen und so eine plattformübergreifende Umsetzung erreichen.
int run(context* ctx, code* c) { for (cmd in c->cmds) { switch (cmd.type) { case ADD: // todo add break; case SUB: // todo subtract break; // ... } } return 0; }
Zusammenfassend lässt sich sagen, dass die virtuelle Maschine selbst nicht plattformübergreifend ist, aber die Sprache ist plattformübergreifend. Entwickler müssen sich nur um die Entwicklungssprache kümmern und müssen sich nicht darum kümmern, wie sie funktioniert Die virtuelle Maschine ist ebenfalls implementiert Der Grund, warum Java plattformübergreifend sein kann, ist der gleiche wie bei C#. Im weiteren Sinne kann theoretisch jede Sprache plattformübergreifend sein, solange unterstützende Einrichtungen wie ein Compiler oder eine virtuelle Maschine auf der entsprechenden Plattform implementiert sind.
Was ist C# und was ist IL?
C# ist eine von Microsoft eingeführte objektorientierte Programmiersprache auf hoher Ebene, die auf dem .NET-Framework basiert. Microsoft hat diese Sprache im Jahr 2000 veröffentlicht, in der Hoffnung, sie als Ersatz für Java zu verwenden. Eine ausführlichere Einführung finden Sie im C#-Wiki.
C# ist eine Sprachspezifikation, die von Zeit zu Zeit einen kompletten One-Stop-Service bietet einige neue Sprachfunktionen. Auf grammatikalischer Ebene ist C# eine sehr vollständige Sprache, die sehr angenehm zu schreiben ist.
C# Ähnlich wie Java wird C# in eine Zwischensprache (CIL, Common Intermediate Language, auch MSIL genannt) kompiliert Es handelt sich ebenfalls um eine Hochsprache, und die virtuelle Maschine, auf der CIL ausgeführt wird, heißt CLR (Common Language Runtime). Normalerweise setzen wir C#, CIL, CLR sowie eine Reihe grundlegender Klassenbibliotheken von Microsoft namens .Net Framework.
C# wurde geboren, um das Universum zu erobern, aber leider wurde dieses Ziel aufgrund der Schließung von Microsoft nicht erreicht. Natürlich geht es C# jetzt immer noch gut, revitalisiert durch Spiele, durch Unity3D, durch Mono.
.Net Framework vs. Mono
Mono ist eine plattformübergreifende Implementierung von .Net Framework. Mono hat Großartiges geleistet und die CLR auf allen unterstützten Plattformen sowie die vom .Net Framework bereitgestellte Basisklassenbibliothek neu implementiert.
Oben kann die Arbeit von Compile Time tatsächlich direkt die vorhandenen Errungenschaften von Microsoft nutzen, sofern die CLR von Runtime auf anderen Plattformen implementiert ist Die Menge ist nicht nur groß, auch die Kompatibilität muss sichergestellt werden. Es ist ein sehr großes Projekt. Herzlichen Glückwunsch.
C in Unity3D
Unity3D bettet eine virtuelle Mono-Maschine ein, wenn eine virtuelle Maschine einer bestimmten Plattform implementiert wird. Daher verwendet Unity3D streng genommen die virtuelle Mono-Maschine der vom Compiler kompilierte C#-generierte IL-Code.
Unity3D verwendet standardmäßig C# als Entwicklungssprache. Darüber hinaus unterstützt es auch JS und BOO, da Unity3D entsprechende Compiler entwickelt hat, um JS und BOO in IL zu kompilieren.
Zusammenfassung
C# unter Windows verwendet den C#-Compiler von Microsoft, um IL-Code zu generieren und ihn in der CLR auszuführen.
C# generiert auf anderen Plattformen als Windows IL-Code über den Mono-Compiler und führt ihn in der virtuellen Mono-Maschine aus. Sie können den kompilierten IL-Code auch direkt ausführen (kompiliert über eine beliebige Plattform).
Theoretisch kann Ihre Sprache auf jeder Plattform ausgeführt werden, wenn Sie eine Sprache erstellen, einen Compiler für eine bestimmte Plattform implementieren und dann eine virtuelle Maschine implementieren, die den Sprachspezifikationen für alle Plattformen entspricht.
Das obige ist der detaillierte Inhalt vonEingehende Analyse der C#-Ausführungsprinzipien (Bilder und Texte). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!