哪些应用程序虚拟机是用高级语言编写的?

时间:2010-04-24 09:13:02

标签: vm-implementation high-level

哪些应用程序虚拟机是用更高级语言编写的? C / C ++看起来像选择的语言(出于显而易见的原因)。

我在google上发现的至少有两个用Java编写的内容(两个元循环): JikesRVM和Maxine。

你找到的其他东西了?

2 个答案:

答案 0 :(得分:1)

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

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

Klein和Maxine的想法是所有都是以高级,面向对象,富有表现力的惯用语风格编写的。在当前版本的Klein中,只有两个很小的地方风格受到一些限制:在消息发送的实现中,你不能发送任何消息,在对象克隆的实现中你不能克隆任何对象。但是,当前的编译器可以实际内联甚至完全优化对象克隆和消息发送,因此这两个地方可以用正常的OO Self样式重写 - 只是没有人完成它。

所有这些只是metacircular虚拟机。还有其他用高级语言编写的虚拟机:

  • HotRuby是一个用JavaScript编写的Ruby VM(实际上是一个YARV VM),
  • Red Sun是一个用ActionScript编写的Ruby VM(实际上是一个YARV VM),
  • Rava是一个类似JVM的VM,由Koichi编写的“ko1”Sasada,YARV的作者和
  • Ruva是一个类似JVM的VM,用Ruby编写

答案 1 :(得分:0)

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