シングルパスコンパイラとマルチパスコンパイラの違いは何ですか

目次:

Anonim

NS 主な違い シングルパスコンパイラとマルチパスコンパイラの間は、 シングルパスコンパイラは、ソースコードを各コンパイルユニットに1回だけ渡すコンパイラですが、マルチパスコンパイラは、コンパイルを複数のパスに分割します。各パスは、前のパスの結果を続行します。

コンピュータプログラムは、コンピュータが特定のタスクを実行するための一連の命令です。通常、プログラマーは高級プログラミング言語を使用してプログラムを作成します。ただし、コンピューターはこれらの指示を理解していません。そのため、ソースコードを機械語で理解できる機械語に変換する必要があります。コンパイラは、ソースコードをマシンコードに変換するソフトウェアであり、シングルパスコンパイラとマルチパスコンパイラの2種類があります。

シングルパスコンパイラ、マルチパスコンパイラ

シングルパスコンパイラとは

コンパイルプロセスにはいくつかの段階があります。シングルパスコンパイラは、ソーステキストをシングルパスして、コードの解析、分析、生成を1回だけ行います。つまり、ソースコードが各コンパイルユニットを1回だけ通過できるようにします。各コードセクションをすぐに最終的なマシンコードに変換します。

図1:コンパイラ

シングルパスコンパイラの主な段階は、字句解析、構文解析、およびコードジェネレータです。まず、字句解析がソースコードをスキャンし、トークンに分割します。すべてのプログラミング言語には文法があります。これは、言語の構文と法的ステートメントを表します。次に、構文分析により、文法によって記述された言語構成が決定されます。最後に、コードジェネレーターがターゲットコードを生成します。全体として、シングルパスコンパイラはコードを最適化しません。さらに、中間コード生成はありません。

マルチパスコンパイラとは

マルチパスコンパイラは、各段階の後に中間コードを生成しながら、ソースコードの解析、分析、生成などを複数回実行します。プログラムを、ソースコードとマシンコードの間のステップで1つ以上の中間表現に変換します。シーケンシャルパスごとにコンパイルユニット全体を再処理します。

各パスは、前のパスの結果を入力として受け取り、中間出力を作成します。同様に、各パスで、最終パスが最終コードを生成するまでコードが改善されます。マルチパスコンパイラは、中間コード生成、マシン依存のコード最適化、マシン非依存のコード最適化などの追加タスクを実行します。

図2:マルチパスコンパイラ

マルチパスコンパイラには複数の利点があります。それらは機械に依存せず、モジュラー構造を備えています。コード生成は、コンパイルの他のステップから切り離されます。したがって、パスはさまざまなマシンまたはハードウェアで再利用できます。さらに、それはより複雑で表現力豊かな言語を表しています。

シングルパスコンパイラとマルチパスコンパイラの違い

意味

シングルパスコンパイラは、各コンパイルユニットの一部を1回だけ通過し、各コードセクションを最終的なマシンコードに即座に変換するタイプのコンパイラです。マルチパスコンパイラは、プログラムのソースコードまたは抽象構文木を数回処理するコンパイラの一種です。したがって、これらの定義は、シングルパスコンパイラとマルチパスコンパイラの主な違いを説明しています。

スピード

速度は、シングルパスコンパイラとマルチパスコンパイラの主な違いです。マルチパスコンパイラは、各パスが中間ファイルの読み取りと書き込みを行うため、シングルパスコンパイラよりも低速です。

同義語

シングルパスコンパイラはナローコンパイラとも呼ばれ、マルチパスコンパイラはワイドコンパイラと呼ばれます。

範囲

コードの最適化

シングルパスコンパイラとマルチパスコンパイラのもう1つの違いは、コード最適化を備えたマルチパスコンパイラとは異なり、シングルパスコンパイラにはコード最適化がないことです。

中間コード

中間コードは、シングルパスコンパイラとマルチパスコンパイラの違いにもなります。シングルパスコンパイラには中間コード生成はありません。ただし、マルチパスコンパイラには中間コード生成があります。

コンパイル時間

さらに、シングルパスコンパイラは、マルチパスコンパイラと比較して、コンパイルに最小限の時間がかかります。

メモリ消費

また、マルチパスコンパイラのメモリ消費量は、シングルパスコンパイラのメモリ消費量よりも高くなります。したがって、これはシングルパスコンパイラとマルチパスコンパイラのもう1つの違いです。

プログラミング言語

Pascalなどのプログラミング言語はシングルパスコンパイラを使用して実装できますが、Javaなどのプログラミング言語はマルチパスコンパイラを使用して実装できます。したがって、これはシングルパスコンパイラとマルチパスコンパイラのもう1つの違いです。

結論

シングルパスコンパイラとマルチパスコンパイラは、2種類のコンパイラです。シングルパスコンパイラとマルチパスコンパイラの違いは、シングルパスコンパイラはソースコードを各コンパイルユニットに1回だけ渡すコンパイラであり、マルチパスコンパイラはコンパイルを複数のパスに分割し、各パスは前のパスの結果を続行することです。 。

リファレンス:

1.「pass1および2コンパイラ」。 Scribd、Scribd、こちらから入手可能2。 「ワンパスコンパイラ」。ウィキペディア、ウィキメディア財団、2018年3月23日、こちらから入手可能3。 「マルチパスコンパイラ」。ウィキペディア、ウィキメディア財団、2018年2月8日、こちらから入手できます。

画像提供:

1. Commons Wikimedia2を介したI、Surachit(CC BY-SA 3.0)による「コンパイラ」。 Kenstruysによる「マルチパスコンパイラ」– Commons Wikimediaによる自作(パブリックドメイン)

シングルパスコンパイラとマルチパスコンパイラの違いは何ですか