Google Play badge

コンパイラ


コンパイラー

コンパイラは、あるプログラミング言語 (ソース言語と呼ばれる) で書かれたコンピューター コードを別のプログラミング言語 (ターゲット言語と呼ばれる) に翻訳するために使用されるコンピューター プログラムを指します。コンパイラという用語は主に、ソース コードを高レベル プログラミング言語から低レベル プログラミング言語に変換するプログラムに適用されます。たとえば、実行可能プログラムを作成するためのマシンコード、オブジェクトコード、アセンブリ言語などです。

コンパイラにはさまざまな種類があることに注意することが重要です。コンパイルされたプログラムが、コンパイラが実行するものと異なるオペレーティング システムまたは CPU を備えたコンピュータ上で実行できる場合、コンパイラはクロスコンパイラと呼ばれます。一方、ブートストラップ コンパイラは、コンパイルする言語で記述されます。逆コンパイラは、低レベル言語を高レベル言語に翻訳するために使用されるプログラムです。高級言語間の翻訳に使用されるプログラムは、ソース間コンパイラーと呼ばれます。トランスパイラーとも呼ばれます。言語を変更せずに式の形式を翻訳するプログラムは、言語リライターとして知られています。コンパイラ - コンパイラという用語は、構文分析を実行するパーサーを作成するために使用されるツールを指します。

コンパイラーによって実行される操作には、前処理、解析、(構文指向変換) 意味分析、字句分析、コード生成、コードの最適化、入力プログラムの中間表現への変換などがあります。コンパイラーは、ソース入力からターゲット出力への正しい変換と効率的な設計を促進するさまざまなフェーズでこれらの操作を実装する責任を負います。コンパイラーの誤った動作によって引き起こされるプログラムの障害は、追跡して回避することが非常に困難な場合があります。したがって、コンパイラの実装者は、コンパイラの正確性を確保するために多大な労力を費やします。

ソース プログラムの変換に使用されるトランスレータはコンパイラだけではないことに注意することが重要です。指定された操作を変換して実行するコンピューター ソフトウェアは、インタープリターと呼ばれます。翻訳のプロセスはコンピューター言語の設計に影響を与え、それが解釈または編集の優先順位につながります。実際には、コンパイラーおよびコンパイル言語用のインタープリターの実装は、インタープリター言語用に実装できます。

コンパイラを使用する場合、プログラムの実行には 2 段階のプロセスが使用されることに注意してください。

コンパイルツールチェーン

大規模なプログラムの場合、コンパイラは複数ステップのツール チェーンの一部になります。

(プリプロセッサ)-(コンパイラ)-(アセンブラ)-(リンカ)-(ローダ)。

コンパイラの構造

最新のコンパイラは 2 つの主要な部分で構成されています。これらの各部分はさらに細分化されることがよくあります。これら 2 つの主要な部分は、フロントエンドとバックエンドです。

フロントエンドはソース プログラムを分析し、プログラムの中間表現を構築し、その構成部分を決定します。一般に、フロントエンドはターゲット言語から独立しています。

一方、バックエンドは、フロントエンドによって生成された中間表現からターゲット プログラムを合成する責任を負います。一般に、バックエンドはソース言語から独立していると言われます。

Download Primer to continue