我目前正在通过Andrew Appel的Java编译器实现方式,并且我正在构建低级别中间表示法。为x86处理器生成汇编
最初,我决定瞄准JVM并忽略所有低级机器的东西,但为了学习我不了解的东西,我已经改变了心意。这改变了我的IR,因为以JVM为目标允许我(或多或少)在进行方法调用或构建对象时挥手。
Appel的书没有详细介绍任何特定的机器架构,所以我想知道我在哪里可以找到我需要知道的更远的地方。
我目前知道,我需要知道的事情是:
的指令集来使用。我有两台笔记本电脑可以开发;都有Core 2 Duo处理器。我目前的理解是,x86处理器大多使用相同的指令集,但它们并不完全相同。
操作系统是否影响编译的代码生成步骤,或者它是否完全依赖于处理器。例如,我知道生成代码在32位与64位平台上运行的不同之处。
如何组织栈帧等。何时使用寄存器与将参数放入堆栈,调用者保存与被调用者保存,所有这些。我一直认为这将与指令集一起描述,但到目前为止我还没有在任何地方看到这个特定的信息。也许我在这里误解了一些东西?
以资源代替答案的链接非常受欢迎。
投票结束太宽泛。 – 2015-10-01 12:20:18