我写了一个Brainfuck实现(C++),其工作原理是这样:使JIT编译器
- 读取输入brainfuck文件
- 做琐碎的优化
- 转换brainfuck成机器代码的VM
- 在VM中执行此机器代码
这很快,但瓶颈现在在虚拟机上。它是用C++编写的,读取一个令牌,执行一个动作(如果你知道Brainfuck,这个动作根本不是很多)等等。
我想要做的是剥离虚拟机并生成本地机器代码(基本上,JIT编译器)。这很容易成为20倍的加速。
这意味着步骤3被JIT编译器替换,步骤4替换执行生成的机器代码。
我真的不知道从哪里开始,所以我有几个问题:
- 这是如何工作,如何生成的机器代码得到执行?
- 是否有任何C++库用于生成本机机器码?
+1并且被接受为唯一解释机器代码如何被调用的人。 – orlp 2011-05-16 22:15:33