どのアプリケーション仮想マシンが高レベルの言語で記述されていますか?
-
01-10-2019 - |
質問
より高いレベルの言語で書かれているアプリケーション仮想マシンはありますか? C/C ++は、選択した言語のように見えます(明らかな理由で)。
Googleで見つけたのは、Java(両方ともメタカー)で書かれている少なくとも2つです:JikesRvmとMaxine。
他に見つけたものはありますか?
解決
- 多くのスキームの実装はスキームで記述されており、それらの多くはコンパイラや通訳者ですが、それらのいくつかはVMです。
- 一部のCommonLisp実装はCommonLispで記述されており、それらの多くはコンパイラまたは通訳者ですが、それらのいくつかはVMです。
- パイキー VMはRpythonで書かれています。Pythonのサブセットは、「Python、Cの速度、Javaの制限、およびコンパイラエラーメッセージの制限」を備えたPythonのサブセットです。
- きしむスモールトークVm スラング(きしみのスモールトークのサブセット)で書かれており、
- クライン中鎖VM 完全に自己で書かれています。
それらのうち、最も興味深いのはクラインとマキシンです(そのデザインは実際にはクラインに基づいています)。メタサイカルリスプとスキームの実装は通常、いくつかの基本的な原始的な特別な形式の存在を想定しています。これは、アセンブラー、C、または言語の限られたサブセットで低レベルのスタイルで実装する必要があります。きしみとパイキーは、言語の限られたサブセットを使用します。 Jikesは「魔法」の方法と低レベルのスタイルを使用します。
クラインとマキシンのアイデアはそれです すべての 高レベル、オブジェクト指向、表現力豊かな慣用的なスタイルで書かれています。 Kleinの現在のバージョンでは、スタイルが何らかの制限によって妨げられる2つの小さな場所しかありません。メッセージ送信の実装では、メッセージを送信できず、オブジェクトのクローン化の実装では、オブジェクトをクローンできません。ただし、現在のコンパイラ できる 実際にインラインまたは完全に最適化するオブジェクトのクローニングとメッセージの送信を完全に最適化するため、これらの2つの場所は通常のOOセルフスタイルで書き直すことができます。
それはすべて、単回循環VMでした。高レベルの言語で書かれた他のVMもあります:
他のヒント
さらにいくつかのVM実装は、TCL(ツールコマンド言語)とLUA(Javaと名付けられた場合もあります)にあり、一部はアセンブラーで書かれています。他のバリアントは、メーカーのコンピューターハードウェアシステムプログラミング言語で記述されています。