2010-08-20 22 views
6

Busco una máquina virtual de código abierto que es:de código abierto máquina virtual

  • rápida y lo más ligero posible
  • soporta un conjunto mínimo de código de bytes (como LLVM IR)
  • fácilmente embedable desde una aplicación C++
  • Multiplataforma (Linux, Windows y OS X)
  • apoyo x86
+6

Hmm, nadie * nunca * pide una solución lenta, pesada y de código cerrado. ¿Por qué no solo usas Java JVM? –

Respuesta

5

Lua es famoso por ser ridículamente fácil de incrustar en C/C++. Su máquina virtual es de código abierto y multiplataforma, muy pequeña (tanto el tamaño de exe como el conjunto de instrucciones de códigos de bytes) y, al mismo tiempo, bastante rápido. Pero su bytecode puede no ser adecuado para su idioma. The bytecode format is documented here.

+1

La máquina virtual de Lua no es una VM de propósito general, pero puede funcionar para su lenguaje personalizado si su lenguaje y Lua no están muy separados semánticamente. Una breve descripción de la VM de Lua está en http://www.lua.org/source/5.1/lopcodes.h.html#OP_MOVE. Si sigues este camino, te sugiero que primero intentes compilar tu idioma con el código fuente de Lua. – lhf

4

NekoVM es un lenguaje de programación y una máquina virtual liviana diseñada como un objetivo genérico para los escritores de compiladores. The documentation hace que parezca realmente fácil insertar la VM en una aplicación C o C++, pero parece que la VM API aún no está documentada.

2

Otra posible respuesta: ¿por qué no ensamblador de salida en su lugar? es rápido y ligero, y no necesita una VM en absoluto. Dado que solo tiene como objetivo x86, podría tener sentido, dependiendo de lo que intente hacer.

Cuestiones relacionadas