(1)コンパイラと翻訳者の説明、アセンブラの接続とプログラムの違いを。
翻訳プログラムは、機械言語ソースコード(オブジェクトコード)ソフトウェアに高レベル言語ソースコードの翻訳を指します。
翻訳プログラム、2があります:1は、コンパイラである、それはすべてを一度にターゲットプログラムに翻訳高水準言語のソースプログラムとなり、その都度、プログラムの実行、限りターゲットプログラム。
もう一つは、その実行が実行の翻訳であり、ターゲットプログラムを生成しない、プログラムを説明することです。
インタプリタであり、翻訳者が翻訳し、そのようなので、上のJavaScript、Pythonとなど、プログラムの実行、;コンパイラは、そのようなので、上のC、C ++およびとして初の完全なコンパイラ、後に実行するプログラムです。
アセンブラは、機械語プログラムにアセンブリ言語のソースコードを変換する言語翻訳プログラムです。
コンパイラとアセンブラの違い:そのようなC、C ++、Javaおよびその他の「高級言語」、およびアセンブリ言語などの機械語などのターゲット言語「低レベル言語、」などのソース言語は、翻訳プログラムはコンパイラと呼ばれる場合プログラム。
ソース言語はアセンブリ言語であり、ターゲット言語は機械語であるならば、そのような翻訳プログラムは、アセンブラと呼ばれます。
(2)コンパイルプロセスを、そのいくつかの主な段階の主な機能と各段階を含みます。
字句タスク:入力ソースプログラム、ソース文字列を走査し、識別された分解、一つの単語を構成しています。
ワード:文字で構成されて本当の意義、最小レベルの言語構文ユニットがあります。
字句字句解析の規則に従って、正しい単語を識別する、取っておく統一仕様、に変換されます。
字句規則式と有限オートマトンの形式的な記述のための効果的なツール。
パージング
タスク:言語の構文規則に従って、など文法単位、すべての種類のワードストリーム:フレーズ、文、プロセス、手順
文法規則:言語の規則、また文法として知られている、フレーズ、文、プロセスと手順を形成するために、言葉をどのように提供しますか。
文法規則は通常、文脈自由文法で記述されています。
構文解析方法は2つあります。
(派生)の導出とプロトコル(リデュース)
構文解析プロセスはまた、逆さまツリーを表すために使用することができ、ツリーは、構文解析ツリーと呼ばれています
意味解析
タスク:テストプログラムの意味論的正し、部品が有意義互いに接合されていることを確認するためのプログラム、収集情報生成段階以降のコードの種類
意味解析フェーズの重要な仕事:型チェック
中間コード生成
タスク:セマンティックルールに従ってソース及びオブジェクトコードの言語との間の中間コードの間のクロスを生成します。
中間コードは、建設機械に関連付けられ、マシン簡単に依存するオブジェクトコードを生成するために、明確な表記法システム容易であるれていません
中間コード形式
逆ポーランド記法、四種類、3種類
コードの最適化
タスク:最終段階でより効率的なオブジェクトコードを生成するために、変換処理によって生成された前の中間コード。
原則:等価変換
主な分野:共通部分式、抽出既知量をマージし、不要な文、ループ、最適化を削除します
ターゲットコード生成
タスク:最適化された中間コードは、特定のマシン上の低レベル言語コードに変換します
オブジェクトコード形式で
絶対命令コード:オブジェクトコードを即座に実行することができます。
アセンブラ命令コード:アセンブリ言語プログラムは、アセンブラをコンパイルする必要性を介して実行します。
再配置可能な命令コード:最初の変数を決定すること、各ターゲット・モジュールを接続するには、メインメモリ内の一定の位置、メインメモリにロードすることができる絶対的な命令コードを実行することができます。