Compilation 寄存器分配器实际上是如何工作的?

Compilation 寄存器分配器实际上是如何工作的?,compilation,compiler-construction,compiler-optimization,cpu-registers,Compilation,Compiler Construction,Compiler Optimization,Cpu Registers,如果你拿起一本几乎所有的编译器构造教科书,它会告诉你寄存器分配的问题归结为干涉图的着色。但请与LLVM开发人员交谈: 干涉图的制作成本很高 溢出代码的放置比着色更重要 需要对别名和重叠寄存器类进行建模 灵活性比着色算法更重要 那么实际使用的算法是什么呢?这些算法设计用于处理哪些额外问题?存在线性扫描寄存器分配:

如果你拿起一本几乎所有的编译器构造教科书,它会告诉你寄存器分配的问题归结为干涉图的着色。但请与LLVM开发人员交谈:

  • 干涉图的制作成本很高
  • 溢出代码的放置比着色更重要
  • 需要对别名和重叠寄存器类进行建模
  • 灵活性比着色算法更重要

那么实际使用的算法是什么呢?这些算法设计用于处理哪些额外问题?

存在线性扫描寄存器分配: