什麼是SSA形式(靜態單賦值形式)
重新命名變數,使每個變數在程式中恰好只被賦值一次的中間表示法形式。在匯合點以φ函數選擇值。定義與使用的關係變得明確,容易進行最佳化。
日文名稱: SSA形式
「SSA形式(靜態單賦值形式)」出現在1領域的2道練習題中(編譯器等)。
這個名詞所屬的領域: 編譯器
重新命名變數,使每個變數在程式中恰好只被賦值一次的中間表示法形式。在匯合點以φ函數選擇值。定義與使用的關係變得明確,容易進行最佳化。
日文名稱: SSA形式
「SSA形式(靜態單賦值形式)」出現在1領域的2道練習題中(編譯器等)。
這個名詞所屬的領域: 編譯器
正確答案:A. 對每個變數的指派在程式中恰好只有一次
在SSA形式中,會重新命名變數使每個變數只被指派一次,並在匯合點以φ函數選擇值。例如x被指派兩次時,會分成x1與x2,以明確區分使用的是哪一個。由於定義與使用的關係變得清楚,因此容易進行常數傳播與刪除無用程式碼等最佳化。分支由φ函數處理,所以並不是分支指令就此消失。變數也不是放在記憶體中,多半是作為暫存器的候選來處理。
在SSA形式中,會重新命名變數使每個變數只被指派一次,並在匯合點以φ函數選擇值。
關於SSA形式中介表示的特徵,下列何者正確?在SSA形式中,then側的指派為x1、else側的指派為x2,兩者名稱各異,因此匯合之後計算y時,必須表明該使用哪一個x。
將上方程式碼轉為SSA形式後,if敘述之後會加入類似「x3 = φ(x1, x2)」的式子。關於此φ函數的作用,下列何…中間表示法(IR) 共同子運算式消除 向量化 行內展開 抽象語法樹(AST) 指令排程 迴圈展開 基本區塊 常數摺疊 強度削減