我正在寻找具有以下功能的虚拟机:
- 编译后的代码占用空间小(低于 200K)。
- 没有外部依赖。
- Unicode(或原始)字符串支持。
- 干净的代码/组织良好。
- C(99) 代码,而不是 C++。
- 类似 C/Java 的语法。
- 运算符/按位:AND/OR 等。
- 线程支持。
- 通用/便携式字节码。字节码应该可以在不同的机器上工作,即使它是在具有不同字节序等的不同架构上编译的。
- 准系统,没有什么花哨的必要。只有基本的语言支持。
- 词法分析器/解析器和编译器与 VM 分开。我将把虚拟机嵌入到一个程序中,然后独立编译字节码。
到目前为止,我已经回顾了Lua、Squirrel、Neko、Pawn、Io、 AngelScript ......唯一一个有点接近规范的是 Lua,但语法很糟糕,它没有按位支持,而且代码风格一般很烂。Squirrel 和 IO 大多是巨大的。Pawn 是有问题的,它很小,但是字节码不是跨平台的,并且实现有一些严重的问题(例如,字节码根本没有经过验证,甚至标头 AFAIK 也没有)。
我很想在那里找到一个合适的选择。
谢谢!
更新: Javascript 解释器是……解释器。这是基于字节码的 VM 的 VM 问题,因此需要编译器/字节码 vm 分离。JS 是解释型的,很少由 JIT 编译。我不一定要 JIT。此外,目前所有的 ECMAScript 解析器都很小。