# 寄存器分配

1. 寄存器资源管理很重要，寄存器容量和个数有限，高级语言假设可以使用无限多个寄存器，因而会竞争寄存器的使用

2. 寄存器分配
   - 任务目标：在不改变程序行为前提下，将同一个寄存器分配给多个变量
   - 约束条件：同一时刻，一个寄存器只被一个变量占用；寄存器占满之后，新的使用申请将选择一个寄存器，移出其所存储的变量，放回内存 spill；换入换出寄存器开销尽可能小
   - 算法：图着色 (效果好，但时间长，传统编译器)、线性扫描 (时间短，效果接近图着色，现代编译器)

