静态单赋值形式(SSA):一种编译器中的中间表示(IR)形式,要求每个变量在程序文本中只被赋值一次;当控制流汇合(例如 if/else 合并)时,通常用 φ(phi)函数把不同路径上的值合并成一个新变量。常用于数据流分析与优化。
(在不同语境下也可能指更广义的“单赋值”思想,但最常见的是编译器里的 SSA 形式。)
/ˈstætɪk ˈsɪŋɡəl əˈsaɪnmənt/
The compiler converts the code into static single assignment form.
编译器会把代码转换成静态单赋值(SSA)形式。
In SSA, a φ-function is inserted at the join point so that values from different branches become a single new variable for later optimizations.
在 SSA 中,会在控制流汇合点插入 φ 函数,把不同分支的值合并为一个新的变量,以便后续优化。
“Static single assignment”由三部分组成:static(静态的)、single(单一的)、assignment(赋值)。其中 static 源自拉丁语 stat-/(“站立、固定”之意的词根),single 来自拉丁语 singulus(“一个一个的”),assignment 与拉丁语 assignare(“指派、分配”)相关。作为术语,SSA 形式在 20 世纪 80–90 年代的编译器研究中被系统化与推广,与控制流图、支配关系及 φ 函数等概念紧密相关。