我有兴趣用C ++开始自己的JIT项目。我并不熟悉汇编,编译器设计等等。但是,我对所得到的机器代码格式非常不熟悉 - 比如说,当所有的说完成时,一个mov指令实际上是什么样的,是时候调用它了功能指针。那么,创建这样的东西的最佳资源是什么?
编辑:现在,我只对Windows上的x86感兴趣,将来只需要64位Windows。
答案 0 :(得分:5)
您想查看您感兴趣的体系结构的处理器手册。这些手册描述了操作码编码。对于x86处理器,可以从this page下载手册。
答案 1 :(得分:5)
答案 2 :(得分:2)
GNU lightning是一个多架构(x86,SPARC,PPC)库,用于在另一个程序中生成代码。您需要了解通用汇编语言概念,但不是很深入。您根本不必编写任何特定于体系结构的内容。闪电的下行(至少我上次使用它)是所提供的接口是支持目标上可用功能的交集:x86的小寄存器集,SPARC等RISC指令集,等等。单通道代码生成很容易使用但有自己的怪癖,就像你不能重新定位输出缓冲区(因为地址引用)所以如果你的空间不足,你通常必须重新开始。好消息是你可能会很快得到一个有效的例子。
答案 3 :(得分:0)
旧版本的NASM附带一个相当简洁的操作码参考,具有x86指令编码。 (看起来没有64位信息。)我发现这个使用谷歌:
http://alien.dowling.edu/~rohit/nasmdocb.html
官方手册基本上说的是相同的东西(还有更多),但不太方便。