title: 如果变量在后面的代码中不再被引用，在生存期内，它的寄存器可以被编译器挪为他用吗?
desc: 考虑编译器的优化
topic: 编译原理
content: 会。而且，即便变量在后面的代码中还会被使用，编译器都有可能将该寄存器挪作它用。因为，物理寄存器数目常常少于活跃变量数，当所有的物理寄存器都被活跃变量占用时，编译器需要选择一个寄存器，将其中的值溢出到内存中，使得该寄存器可以用于加载其他变量或存储计算结果，这种现象叫Register spilling。其中编译器选择溢出哪一个寄存器的策略，取决于寄存器分配算法。题主可以了解下 Register allocation