2

对于我的一个程序,我需要一种脚本语言来动态改变世界(单元 ai、世界生成等),所以我为一种相当基本的语言(没有继承的简单对象、一维数组、32 位整数/浮点数、字符串)编写了一个编译器) 它还使用引用计数进行垃圾收集。编译器输出基于堆栈的字节码。

我现在的问题是我的 VM 效率不够高(它实际上比未优化的 C 慢 15-30 倍)。它是一个非常简单的 VM,它使用一个巨大的 SWITCH-CASE 块来实现解码。

vm 代码如下所示:

switch(*ip++)
    case ADD:
        ...
        break;
    case SUB:
        ...
        break;

所以我的问题是是否可以将我的脚本重新编译为 x86 汇编程序并在运行时执行它们。(我认为这就是 JIT 编译器所做的)。我搜索了很多,但没有找到任何代码示例,例如将 x86 代码发送到处理器。如果有人有指向解释如何构建更好的 VM 的教程的链接,我将非常高兴。

4

0 回答 0