コンパイラ

繰り返し回数が100回のループを、本体を4回分並べるループ展開で書き換えると、回数の判定と分岐は何回になるか。(100は4で割り切れるものとする)

  1. A100回
  2. B25回
  3. C400回
答えと解説を見る

正解:B. 25回

本体を4回分並べると、1回の繰り返しで元の4回分の処理を行うので、繰り返しの回数は 100 ÷ 4 = 25回になり、回数の判定と分岐も25回に減ります。元の100回に比べて、分岐などの手間が4分の1になります。回数が4で割り切れない場合は、余った分を処理する短いループを後ろに付け加えます。100回は展開しない場合の回数、400回は本体の処理の数を誤って掛けた値です。

  • A. 100回は展開しない場合の回数です。
  • B. 正しい。100 ÷ 4 = 25回です。
  • C. 400回は誤って掛け算した値です。
この分野を解く 分野ページへ

コンパイラのほかの問題

  1. C言語のプログラムから実行ファイルができるまでの一般的な流れとして正しいものはどれか。
  2. 生成した機械語の短い並びを小さな窓で見て、むだな命令の組み合わせをより良い命令に置き換える最適化を何と呼ぶか。
  3. 上のコードで、sqをインライン展開したあとに続けて効く最適化と、その結果として正しいものはどれか。
  4. ソフトウェアパイプライン化(ソフトウェアパイプライニング)の説明として正しいものはどれか。
  5. コンパイラが、浮動小数点数の足し算 (a + b) + c を、厳密な設定のもとでは a + (b + c) に勝手に並べ替えない理由として正しいものはどれか。