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

我在Google上发现的内容至少是用Java(都元圆形)编写的:Jikesrvm和Maxine。

您发现的还有什么?

有帮助吗?

解决方案

  • 许多方案实施都是用计划编写的,尽管其中许多是编译器或口译员,但其中一些是VM,
  • 一些普通LISP的实现是在CommonLisp中编写的,尽管其中许多是编译器或口译员,但其中一些是VM,但
  • pypy VM用Rpython编写,这是Python的子集,上面有“ Python的语法和语义,C速度,Java的限制和编译器错误消息,如腮腺炎,
  • 尖叫Smalltalk VM 用lang(吱吱作响的Smalltalk的子集)和
  • klein元元VM 完全用自我写。

其中,最有趣的是克莱因(Klein)和马克西(Maxine)(其设计实际上是基于克莱因(Klein))。 Metacircular LISP和方案实现通常假设存在一些基本的原始特殊形式,然后必须以低级样式在汇编器,C或有限的语言子集中实现。吱吱声和PYPY使用该语言的有限子集。 Jikes使用“魔术”方法和低级样式。

克莱因和马克西恩的想法是 一切 以高级,面向对象,表现力,惯用风格编写。在当前版本的克莱因(Klein)中,只有两个很小的地方受到某种限制的阻碍:在消息发送消息时,您不能发送任何消息,并且在实现对象克隆时,您不能克隆任何对象。但是,当前的编译器 能够 实际上,内联甚至完全优化了对象克隆和消息发送,因此可以以正常的OO自我风格重写这两个地方 - 只是没有人做到这一点。

所有这些都是元VM。还有其他使用高级语言编写的VM:

  • hotruby 是用JavaScript编写的Ruby VM(实际上是YARV VM),
  • 红日 是用ActionScript编写的Ruby VM(实际上是YARV VM)
  • 拉瓦 是Yarv和Yarv的作者Koichi“ Ko1” Sasada用Ruby撰写的类似JVM的VM
  • 鲁瓦 是用Ruby写的类似JVM的VM

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top