コンパイラ
SSA形式の中間表現の特徴として正しいものはどれか。
- A各変数への代入がプログラム中でちょうど1回になる
- Bすべての変数が、レジスタではなくメモリ上に置かれる
- C条件分岐の命令を一切含まない形に書き直される
答えと解説を見る
正解:A. 各変数への代入がプログラム中でちょうど1回になる
SSA形式では、変数への代入が1回になるよう名前を付け替え、合流点ではφ関数で値を選びます。例えば x を2回代入するなら x1 と x2 に分け、どちらが使われているかを明確にします。定義と使用の関係がはっきりするため、定数伝播や不要コードの削除などの最適化がしやすくなります。分岐はφ関数で扱うので、分岐命令がなくなるわけではありません。変数がメモリに置かれる形でもなく、多くはレジスタの候補として扱われます。
- A. 正しい。代入が1回になるよう名前を付け替えます。
- B. 変数をメモリに置く形式ではありません。
- C. 分岐はそのまま残り、合流点はφ関数で扱います。