平成24年 春期 基本情報技術者 午後 問02
問02 5問選択問2 コンパイラの最適化に関する次の記述を読んで,設問1〜3に答えよ。 コンパイラとは,プログラム言語で記述された原始プログラムを翻訳して目的プログラムを 生成するためのソフトウェアである。コンパイラの機能の一つに最適化がある。 最適化では,原始プログラムを翻訳する過程で,プログラムの実行時間を短くするために 原始プログラムの構造を変換する。最適化の方法の例を表1に示す。
[プログラム1]
設問1 次の記述中の に入れる正しい答えを,解答群の中から選べ。 表2において,最適化の方法を@,A,Bの順で適用するとき,Aで 適用される最適化の方法は であり,Bで適用される最適化の 方法は である。 a,b に関する解答群 ウ 定数の畳込み エ 定数伝播 オ 無用命令の削除 カ ループ内不変式の移動 キ ループのアンローリング
設問2 次の記述中の に入れる正しい答えを,解答群の中から選べ。 関数のインライン展開の例を図1に示す。図1の関数 func をインライン展開した場合, 実引数 10 の値が仮引数 p に代入され,その値 10 が関数 func 内の変数 p の値になる(図1@)。 次に, の方法を適用することによって, 条件式 p≧ 10 の判定結果や p を含んだ計算式の計算結果がコンパイル時に確定する(図1A)。 その結果,func(10) を値 15 に置き換えることができる(図1B)。 なお,#w はコンパイラが最適化をしたときに生成した整数型の変数である。
図1 関数のインライン展開の例 c に関する解答群 ウ 定数伝播 エ 無用命令の削除 オ ループ内不変式の移動 カ ループのアンローリング
設問3 次の記述中の に入れる適切な答えを,解答群の中から選べ。 最適化をしないときと最適化をしたときとで浮動小数点数の演算の結果が異なる場合がある。 プログラム1に対して表2の最適化をしなかったものと,最適化をしたものとに, y[0]=307000000.0,y[1]=305000000.0,m =-303000000.0,n = 4.0 を与えて実行した。 その結果の x[0],X[1] が次のとおりになった。ここで,同一優先順位の算術演算子は,左から順に演算する。 最適化をしたとき: x[0]=4000000.0,x[1]=2000000.0 この実行結果が異なる原因としては, の方法の適用によって演算順序が変化したことで, が発生したからである。ここで,浮動小数点数の演算は単精度(仮数部は 23 ビット)で 計算しているものとする。 d に関する解答群 ウ 定数の畳込み エ 定数伝播 オ 無用命令の削除 カ ループ内不変式の移動 キ ループのアンローリング e に関する解答群
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ] | ||||||||||||||||