[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14. コンパイラの各パスとソースファイル

コンパイラ全体の制御構造は、‘toplev.c’ に記述されている。 このファイルは、初期化、引数の解析、ファイルのオープン/クローズ、 各パスの順次実行を受け持つ。

構文解析パスは一度だけ起動され、入力全体を構文解析する。 関数が文単位で構文解析されるにつれ、その関数に対する RTL 中間コードが、 生成される。各文は、構文木として読み込まれ、その後 RTL に変換される。 その後、その文の構文木用のメモリ領域が再利用される。 型(とその大きさを表す式)、宣言、結合の概略と何重に入れ子になっているかの 表現は、関数のコンパイルが完了するまで残っている。これは、全て デバッグ情報を出力するのに必要である。

構文解析パスが、完全な関数定義か最上位の宣言を読み込む度に、 関数 rest_of_compilationrest_of_decl_compilation を 呼び出す。これらの関数は ‘toplev.c’ にあり、 アセンブラ言語の出力で終わる、以後必要な全ての処理に責任がある。 コンパイラの他の全てのパスは、順番に、rest_of_compilation の中で 実行される。この関数がある関数定義をコンパイルする処理から戻ると、 その関数定義のコンパイルに使われた記憶領域はインライン関数でない限り 完全に解放される (see section An Inline Function is As Fast As a Macro)。

以下にコンパイラの全パスとそのソースファイルの一覧を示す。 また、‘-d’ で始まるオプションで要求されるデバッグダンプについての 解説も含めた。

さらに幾つかのファイルが、全ての、あるいは多くのパスで使われる。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated using texi2html 1.78.