背景
在编译器的中间表示中,一般会设定虚拟寄存器有无限多个(方便优化),而真实的物理寄存器是有限的,因而编译器后端在将中间表示翻译成目标指令集的时候会进行寄存器分配,也就是将无限的虚拟寄存器映射到有限的物理寄存器上。例如:
a := c + d
e := a + b
f := e - 1
a + b 后a的寄存器可以被复用,e - 1后e的寄存器可以被复用,因而a、e、f可以分配相同的寄存器。
r1 := r2 + r3
r1 := r1 + r4
r1 := r1 - 1
如果两个两个临时变量t1和t2在不同的程序点只有一个是活跃的,则t1和t2可以分配相同的物理寄存器。否则,如果t1和t2如果同时活跃,则不能分配相同的物理寄存器。
接下来介绍图着色的寄存器分配算法。

1563

被折叠的 条评论
为什么被折叠?



