Pregunta

¿Qué máquinas virtuales de aplicación son por ahí que están escritos en lenguajes de alto nivel? C / C ++ se parece a la lengua que elijan (por razones obvias).

Lo que he encontrado en Google es al menos dos escrito en Java (ambos meta-circular): JikesRVM y Maxine.

Todo lo demás que usted ha encontrado?

¿Fue útil?

Solución

  • Muchas implementaciones de Scheme se escriben en el esquema y aunque muchos de ellos son los compiladores o intérpretes, algunos de los que son máquinas virtuales,
  • algunas implementaciones CommonLisp están escritos en CommonLisp y aunque muchos de ellos son los compiladores o intérpretes, algunos de ellos son máquinas virtuales,
  • PyPy VM está escrito en RPython, que es un subconjunto de Python con "la sintaxis y la semántica de Python, velocidad de C, Java y las restricciones de los mensajes de error del compilador como penetrables como las paperas",
  • la Squeak Smalltalk VM está escrito en argot (un subconjunto de Squeak Smalltalk) y
  • Klein Metacircular VM está escrito completamente en Ser.

De ellos, los más interesantes son Klein y Maxine (cuyo diseño se basa en realidad en Klein). Metacircular Lisp y Scheme implementaciones generalmente asumen la existencia de algunas formas especiales primitivas básicas, que luego tienen que ser implementado en lenguaje ensamblador, C o un subconjunto limitado de la lengua en un estilo de bajo nivel. Chillido y PyPy utilizan un subconjunto limitado de la lengua. Jikes usos métodos "mágicos" y bajo nivel de estilo.

La idea de Klein y Maxine es que todo se guarda en alto nivel, estilo expresivo, idiomática orientado a objetos. En la versión actual de Klein, sólo hay dos lugares pequeños donde el estilo se ve obstaculizada por algunas restricciones: en la implementación de enviar el mensaje, no se puede enviar ningún mensaje, y en la implementación de objeto que no pueden clonar clon ningún objeto. Sin embargo, el compilador actual puede realmente en línea o incluso completamente optimizar la distancia clonación objeto y el envío de mensajes, por lo que esos dos lugares podrían ser reescritos en estilo normal de OO Auto -. Es sólo que nadie lo ha hecho todavía

Todo eso fue sólo metacircular máquinas virtuales. También hay otras máquinas virtuales escritos en lenguajes de alto nivel:

  • HotRuby es un rubí VM (en realidad, una YARV VM) escrito en JavaScript,
  • Red Sun es un rubí VM (en realidad, una YARV VM) escrito en ActionScript,
  • Rava es una JVM como VM escrita en Ruby por Koichi "KO1" Sasada, el autor de YARV y
  • Ruva es una JVM como VM escrito en Ruby

Otros consejos

Algunas más implementaciones de máquinas virtuales están en TCL (herramienta de lenguaje de comandos) y lua (a veces denominado como Java) y algunos están escritos en un ensamblador. Otras variantes están escritos en un lenguaje de programación sistema de hardware del fabricante.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top