Ist der gcc C-Compiler in C selbst geschrieben? Oder steht es in der Versammlung? Wenn der Compiler in C geschrieben ist, mit welchem Compiler wird dann der Compilercode kompiliert?
c
gcc
compiler-construction
Euphorie83
quelle
quelle
Antworten:
Die spezifische Geschichte von gcc finden Sie im GCC-Wiki . Der allgemeinere Punkt ist, dass Compiler im Allgemeinen ursprünglich mit einem anderen Compiler kompiliert werden, bis sie leistungsfähig genug sind, um sich selbst zu kompilieren. Alternativ ist es möglich, einen Basis-Compiler zu schreiben, der eine Teilmenge Ihrer Funktionen in Assembler verarbeiten und von dort aus aufbauen kann. Aber auch dies wird fast nie mehr benötigt. Es stehen zahlreiche Compiler in verschiedenen Sprachen zur Verfügung. Selbst als Stephen Johnson pcc schrieb (einer der ersten C-Compiler), gab es neben vielen anderen Sprachen auch Compiler für B. gcc hatte mehrere Compiler zur Auswahl, um es ursprünglich zu erstellen, und RMS sagt, dass er den Pastel-Compiler zumindest während seiner anfänglichen Entwicklung verwendet hat.
Denken Sie daran, dass ein C-Compiler nicht in C geschrieben werden muss. Sie können ihn in Perl schreiben, wenn Sie möchten. Es ist nicht erforderlich, dass ein Compiler für eine bestimmte Plattform ursprünglich auf dieser Plattform geschrieben wurde (eingebettete Systeme werden fast immer auf einem anderen System kompiliert). Es gibt also viele Möglichkeiten, sich selbst in die Knie zu zwingen.
Diese Frage enthält einige interessante Feinheiten im Zusammenhang mit der ersten Instanz des Bootstrapings des Compilers. Wenn Sie sehr schlau wären, könnten Sie diesen Bootstrap nutzen, um etwas Unglaubliches, Brillantes und Furchterregendes zu tun .
quelle
Ursprünglich war es in einer Assemblersprache geschrieben, dann begann es selbst mit Hundefutter.
quelle
Obwohl dies offensichtlich nur ein sehr grober Indikator ist, fand ich diese schnelle Auflistung im
gcc-5.1.0-src/gcc/
Verzeichnis interessant. Dieses Verzeichnis enthält die Hauptquellen von GCC selbst (mit Ausnahme von Laufzeitbibliotheken).Hier sind die höchsten Dateizahlen (über 100), gruppiert nach Erweiterungen, die von C- und C ++ - Dateien dominiert werden.
Bitte beachten Sie, dass sich heutzutage
GCC
auf die GNU Compiler Collection bezieht, nicht nur auf den GNU C Compiler.Referenz: https://gcc.gnu.org/onlinedocs/gccint/gcc-Directory.html
quelle