靜態單賦值形式
維基百科,自由的 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。