写一个新的jit

时间:2010-11-04 13:50:49

标签: c++ assembly jit

我有兴趣用C ++开始自己的JIT项目。我并不熟悉汇编,编译器设计等等。但是,我对所得到的机器代码格式非常不熟悉 - 比如说,当所有的说完成时,一个mov指令实际上是什么样的,是时候调用它了功能指针。那么,创建这样的东西的最佳资源是什么?

编辑:现在,我只对Windows上的x86感兴趣,将来只需要64位Windows。

4 个答案:

答案 0 :(得分:5)

您想查看您感兴趣的体系结构的处理器手册。这些手册描述了操作码编码。对于x86处理器,可以从this page下载手册。

答案 1 :(得分:5)

在LLVM之上启动项目可能会使您免受平台详细信息的影响。

http://llvm.org/

LLVM由几种动态语言JIT编译器使用。

答案 2 :(得分:2)

GNU lightning是一个多架构(x86,SPARC,PPC)库,用于在另一个程序中生成代码。您需要了解通用汇编语言概念,但不是很深入。您根本不必编写任何特定于体系结构的内容。闪电的下行(至少我上次使用它)是所提供的接口是支持目标上可用功能的交集:x86的小寄存器集,SPARC等RISC指令集,等等。单通道代码生成很容易使用但有自己的怪癖,就像你不能重新定位输出缓冲区(因为地址引用)所以如果你的空间不足,你通常必须重新开始。好消息是你可能会很快得到一个有效的例子。

答案 3 :(得分:0)

旧版本的NASM附带一个相当简洁的操作码参考,具有x86指令编码。 (看起来没有64位信息。)我发现这个使用谷歌:

http://alien.dowling.edu/~rohit/nasmdocb.html

官方手册基本上说的是相同的东西(还有更多),但不太方便。