コンパイラ,コンパイルの過程

スポンサーリンク

鍛錬 103

コンパイラ,コンパイルの過程

コンパイルが行われる過程や、ワンパスコンパイラ、多パスコンパイラなどの、コンパイラの種類についてです。

スポンサーリンク

コンパイルの順序

コンパイルは、以下の順序で行われます。

  1. 字句解析
  2. 構文解析
  3. 意味解析
  4. コード最適化
  5. コード生成

各項目について

以下は、前述したコンパイルの順序について、C言語を例に説明しています。

今回は、C言語で記述された原始プログラムが、以下の場合について説明しています。

result = i + arg * 7
1. 字句解析

字句解析を実行します。

“result” “=” “i” “+” “arg” “*” “7”

2. 構文解析

C言語の構文規則に従い、

“result” “=” “i” “+” “arg” “*” “7”

の構文的な構造を表す解析木を作成します。

3. 意味解析

記号表を作成します。

(番地は適当な値を記述しています。)

変数名 番地
result int 996
i int 984
arg int 988
4. コード最適化

コードの効率を上げます。

5. コード生成

構文解析で作成した解析木を、機械命令の列に置き換えます。

その際、変数や定数を、意味解析で作成した記号表の情報に従い、主記憶の番地に置き換えます。
 
以上が、コンパイルの順序です。上記の 1 ~ 5 により、目的コードが生成されます。

スポンサーリンク

中間言語プログラムについて

コンパイラは目的コードを生成する際、一度で目的コードを作成するとは限らず、1つもしくは複数の中間言語プログラムを作成します。

中間言語の各段階をパスといい、以下に示す通り、パスの数によりコンパイラの名称が異なります。

ワンパスコンパイラ

パスの数は 1 つであり、中間言語を使用することなく、原子プログラムを先頭から処理して目的コードを生成します。

コード最適化には不向きです。

多パスコンパイラ

複数のパスを経て目的コードを生成します。

コード最適化に向いています。

タイトルとURLをコピーしました