0

有哪些用高级语言编写的应用程序虚拟机?C/C++ 看起来像是首选语言(原因很明显)。

我在谷歌上找到的至少有两个用 Java 编写(都是元循环):JikesRVM 和 Maxine。

你还发现了什么?

4

2 回答 2

1
  • 许多 Scheme 实现都是用 Scheme 编写的,尽管其中许多是编译器或解释器,但其中一些是 VM,
  • 一些 CommonLisp 实现是用 CommonLisp 编写的,尽管其中许多是编译器或解释器,但其中一些是 VM,
  • PyPy VM 是用 RPython 编写的,它是 Python 的一个子集,具有“Python 的语法和语义、C 的速度、Java 的限制以及像 MUMPS 一样可穿透的编译器错误消息”,
  • Squeak Smalltalk VM是用 Slang(Squeak Smalltalk 的一个子集)编写的,并且
  • Klein Metacircular VM完全用 Self 编写。

其中,最有趣的是 Klein 和 Maxine(他们的设计实际上是基于 Klein)。Metacircular Lisp 和 Scheme 实现通常假设存在一些基本的原始特殊形式,然后必须以汇编程序、C 或语言的有限子集以低级样式实现。Squeak 和 PyPy 使用有限的语言子集。Jikes 使用“魔术”方法和低级风格。

Klein 和 Maxine 的想法是,一切都是用高级的、面向对象的、富有表现力的、惯用的风格编写的。在当前版本的 Klein 中,只有两个很小的地方样式受到一些限制:在消息发送的实现中,您不能发送任何消息;在对象克隆的实现中,您不能克隆任何对象。但是,当前的编译器实际上可以内联甚至完全优化掉对象克隆和消息发送,所以这两个地方可以用普通的 OO Self 样式重写——只是还没有人做过。

所有这些都只是元循环虚拟机。还有其他用高级语言编写的 VM:

  • HotRuby是一个用 JavaScript 编写的 Ruby VM(实际上是一个 YARV VM),
  • Red Sun是用 ActionScript 编写的 Ruby VM(实际上是 YARV VM),
  • Rava是由 YARV 的作者 Koichi "ko1" Sasada 用 Ruby 编写的类似 JVM 的虚拟机
  • Ruva是一个用 Ruby 编写的类似 JVM 的虚拟机
于 2010-04-24T14:22:44.537 回答
0

更多的 VM 实现是用 TCL(工具命令语言)和 lua(有时称为 java),还有一些是用汇编程序编写的。其他变体是用制造商的计算机硬件系统编程语言编写的。

于 2010-12-02T17:04:03.953 回答