Gcc CコンパイラはC自体で書かれていますか?それとも、アセンブリで書かれていますか?コンパイラがCで記述されている場合、コンパイラコードのコンパイルに使用されるコンパイラは何ですか?
Gccの具体的な履歴は GCC Wiki で提供されています。より一般的な点は、コンパイラーは一般に、コンパイルできるほど強力になるまで、他のコンパイラーでコンパイルされるのが一般的だということです。あるいは、アセンブラーで機能のサブセットを処理できる基本的なコンパイラーを作成し、そこからビルドすることもできます。しかし、これももうほとんど必要ありません。さまざまな言語のコンパイラがたくさんあります。 Stephen Johnsonがpcc(最初のCコンパイラの1つ)を書いていたときでさえ、他の多くの言語とともにBのコンパイラが利用可能でした。 gccには、最初にビルドするために選択するいくつかのコンパイラがあり、RMSは、少なくとも最初の開発時にはパステルコンパイラを使用していたと言います。
CコンパイラーをCで作成する必要はありません。必要に応じてPerlで作成できます。特定のプラットフォーム用のコンパイラをそのプラットフォームで最初に作成する必要はありません(ほとんどの場合、組み込みシステムは他のシステムでコンパイルされます)。そのため、自分自身をブートストラップする方法はたくさんあります。
この質問には、コンパイラのブートストラップの最初のインスタンスに関連する興味深い微妙な点がいくつかあります。あなたが非常に賢いなら、あなたはそれを利用してbootstrapを行うことができます 信じられないほど、素晴らしい、恐ろしい 。
もともとそれはいくつかのアセンブリ言語で書かれていましたが、その後、食べ物自体をドッグし始めました。
これは明らかに非常に大まかな指標にすぎませんが、gcc-5.1.0-src/gcc/
ディレクトリでこの listing を簡単に見つけました。このディレクトリには、GCC自体の主要なソースが含まれています(ランタイムライブラリを除く)。
トップファイル数(100を超える)を拡張子でグループ化したものがCおよびC++ファイルで占められています。
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
最近のGCC
は、GNU Cコンパイラだけでなく、GNU Compiler Collection)を指していることに注意してください。
6.3 gccサブディレクトリ
Gccディレクトリには、GCCのCソースの一部である多くのファイル、構成およびビルドプロセスの一部として使用されるその他のファイル、ドキュメントやテストスイートなどのサブディレクトリが含まれています。