静态单赋值形式
维基百科,自由的 encyclopedia
在编译器的设计中,静态单赋值形式(static single assignment form,通常简写为SSA form或是SSA)是中间表示(IR,intermediate representation)的特性,每个变数仅被赋值一次。在原始的IR中,已存在的变数可被分割成许多不同的版本,在许多教科书当中通常会将旧的变数名称加上一个下标而成为新的变数名称,以至于标明每个变数及其不同版本。在SSA,UD链(use-define chain,赋值代表define,使用变数代表use)是非常明确,而且每个仅包含单一元素。
SSA于1980年在IBM开始进行研究,它是由Ron Cytron、Jeanne Ferrante、Barry K. Rosen、Mark N. Wegman及F. Kenneth Zadeck所开发。
SSA等同于一个续体传递风格(CPS)的子集(不包含非本地端控制流程。当CPS被使用在IR,前者就不会发生),所以任何最佳化及转换,都会适用于CPS。当我们期待在C或是Fortran的编译器中使用SSA时,CPS已被广泛地使用在函数程式语言的编译器中,像是Scheme、ML及Haskell。