Prozessoren C#
-
Hallo,
läuft C# auf jedem Prozessor ? Haben sich die Prozessor Hersteller soweit abgesprochen dass ihre Befehlssätze einigermaßen einfach sind ? Architekturspezifische Befehle wird der C# Compiler dann nicht verwenden ?
-
Ach komm, das kannst Du doch besser. Selbst für dich ist das eine viel zu dumme Frage.
-
Ich kann C# auf AMD oder Intel oder Motorola etc. installieren und es läuft.
Folglich muss der Assembler Befehlssatz einigermaßen einheitlich sein.
-
-
Ich weiß dass C# erst in Bytecode übersetzt wird. Aber dieser Bytecode muss dann in Assembler übersetzt werden. Der Compiler der diesen Bytecode übersetzt muss sowohl den Befehlssatz von AMD , Intel oder Motorola kennen .
-
warum macht er so etwas?
-
-
Ich zitiere:
Die Common Language Runtime interpretiert die "Universalsprache" und übersetzt sie in Maschinencode.
-
Unregistrierter Unregistr schrieb:
warum macht er so etwas?
Weil er immer damit seit über 3 Jahren immer noch durchkommt.
-
C# wird interpretiert. Der Bytecode ist fuer alle Maschinen gleich. Der Interpreter uebersetzt diesen zur Laufzeit angepasst an die jeweilige Plattform.
-
knivil schrieb:
Der Interpreter uebersetzt diesen zur Laufzeit angepasst an die jeweilige Plattform.
Ja er übersetzt in Assembler. Und Assembler kann Prozessorspezifisch sein. Da er nicht alle Assemblersprachen kennen kann , überlege ich eben ob es da nicht eine Vereinheitlichung gibt.
-
knivil schrieb:
C# wird interpretiert.
C# wird immer compiliert, und zwar zu MSIL.
Und auch MSIL wird nie interpretiert sondern immer JIT compiliert.
-
Standardisierter Zwischencode, die Common Intermediate Language (CIL) .
-
blurry333 schrieb:
knivil schrieb:
Der Interpreter uebersetzt diesen zur Laufzeit angepasst an die jeweilige Plattform.
Ja er übersetzt in Assembler. Und Assembler kann Prozessorspezifisch sein. Da er nicht alle Assemblersprachen kennen kann , überlege ich eben ob es da nicht eine Vereinheitlichung gibt.
MSIL -> x86_64, ....
Er kennt natürlich soviele spezifischen Befehler, die für eine Ausführung auf diesen Target benötigt wird.
-
Nun, ich wollte es einfach halten. Bitte verstehe: Der Interpreter ist plattformspezifisch. D.h. ein Interpreter fuer Motorola kann keinen Maschinencode fuer x86 erzeugen.
Und auch MSIL wird nie interpretiert sondern immer JIT compiliert.
Die Frage 'wo hoert compilieren auf', 'wo faengt interpretieren an' und 'was ist nativ' ist eher philosophischer Natur.
überlege ich eben ob es da nicht eine Vereinheitlichung gibt
Nein! Gewiss gibt es was zum Addieren oder Subtrahieren etc. , aber das Codewort unterscheidet sich von Plattform zu Plattform. Genauso wie es in vielen Sprachen Aepfel gibt, aber in anderen Sprachen/Prozessoren anders ausgedrueckt werden.
-
knivil schrieb:
Nun, ich wollte es einfach halten. Bitte verstehe: Der Interpreter ist plattformspezifisch. D.h. ein Interpreter fuer Motorola kann keinen Maschinencode fuer x86 erzeugen.
Ja, ich weiss.
Trotzdem finde ich es nicht gut was falsches hinzuschreiben, und "C# wird interpretiert" ist, sorry, falsch. Keine philosophische Grauzone, sondern falsch.Also hab ich es korrigiert. Problem?
-
Kein Problem.