コンパイルプロセスは、通常5つの段階に分かれています。

以下は、コンパイルプロセスの5つの段階の詳細な説明です。

プログラムのコンパイル作業では、入力ソースプログラムから出力ターゲットプログラムまでのプロセス全体が非常に複雑です。しかし、そのプロセスに関しては、人々の自然言語の直接翻訳と多くの類似点があります。あるタイプのテキストを別のタイプのテキスト(英語のセクションを中国語に翻訳するなど)に翻訳する場合、通常、次の手順を実行する必要があります。

 

(1)まず、文中の単語を特定します。

 

(2)文の文法構造を分析する。

 

(3)文の意味に応じて事前翻訳を行う。

 

(4)翻訳を変更します。

 

(5)最終的な翻訳を書く。

 

同様に、コンパイラーの作業プロセスは、字句解析、文法解析、意味解析、中間コード生成、最適化、およびターゲットコード生成の5つのステージに分割できます。

 

第1段階:字句解析

 

字句解析のタスクは、ソースプログラムを入力し、ソースプログラムを構成する文字列をスキャンして分解し、基本的な単語(begin、end、if、for、など)のような個々の単語(単語記号または省略記号とも呼ばれる)を識別するwhile)、識別子、定数、演算子、区切り文字(句読点、左および右角かっこ)。

 

単語記号は言語の基本的なコンポーネントであり、人々がプログラムを理解して書くための基本的な要素です。これらの要素を特定して理解することは、間違いなく翻訳の基盤です。英語を中国語に翻訳する場合のように、英語の単語が理解できない場合、正しい翻訳について話すことはできません。字句解析段階の作業では、言語の字句規則(または単語形成の規則)に従います。字句規則を記述するための効果的なツールは、定期的で効果的なオートマトンです。

 

第2段階:文法分析

 

文法分析のタスクは次のとおりです。語彙分析に基づいて、言語の文法規則に従って、単語記号列は、「句」、「文」、「プログラムセグメント」、「プログラム」などのさまざまな文法単位(文法カテゴリ)に分解されます。 「ちょっと待って。文法分析により、入力文字列全体が文法的に正しい「プログラム」を構成するかどうかが判断されます。文法分析は、言語の文法規則に従います。文法規則は通常、文脈自由文法によって記述されます。字句分析は線形分析ですが、文法分析は階層分析です。例:Z = X + 0168 * Y;は「代入ステートメント」を表し、その代表はX + 0168 * Yを表す「算術式」です。したがって、文法分析のタスクは、X + 0.618 * Yを算術式として認識することであり、同時に、上記の10倍のシンボル文字列全体が代入ステートメントのカテゴリに属します。

 

第3段階:単語の意味分析と中間コードの生成

 

この段階でのタスクは、文法分析によって識別されたさまざまな文法カテゴリの意味を分析し、予備翻訳(中間コードの生成)を実行することです。この段階には通常、作業の2つの側面が含まれます。まず、変数が定義されているかどうか、型が正しいかどうかなど、各文法カテゴリに対してセマンティックi配置を実行します。セマンティクスが正しい場合、作業の別の側面、つまり中間コードの解釈。この段階では、言語の意味規則に従います。属性文法は、セマンティックルールを記述するためによく使用されます。「翻訳」はここでのみ行われます。いわゆる「中間コード」は、明確で扱いやすい署名システムであり、通常、特定のハードウェアから独立しています。この種の表記システムは、現代のコンピューターの命令形式にやや近いか、または現代のコンピューターの機械命令に簡単に変換できます。たとえば、多くのコンパイラは中間コードとして「3つのアドレス命令」と非常によく似た「4進数」を使用します。その意味は、「左と右のオペランド」(「演算子」で指定)に対して何らかの演算を実行し、その演算で得られた値を「結果」として保持することです。中間コードとして四元数を使用する場合、中間コードのタスクは、言語の文法規則に従って、さまざまなカテゴリを四次シーケンスに変換することです。一般に、中間コードは特定のハードウェアに依存しないシンボルシステムです。4進法に加えて、一般的に使用されるミドル叔母は、3進法、間接3進法、逆ポーランド記号、ツリー表現なども持っています。

 

第4段階:最適化

 

最適化のタスクは、前のステージで生成された中間コードを処理して変換し、最終ステージでより効率的な(時間とスペースを節約する)ターゲットコードを生成することです。最適化の主な側面は、PRの部分式の抽出、ループの最適化、不要なコードの削除などです。「並列操作」を容易にするために、コードを並列化することもできます。最適化が続く原則は、プログラムの同等の変換規則です。

 

第5段階:オブジェクトコードの生成

 

この段階でのタスクは、中間コード(または最適化)を特定のマシンで低レベル言語コードに変換することです。この段階で最終的な翻訳が実現され、その作業はハードウェアシステムの構造と機械語命令の意味に依存します。この段階での作業は、ハードウェアシステムの機能コンポーネントの設計から使用、機械命令の選択、さまざまなデータ型変数のストレージスペースの割り当て、レジスタやバックアップレジスタのスケジューリングなど、非常に複雑です。

 

オブジェクトコードは、絶対命令コード、再配置可能命令コード、またはアセンブリ命令コードの形式にすることができます。ターゲットコードが絶対命令コードの場合、そのターゲットコードをすぐに実行できます。ターゲットコードがアセンブリ命令コードの場合、実行前にアセンブラでアセンブルする必要があります。ほとんどの実用的なコンパイラーによって生成されたオブジェクトコードが再配置可能な命令コードになっていることを指摘しておく必要があります。この種類のターゲットコードは、実行前に接続アセンブリプログラムを使用して各ターゲットモジュール(システムが提供するライブラリ関数を含む)を接続し、メインメモリ内のプログラム変数(または定数)の場所を特定して、指定された場所にロードする必要があります開始アドレスは、実行可能な絶対命令コードプログラムになります。

元の記事を2件公開しました 受賞しました2 ビュー395

おすすめ

転載: blog.csdn.net/weixin_43999496/article/details/102802765