編譯器
關於SSA形式中介表示的特徵,下列何者正確?
- A對每個變數的指派在程式中恰好只有一次
- B所有變數都放在記憶體上,而不是暫存器
- C被改寫成完全不含條件分支指令的形式
查看答案與解析
正確答案:A. 對每個變數的指派在程式中恰好只有一次
在SSA形式中,會重新命名變數使每個變數只被指派一次,並在匯合點以φ函數選擇值。例如x被指派兩次時,會分成x1與x2,以明確區分使用的是哪一個。由於定義與使用的關係變得清楚,因此容易進行常數傳播與刪除無用程式碼等最佳化。分支由φ函數處理,所以並不是分支指令就此消失。變數也不是放在記憶體中,多半是作為暫存器的候選來處理。
- A. 正確。重新命名使指派只有一次。
- B. 這不是把變數放在記憶體中的形式。
- C. 分支仍然保留,匯合點以φ函數處理。