VLIWアーキテクチャのアセンブリライターとコンパイラ


8

私はこの文章を本で読みました:

VLIWアーキテクチャでは、コンパイラ/またはアセンブリライターが、並列実行できる命令を選択します。

アセンブリライターとコンパイラの違いは何ですか?アセンブリライターもアセンブラと同じ意味ですか?

回答:


33

その本の「アセンブリライター」は、アセンブラー言語でコードを書く人間のソフトウェア開発者です。


15
1.インタプリタは何もアセンブリ言語に変換しません。2.ソースコードをアセンブリ言語に変換するツールは、本質的にコンパイラです。
gnasher729

4
@ KellyS.Frenchアセンブラはアセンブリ言語コードをマシンコードに変換するため、この定義ではコンパイラではありません。ただし、あるアセンブリ言語を別のアセンブリ言語に変換するツール(ARBfp1.0から最新のGPUのネイティブアセンブリ言語など)がある場合、このツールは(この定義の)コンパイラです。
ルスラン

1
@ gnasher729-nitpick:ほとんどの定義では、(2)の「アセンブリ言語」の部分は不要です(特に、typescriptコンパイラやjavaコンパイラなど、ソースをアセンブリにコンパイルするものではなく、javascriptまたはjavaバイトコードにコンパイルするもの)。それぞれ)。最近では、あるプログラミング言語を別のプログラミング言語にコンパイルする任意のツールを意味しています(アセンブリは技術的にはプログラミング言語です)。
Delioth

2
@ KellyS.French:コンパイラは、言語Xのプログラムを言語Yの意味的に同等のプログラムに変換するプログラムです。言語XとYが正確に何であるかに応じて、これらのコンパイラには特別な名前があり、「アセンブラ」はそれらの特別な名前の1つ。しかし、それらはすべて特別な種類のコンパイラです。たとえば、Y =アセンブリで、XがYより高いレベルの場合、アセンブラと呼びます。Y =アセンブリで、XがYよりも低いレベルの場合、逆アセンブラと呼びます。XがYおよびY!=アセンブリよりも低レベルである場合、それを逆コンパイラと呼びます。XとYが同じレベルであれば、最近の使用量は希望...
イェルクWミッターク

2
@ KellyS.French:アセンブラーがコンパイラーに関して通常あまり話されない理由は、アセンブラーが非常に退屈なコンパイラーであるためだと思います。基本的に、アセンブラは、人間が読み取れるニーモニックとマシンが読み取れるオペコードを1対1でマッピングしたものです。解析段階は単純で、型がなく、最適化もなく、コード生成は簡単です。複雑な言語の解析、型チェック、型推論、最適化、セマンティクスの巧妙なマッピングなど、コンパイラーが行う興味深いアルゴリズムはありません。
JörgW Mittag

10

VLIWアーキテクチャでは、コンパイラ/またはアセンブリライターが、並列実行できる命令を選択します

この文の意味は、VLIWアーキテクチャでは、アセンブラ(マシン)コードが並列に実行される命令を定義するため、アセンブリコードが人間によって記述されたとき、またはコンパイラによって生成されたときに修正されます。

これは、命令が並列に実行されるスーパースカラーCPUとは異なります。これは、命令を実行するたびにCPUによって行われる決定です。

両方のアプローチを組み合わせたCPUもあります。Itanium2はItaniumと下位互換性があり、3つの命令をVLIWワードにパックします。しかし、まあ、Itanium2はそのような2つのパックを1つのCPUサイクルで実行でき、この決定は実行時に行われます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.