Pimp我的VM(关于性能和jitting)

时间:2012-07-11 17:49:59

标签: interpreter jit vm-implementation

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

我现在的问题是我的VM不够有效(它实际上比未经优化的C慢15-30倍)。它是一个非常简单的虚拟机,它通过一个巨大的SWITCH-CASE块实现解码。

vm代码如下所示:

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

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

0 个答案:

没有答案