Interpreter Pimp my VM(关于性能和jitting)

Interpreter Pimp my VM(关于性能和jitting),interpreter,jit,vm-implementation,Interpreter,Jit,Vm Implementation,对于我的一个程序,我需要一种脚本语言来动态改变世界(单元ai、世界生成等),因此我为一种非常基本的语言(没有继承的简单对象、1d数组、32位整数/浮点、字符串)编写了一个编译器,该语言还使用引用计数进行垃圾收集。编译器输出基于堆栈的字节码 我现在的问题是我的虚拟机效率不够(它实际上比未经优化的C运行慢15-30倍)。这是一个非常简单的虚拟机,它用一个巨大的开关盒块实现解码 vm代码如下所示: switch(*ip++) case ADD: ... brea

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

我现在的问题是我的虚拟机效率不够(它实际上比未经优化的C运行慢15-30倍)。这是一个非常简单的虚拟机,它用一个巨大的开关盒块实现解码

vm代码如下所示:

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

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

一种比您正在使用的交换机线程更复杂的技术是内联线程,本文博客,jamvm使用这种技术。一种比您正在使用的交换机线程更复杂的技术是内联线程,纸在这里博客在这里,JAMV使用这种技术。