在编译器最优化的领域里,暂存器配置(Register Allocation)的用途,在于使一个在较少寄存器数量的CPU可使用较大数量的变量,暂存器配置可使用在一个基本区块(Basic block)(区域暂存器配置)、函数或程序(全域暂存器配置)、或是透过Call Graph进行跨函数边域分析(跨程序暂存器配置),当完成每个函数或是程序,惯例上会要求每个调用函数的位置(Call site)必须插入存储或是还原。许多编程语言,程序员会有任意地配置过多变量的错误观念,然而在编译时,编译器必须决定在一个较小及有限寄存器的系统中如何分配这些变量,并非所有变量都是在同一时间运行,所以有些寄存器可能被分配超过一个变量。然而,两个被分配在同一寄存器的变量,若在同一时间使用,若是不破坏他的数值就无法被分配在相同的寄存器。无法被分配在相同的寄存器的变量必须被保留在随机存取存储器,在需要读取或写入时才会被加载,这个过程称之为溢出(spilling)。存储器访问速度比访问寄存器还慢,这会降低程序的运行速度,所以一个最优化的编译器会尽可能的将更多的变量放置在寄存器。