我正在学习Andrew Appel的《Java编译器实现》一书,目前正在构建低级中间表示法。起初,我决定针对JVM进行开发,忽略所有底层机器内容,但为了学习不熟悉的知识,我改变了想法。这改变了我的IR,因为针对JVM使我能够(或多或少地)忽略方法调用或对象构造。
Appel的书并没有详细介绍任何特定的机器架构,所以我想知道在哪里可以找到我需要了解的所有信息,以便进一步深入学习。
我目前意识到需要了解的事情有:
使用哪个指令集。我有两台笔记本电脑可以进行开发;两者都有Core 2 Duo处理器。我目前的理解是,x86处理器大多使用相同的指令集,但它们并不完全相同。
操作系统是否影响编译的代码生成步骤,或者它完全依赖于处理器。例如,我知道在32位和64位平台上运行代码的生成方式有所不同。
如何组织堆栈帧等。何时使用寄存器而不是将参数放在堆栈上,调用者保存还是被调用者保存,所有这些内容。我本来以为这将与指令集一起描述,但到目前为止,我还没有在任何地方看到这些特定信息。也许我在这里有什么误解?
欢迎提供相关资源的链接。