簡単な質問です。CコンパイラをコンパイルするためにCコンパイラが必要な場合...多分アセンブリコードで直接?おそらくカーネルは、Cをアセンブラーに変換してエスカレートするインフラストラクチャを作成するための基本的なツールを提供しますか?これもばかげた質問ですが、CPUとメモリと対話するために0からオペレーティングシステム(私ではない)を設計する方法に本当に興味があります。
2 に答える
ブートストラップ
これは、調べたい場合は、「ブートストラップで自分を引き上げる」というフレーズに由来します。ブートストラップは単純なプロセスですが、多くの作業が必要です。
別の言語で C コンパイラを作成します。
C で C コンパイラを作成します。
手順 1 のコンパイラを使用して、手順 2 のコンパイラをコンパイルします。
C のコンパイラだけでなく、他のコンパイラもブートストラップする必要があります。たとえば、GHCを使用してそれ自体をコンパイルする必要があります。
ブートストラップは、次の両方が当てはまる場合にのみ必要であることに注意してください。
あなたは新しい言語を発明しているので、既存のコンパイラはありません。
コンパイルしている言語でコンパイラを書きたいとします。
これは、オペレーティング システムとは関係ありません。オペレーティング システムを設計している場合は、すでに十分な作業が待っています。新しいオペレーティング システムに C コンパイラがまだない場合は、別のオペレーティング システムからコンパイラをクロスコンパイルできます。これは、数か月または数年ではなく、おそらく数時間または数日の作業です。
これはTiny C Compiler tcc
( http://bellard.org/tcc/ ) のタスクのようです。
これは私が知っている最小の C コンパイラであり、移植すればより大きな C コンパイラをコンパイルできます。また、カスタム システムに移植する方法に関する多数のガイドがあります。