0

高水準言語で記述されたアプリケーション仮想マシンには、どのようなものがありますか? C/C++ は (明らかな理由で) 最適な言語のように見えます。

私がグーグルで見つけたのは、Javaで書かれた少なくとも2つです(両方ともメタサーキュラー):JikesRVMとMaxineです。

他に見つけたものはありますか?

4

2 に答える 2

1
  • 多くのScheme実装はSchemeで書かれており、それらの多くはコンパイラまたはインタプリタですが、それらのいくつかはVMです.
  • 一部の CommonLisp 実装は CommonLisp で記述されており、それらの多くはコンパイラまたはインタプリタですが、一部は VM です。
  • PyPy VM は RPython で書かれており、Python のサブセットであり、「Python の構文とセマンティクス、C の速度、Java の制限、および MUMPS と同じくらい浸透可能なコンパイラ エラー メッセージ」を備えています。
  • Squeak Smalltalk VMはスラング (Squeak Smalltalk のサブセット) で書かれており、
  • Klein Metacircular VMは完全に Self で記述されています。

それらの中で最も興味深いのは、クラインとマキシンです (デザインは実際にはクラインに基づいています)。Metacircular Lisp と Scheme の実装は、通常、いくつかの基本的なプリミティブの特別な形式の存在を前提としています。これらは、アセンブラ、C、または低レベル スタイルの言語の限定されたサブセットで実装する必要があります。Squeak と PyPy は、言語の限られたサブセットを使用します。Jikes は「魔法の」方法と低レベルのスタイルを使用します。

Klein と Maxine の考えは、すべてがハイレベルで、オブジェクト指向で、表現力豊かで、慣用的なスタイルで書かれているというものです。Klein の現在のバージョンでは、いくつかの制限によってスタイルが妨げられている小さな場所が 2 つだけあります。メッセージ送信の実装ではメッセージを送信できず、オブジェクトの複製の実装ではオブジェクトを複製できません。ただし、現在のコンパイラ、オブジェクトのクローン作成とメッセージ送信を実際にインライン化または完全に最適化することさえできるため、これら 2 つの場所を通常の OO Self スタイルで書き直すことができます。

それはすべて、単なるメタサーキュラー VM でした。高水準言語で記述された他の VM もあります。

  • HotRubyは JavaScript で書かれた Ruby VM (実際には YARV VM) であり、
  • Red Sunは、ActionScript で記述された Ruby VM (実際には YARV VM) であり、
  • Ravaは、YARV および
  • Ruvaは Ruby で書かれた JVM のような VM です。
于 2010-04-24T14:22:44.537 に答える
0

さらにいくつかのVM実装は、TCL(ツールコマンド言語)およびlua(javaと呼ばれることもあります)であり、いくつかはアセンブラーで記述されています。他の変種は、製造元のコンピュータハードウェアシステムプログラミング言語で書かれています。

于 2010-12-02T17:04:03.953 に答える