Чистая, автономная виртуальная машина, реализованная на C и с размером скомпилированного кода менее 100-200K?

Я ищу виртуальную машину со следующими функциями:

  • Небольшой размер скомпилированного кода ( менее 200 КБ ).
  • Нет внешних зависимости.
  • Поддержка Unicode (или необработанных) строк.
  • Чистый код / хорошо организованный.
  • Код C (99) , НЕ C ++.
  • Синтаксис, подобный C / Java .
  • Операторы / побитовые операции: И / ИЛИ и т. Д.
  • Поддержка потоков .
  • Общий / переносимый байт-код . Байт-код должен работать на разных машинах, даже если он был скомпилирован на другой архитектуре, с другим порядком байтов и т. Д.
  • Barebones , ничего особенного не требуется. Поддержка только базового языка.
  • Лексер / анализатор и компилятор отделены от ВМ . Я буду встраивать виртуальную машину в программу, а затем самостоятельно компилировать байт-код.

До сих пор я рассмотрел Lua , Squirrel , Neko , Pawn , Io , AngelScript ... и единственный, который несколько приближается к спецификации, - это Lua, но синтаксис ужасен, у него нет побитовой поддержки, а стиль кода вообще отстой. Squirrel и IO в основном огромны. Pawn проблематичен, он небольшой, но байт-код не является кросс-платформенным, и у реализации есть некоторые серьезные проблемы (бывший байт-код вообще не проверяется, даже заголовки AFAIK).

Я бы хотел найти там подходящий вариант .

Спасибо!

Обновление: Интерпретаторы Javascript - это ... интерпретаторы. Это вопрос виртуальной машины для виртуальной машины на основе байт-кода, следовательно, требуется разделение виртуальных машин на компилятор и байт-код. JS интерпретируется и очень редко компилируется JIT. Я не обязательно хочу JIT. Также, все современные парсеры ECMAScript очень маленькие.

21
задан Seki 12 June 2015 в 08:40
поделиться