アセンブラとコンパイラとの相違点

Anonim

アセンブラとコンパイラ

一般的にコンパイラとは、ある言語で書かれたプログラムを読み込むコンピュータプログラムであり、ソース言語と呼ばれ、ターゲット言語と呼ばれる別の言語に変換します。伝統的に、ソース言語はC ++のような高水準言語であり、ターゲット言語はアセンブリ言語のような低レベル言語でした。ただし、アセンブリ言語で記述されたソースプログラムを変換して機械コードまたはオブジェクトコードに変換できるコンパイラがあります。アセンブラはそのようなツールです。したがって、アセンブラとコンパイラの両方が最終的にマシン上で直接実行できるコードを生成します。

コンパイラとは?

コンパイラは、ソース言語と呼ばれる1つの言語で書かれたプログラムを読み込み、それをターゲット言語と呼ばれる別の言語に翻訳するコンピュータプログラムです。ほとんどの場合、ソース言語は高レベル言語であり、ターゲット言語は低レベル言語です。だから、一般的にコンパイラは、ある言語から別の言語に翻訳する翻訳者と見ることができます。さらに、コンパイラはコードに対していくつかの最適化を実行します。典型的なコンパイラはいくつかの主要コンポーネントで構成されています。最初のコンポーネントはスキャナ(語彙アナライザとも呼ばれます)です。スキャナはプログラムを読み取り、トークンの文字列に変換します。 2番目のコンポーネントはパーサーです。それは、トークンの文字列を解析木(または抽象構文木)に変換し、プログラムの構文構造を捕捉する。次のコンポーネントは、構文構造の意味を解釈する意味ルーチンです。コードの最適化と最終的なコード生成はこれに続きます。

アセンブラとは?

アセンブラは、アセンブリ言語を機械語に変換するソフトウェアまたはツールです。したがって、アセンブラはコンパイラの一種であり、ソースコードはアセンブリ言語で記述されています。アセンブリは人間が読める言語ですが、通常は対応するマシンコードと1対1の関係にあります。したがって、アセンブラは、同形(1対1マッピング)変換を実行すると言われています。高度なアセンブラは、プログラムの開発およびデバッグプロセスをサポートする追加の機能を提供します。たとえば、マクロ・アセンブラーと呼ばれるアセンブラーのタイプは、マクロ機能を提供します。

アセンブラとコンパイラの違いは何ですか?

コンパイラは、ある言語で書かれたプログラムを読み込み、それを別の言語に翻訳するコンピュータプログラムです。アセンブラは、アセンブリ言語のみを機械語に変換する特別なタイプのコンパイラと考えることができます。コンパイラは通常、高水準言語からマシン実行可能コードを直接生成しますが、アセンブラは、マシン上で実行するためにリンカ・プログラムを使用してリンクする必要のあるオブジェクト・コードを生成します。アセンブリ言語はマシンコードと1対1のマッピングを持つため、パフォーマンスが非常に重要な場面(例えば、グラフィックスエンジン、パーソナルコンピュータと比較してハードウェアリソースが限られている組み込みシステム電子レンジ、洗濯機など)。