2010-08-20 4 views
6

Я ищу для виртуальной машины с открытым исходным кодом, которое:Открытый исходный код виртуальной машины

  • быстрый и как можно более
  • поддерживает минимальный набор байт-кода (например, LLVM IR)
  • легко embedable из C++ приложения
  • Кроссплатформенность (Linux, Windows и OS X)
  • поддержка x86
+6

Хмм, никто никогда не просит медленного, тяжелого и закрытого источника. Почему бы вам просто не использовать Java JVM? –

ответ

3

Зачем фильтровать LLVM? Это a set of C libraries

Я думаю, что это не так просто вставлять, как Lua, но LLVM настолько велик, что он, вероятно, преодолеет трудности интеграции. См. this SO question, это помогает?

5

Lua известен тем, что смешно легко внедрить в C/C++. Его виртуальная машина с открытым исходным кодом и кросс-платформенная, очень маленькая (как набор размеров exe, так и байт-код) и в то же время довольно быстро. Но его байт-код может не подходить для вашего языка. The bytecode format is documented here.

+1

VM от Lua - это не универсальная виртуальная машина, но она может работать на вашем пользовательском языке, если ваш язык и Lua не слишком далеко друг от друга семантически. Краткое описание виртуальной машины Lua находится по адресу http://www.lua.org/source/5.1/lopcodes.h.html#OP_MOVE. Если вы пойдете так, я предлагаю вам сначала попытаться скомпилировать ваш язык в исходный код Lua. – lhf

4

NekoVM - это язык программирования и легкая виртуальная машина, разработанная как общая цель для авторов компилятора. The documentation позволяет вставить виртуальную машину в приложение C или C++, но похоже, что API VM еще не задокументирован.

2

Другой возможный ответ: почему бы не выводить ассемблер вместо этого? он быстрый и легкий, и вам вообще не нужна виртуальная машина. Поскольку вы ориентируетесь только на x86, это может иметь смысл, в зависимости от того, что вы пытаетесь сделать.

Смежные вопросы