Product Design, Manufacturing & Innovation Resources
» 3段階コンパイラ構造

3段階コンパイラ構造

1980
ソフトウェア開発事務所で、3段階のコンパイラ構造に取り組むプログラマー。.

(画像はイメージです)

現代のコンパイラは通常、フロントエンド、ミドルエンド、バックエンドの3つの段階で構成されています。フロントエンドはソースコードを解析し、正当性をチェックして中間表現(IR)を作成します。ミドルエンドはこのIRに対して最適化処理を実行します。そしてバックエンドは、最適化されたIRを特定のCPUアーキテクチャ向けのターゲットマシンコードに変換します。

このモジュール式の3段階設計は、重要な関心の分離を実現します。フロントエンドは言語依存ですが、マシン非依存です。C++やRustといった特定の言語の構文と意味を理解します。その出力である中間表現(IR)は、抽象構文木(AST)や3アドレスコードのような、マシンに依存しない抽象的なデータ構造です。これにより、ソース言語とターゲットマシンが分離されます。

中間処理は、言語やマシンにほとんど依存しません。中間処理はIR(中間表現)を受け取り、デッドコード除去、定数畳み込み、ループ最適化などの一連の最適化処理を適用します。汎用IR上で動作するため、これらの複雑な最適化処理は一度記述すれば、そのIRにコンパイル可能なあらゆる言語に適用できます。

最後に、バックエンドはマシンに依存しますが、言語には依存しません。最適化されたIRを受け取り、命令選択、レジスタ割り当て、命令スケジューリングを実行して、x86-64やARMなどの特定のターゲットアーキテクチャ向けに効率的なマシンコードを生成します。この構造により、M個のフロントエンドとN個のバックエンドを作成するだけで、M個の言語とN個のターゲットをサポートするコンパイラを構築することが可能になります。これは、GCCやLLVMといった最新のコンパイラインフラストラクチャに典型的に表れています。

UNESCO Nomenclature: 1203
コンピュータサイエンス

タイプ

抽象システム

混乱

基礎

使用法

広く普及している

前駆物質

  • 初期のモノリシックコンパイラ設計
  • ソフトウェアエンジニアリングにおける抽象化の概念
  • 初期システムにおける中間言語の発達
  • ポータブルソフトウェア(例:Pコードシステム)に関する研究

アプリケーション

  • リターゲット可能なコンパイラ(例:GCC、LLVM)
  • 異なるハードウェアプラットフォーム向けのクロスコンパイル
  • 言語に依存しない最適化フレームワーク
  • 新しいフロントエンドを作成するだけで新しいプログラミング言語を開発する
  • 中間表現に基づいて動作する静的解析ツール

特許:

NA

潜在的なイノベーションのアイデア

ボットによるトラフィック(現在1日あたり4万件以上)を排除するため、このコンテンツはコミュニティメンバー限定となっています。
> ログイン < または > 登録 < (100%無料)でこれにアクセスできます。他のすべての制限付きコンテンツとツールも同様です。

関連: コンパイラ設計、フロントエンド、ミドルエンド、バックエンド、中間表現、IR、最適化、コード生成、モジュール性、GCC、LLVM。

歴史的背景

3段階コンパイラ構造

1975-06-01
1980
1980
1980
1986-01-01
1990
1990
1973
1980
1980
1980
1982-07-01
1988-06-01
1990
1993

(日付が不明または関連性がない場合、例えば「流体力学」などでは、その注目すべき出現時期の概算値が提示されます。)

関連する発明、革新、および技術原理

フルサイズの画像とダウンロードは、登録会員のみが100%無料で利用できます。