コンパイラのフェーズとパスの主な違いは、フェーズがコンパイルプロセスのステップであるのに対し、パスはコンパイラがソースコード内を通過する回数である点です。
プログラマーは、高級言語でコンピュータ・プログラムを書きます。
これらの言語は、英語と似たような構文で書かれています。
プログラマーはこの言語を理解しやすいが、コンピュータは理解できない。
そのため、ソースコードを機械が理解できるマシンコードに変換する必要がある。
コンパイラは、この変換をサポートする特殊なソフトウェアです。
コンパイラに関連する用語として、フェーズとパスがあります。
コンパイラの位相とは何か
コンパイルプロセスには一連の段階があります。
各段階は、前の段階から入力を受け取ります。
ある段階からの出力は次の段階に進む。
- まず、ソースコードは字句解析を受けます。これは、ソースコードを文字の流れとしてスキャンし、意味のある字句に変換するものです。そして、これらの語彙をトークンの形で表現する。
- 第2段階は構文解析または構文解析です。字句解析で生成されたトークンを入力とし、構文木を作成する。また、トークンの配置をソースコードの文法と照合する。
- 第3段階は意味解析です。第三段階は意味解析であり、解析木がプログラミング言語の規則に沿っているかどうかをチェックする。
- 第四段階は中間コード生成です。第4段階は中間コード生成で、ターゲットマシン用のソースコードの中間コードを生成する。このコードをターゲットマシーンコードに変換することが容易となる。
- 第5段階はコード最適化段階であり、不要なコード行を削除し、資源(CPU、メモリ)を浪費せずにプログラムの実行速度を上げるために文の順序を整理する。
- 最終段階は、コード生成段階です。コード生成器は、中間コードを再配置可能な機械語コード列に変換する。
コンパイラの通過点とは
パスとは、コンパイラがソースコードを通過する回数のことです。
コンパイラには、シングルパスコンパイラとマルチパスコンパイラがあります。
シングルパスコンパイラは、プログラムを1回だけ通過します。
つまり、シングルパスコンパイラでは、ソースコードが各コンパイルユニットを1回だけ通過します。
そして、各コードセクションを直ちに最終的なマシンコードに変換する。
マルチパスコンパイラは、ソースコードを数回通過させる。
つまり、ソースコードが各コンパイルユニットを複数回通過するようにする。
各パスは、前のパスの結果を入力として、中間出力を作成する。
したがって、コードは各パスで改善される。
最終的なコードは、最終パスの後に生成されます。
マルチパスコンパイラは、中間コード生成、マシン依存コード最適化、マシン非依存コード最適化などの追加作業を行う。
コンパイラのフェーズとパスの違い
定義
フェーズとは、コンパイルプロセスにおける単位またはステップを指します。
これに対してパスは、コンパイラがソースコードをターゲットマシーンコードに変換するまでに通過する総回数を指します。
このように、コンパイラのフェーズとパスの主な違いはここにある。
数量/カテゴリー
コンパイラにはシングルパスコンパイラとマルチパスコンパイラの2種類がありますが、コンパイルプロセスには大きく分けて6つのフェーズがあります。
したがって、これもコンパイラのフェーズとパスの違いです。
結論
コンパイラは、この変換をサポートする特別なソフトウェアです。
コンパイラのフェーズとパスの主な違いは、フェーズがコンパイルプロセスのステップであるのに対し、パスはコンパイラがソースコードを通過する回数であることである。