Übersetzt Compiler den Programmcode in Maschinencode (wenn nein, was macht Compiler dann)?

...komplette Frage anzeigen

4 Antworten

Ein Compiler ist einfach nur eine Form von "Übersetzer". Was er wohin übersetzt ist erst mal nicht näher definiert.

Wenn du eine Textdatei in PDF mithilfe von LaTeX umwandelst, wird sie auch (mehr oder weniger) kompiliert.

Und bei Programmiersprachen wird eben der Quelltext in irgendeine andere Form übersetzt. Das Ergebnis muss nicht mal ausführbar sein, denn du kannst z. B. C++ in Java übersetzen, was man dann aber vermutlich nicht mehr kompilieren nennt.

In deinem Fall ist vermutlich die Übersetzung von Quelltext in eine Form von achitektur-spezifischen Byte- oder Maschinen-Code gemeint.

PS: Ich weiß, das meine Definition hinkt, habe jetzt aber plötzlich keine Muße mehr, das Ganze näher auszuführen, denn ich habe jetzt irgendwie wahnsinnigen Appetit auf Johannesbeeren bekommen, und werde mir gleich im Anschluss einige davon einpfeifen! Das interessiert jetzt zwar keinen, ist mir aber egal ... :)

Kommt darauf an welcher Compiler.
Der Java Compiler (in deinen Tags) kompiliert den Code in Java Bytecode für die Java Virtual Machine.
Ein C oder C++ Compiler wie zum Beispiel GCC übersetzt direkt in Maschinensprache für die jeweilige Prozessorarchitektur.

KingOff 16.07.2016, 23:02

Aber allgemein übersetzt der Compiler in Maschinencode und dann der Interpreter leitet quasi die Befehle an CPU weiter zum Ausführen? Ist das so richtig? :-)

0
androhecker 17.07.2016, 13:16

Nein, ein Compiler ist einfach ein Übersetzer, von was zu was ist da nicht festgelegt. Ein Interpreter liest keinen Maschinencode, das macht keinen Sinn, das führt die CPU direkt aus.

0

Klassisch gesehen, ja.

Es gibt heute aber auch Compiler, deren Endergebnis keine Maschinesprache ist, sondern eine andere, meist einfachere Sprache als das Ausgangsprodukt.

Richtig :) 

Der Compiler übersetzt einfach gesagt, den menschlich verständlichen Programmcode einer Hochsprache (wie Java, C ...) in die Maschinensprache.

androhecker 16.07.2016, 16:10

Eben bei Java nicht, da ist das Resultat Java Bytecode.

1

Was möchtest Du wissen?