I'm looking for an open source virtual machine that's:
Зачем отфильтровывать LLVM? Это набор библиотек C
. Думаю, встроить его не так просто, как Lua, но LLVM настолько хорош, что, вероятно, преодолеет трудности с его интеграцией. См. этот вопрос SO , это поможет?
Другой возможный ответ: почему бы вместо этого не вывести ассемблер? это быстро и легко, и вам вообще не нужна виртуальная машина. Поскольку вы ориентируетесь только на x86, это может иметь смысл, в зависимости от того, что вы пытаетесь сделать.
Lua известен тем, что до смешного легко встраивать в C / C ++. Его виртуальная машина с открытым исходным кодом и кроссплатформенная, очень маленькая (как размер exe, так и набор инструкций байт-кода) и в то же время довольно быстрая. Но его байт-код может не подходить для вашего языка. Формат байт-кода задокументирован здесь.
NekoVM - это язык программирования и легкая виртуальная машина, разработанная как универсальная цель для разработчиков компиляторов. В документации действительно легко встроить виртуальную машину в приложение C или C ++, но похоже, что API виртуальной машины еще не задокументирован.