Was ist ein Frontend für den GCC-Compiler?

785
yoyo_fun

Von dem, was ich weiß, ist ein Frontend eine GUI für ein Programm oder eine Website, die eine Webanwendung im "Backend" hat.

Ich bin verwirrt, dass es für den GCC (GNU C Compiler) viele Frontends gibt, aber es scheint, dass es in diesem Zusammenhang unterschiedliche Definitionen für "Frontend" gibt.

0

1 Antwort auf die Frage

1
David Schwartz

Ein GCC-Frontend verwandelt Code in eine interne Zwischenform, die von GCC verwendet wird. Ein GCC-Backend verwandelt diese interne Zwischenform in die endgültige Form, die der Compiler ausgibt.

Wenn Sie beispielsweise ein C ++ - Frontend und ein Java-Frontend haben, können Sie Eingaben in C ++ und Java akzeptieren. Wenn Sie über ein x86-Back-End und ein MIPS-Back-End verfügen, können Sie ausführbare Dateien für x86- und MIPS-CPUs erstellen.

Wenn Sie Go-Unterstützung für GCC hinzufügen möchten, schreiben Sie ein Go-Frontend für GCC. Dann könnten Sie für jede Plattform, die GCC unterstützt, Go-Code kompilieren.

Wenn Sie GCC Unterstützung für eine neue CPU hinzufügen möchten, schreiben Sie ein neues Backend für diese CPU. Dann könnten Sie Code für diese CPU in jeder Sprache erzeugen, die GCC unterstützt.

aber ich dachte, Java kompiliert zu Bytecode, der tragbar und interpretiert ist yoyo_fun vor 7 Jahren 0
Es tut. Java ist also sowohl ein Frontend (Quellcode muss in ein internes Format umgewandelt werden) als auch ein Backend (internes Format muss in eine ausführbare Ausgabe umgewandelt werden). David Schwartz vor 7 Jahren 0
i, obwohl Java Xode nie in ausführbare Dateien umgewandelt wurde, sondern in Code, der von Java Virtual Machine interpretiert wird yoyo_fun vor 7 Jahren 0
@yoyo_fun Das ist nur eine Frage der Definitionen. IMO: Wenn Sie es nicht analysieren müssen und ausführen können und es nicht für Menschen lesbar ist, ist es eine ausführbare Datei. David Schwartz vor 7 Jahren 0
Aber können von gcc erstellte Java-Programmdateien ausgeführt werden, ohne dass eine Java Virtual Machine installiert werden muss? yoyo_fun vor 7 Jahren 0
@yoyo_fun Es hängt davon ab, wie Sie "Java Executable" definieren. Theoretisch könnte GCC sein Java-Frontend und sein x86-Backend übernehmen und eine ausführbare Datei erzeugen, die nativ auf x86 laufen würde. Sie müssen jedoch immer noch die Dienste bereitstellen, die die JVM bietet, z. B. Speicherverwaltung. David Schwartz vor 7 Jahren 0
Ich vermute, dass der GCC für Java in diesem Fall nur ein Frontend hat. Ich bezweifle, dass der GCC Java-Bytecode interpretiert. yoyo_fun vor 7 Jahren 0