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?
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?
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 .
Ursprünglich war es in einer Assemblersprache geschrieben, dann begann es selbst mit Hundefutter.
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.
112 .opt
118 .def
140 .cc
185 .x
250 .exp
353 .md
366 .mm
414 .f
430 .f03
521 .m
625 .a
1082 .go
1371 .h
1602 .ads
1655 .adb
1828 .ada
3860 .f90
11231 .C // C++
23811 .c // C
Bitte beachten Sie, dass sich heutzutage GCC
auf die GNU Compiler Collection bezieht, nicht nur auf den GNU C Compiler.
6.3 Das Unterverzeichnis gcc
Das gcc-Verzeichnis enthält viele Dateien, die Teil der C-Quellen von GCC sind, andere Dateien, die im Rahmen des Konfigurations- und Erstellungsprozesses verwendet werden, sowie Unterverzeichnisse, einschließlich Dokumentation und Testsuite.
Referenz: https://gcc.gnu.org/onlinedocs/gccint/gcc-Directory.html