0

私が読んだことの理解が正しければ、仮想マシンは本質的に中間コードのコンパイラです。しかし、(アンマネージ コードの例として)Delphi がそのコンパイラで実行されるとは決して言われません。仮想マシンを単にコンパイラとして説明したほうが混乱しにくいでしょうか?

4

3 に答える 3

2

従来のコンパイラは、ソースコードからオブジェクトコードへの1回限りの変換を行います。JVMのような仮想マシンは、 (バイトコードの)解釈と、バイトコードのセグメントをネイティブコードにコンパイルするジャストインタイムコンパイラを組み合わせて使用​​します。VM全体をコンパイラとして説明するのは正確ではありません。

于 2010-07-07T09:52:11.310 に答える
1

ソースコードをVMコード(バイトコード)に変換するコンパイラと、VMコード->マシンコード用のJITコンパイラがあります。VMは、ソースコード-> VMコンパイラが対象とする標準であり、必ずしも特定の実装ではありません。実際のマシンで実装できます。その場合、JITコンパイルを行う必要はありません。

VMはエミュレーターに近いです(または、JITが本当に愚かである場合は、インタープリター:))

于 2010-07-07T09:52:27.877 に答える
1

人々がこの用語で捉えようとしているのは、仮想マシンには余分な抽象化レイヤーがあるということだと思います。したがって、同じコードですが、各プラットフォームのVMにより、その特定のプラットフォームで実行できます。

于 2010-07-07T09:52:56.143 に答える