コンパイラ
レジスタ割り当ての準備として行う生存区間(ライブネス)の解析で求めるものはどれか。
- Aプログラム全体で、各変数が宣言された行の番号
- B変数の値の最大値と最小値
- C各時点で、その値があとでまだ使われる可能性があるかどうか
答えと解説を見る
正解:C. 各時点で、その値があとでまだ使われる可能性があるかどうか
生存区間の解析では、プログラムの各時点で、ある値がこの先で読まれる可能性がある(生きている)かを、制御フローグラフをたどって求めます。生きている値はレジスタに保持しておく必要がありますが、もう使われない値のレジスタは別の値に使い回せます。同時に生きている値どうしは同じレジスタに入れられないので、この結果から干渉グラフを作ります。宣言の位置や値の範囲を求める解析ではありません。
- A. 宣言の位置ではなく、使われる可能性を調べます。
- B. 値の範囲を求める解析とは別のものです。
- C. 正しい。各時点で値がまだ使われるかを求めます。