对于我的编译器课程,我正在为 MIPS 架构构建一个基于图形着色的寄存器分配器。对于我的实施,我正在遵循 Muchnick 的处理方法。
Muchnick 对如何处理这些分配器中的函数参数有点模糊。
我做了一些假设,并认为我会澄清相同的。
- 有这个步骤可以从中级 IR 转换为低级 IR。尚未处理嵌套函数调用。我的想法是从右到左扫描函数调用,并为最里面的向外调用设置 IR。通过这种方式,我可以使用 MIPS 调用约定,将前几个参数分配给参数寄存器,其余的以最少的溢出量(只有 1 个)堆栈。
- 书中的寄存器合并处理对我来说并不直观,因为它没有解决如何处理将函数参数移动到固定参数寄存器的 LIR 代码。经过深思熟虑,我得出的结论是,我不应该为参数传递动作进行寄存器合并。
非常感谢对这些假设的反馈/想法。