基本情報技術者 合格への道しるべ

目指せ!基本情報技術者資格取得

問2

 コンパイラの最適化に関する次の記述を読んで、設問1~3に答えよ。

 コンパイラとは、プログラム言語で記述された原始プログラムを翻訳して目的プロ
グラムを生成するためのソフトウェアである。コンパイラの機能の一つに最適化があ
る。最適化では、原始プログラムを翻訳する過程で、プログラムの実行時間を短くす
るために原始プログラムの構造を変換する。最適化の方法の例を表1に示す。

H24_fe_pm_sp_07.png

 擬似言語の形式で記述したプログラムの一部(以下、プログラム1という)に対し
て、表1の最適化の方法を複数組み合わせて最適化した例を、表2に示す。

H24_fe_pm_sp_08.png

H24_fe_pm_sp_09.png

設問1 次の記述中のshikaku.pngに入れる正しい答えを、解答群の中から選べ。

  表2において、最適化の方法を①,②,③の順で適用するとき、②で適用され
  る最適化の方法はH24_fe_pm_sp_a.pngであり、③で適用される最適化の方法は
  H24_fe_pm_sp_b2.pngである。

a,bに関する解答群
 ア 関数のインライン展開    イ 共通部分式の削除
 ウ 定数の畳込み        エ 定数伝播
 オ 無用命令の削除       カ ループ内不変式の異動
 キ ループのアンローリング

※解答・解説はマウスをドラッグすると表示されます。





設問2 次の記述中のshikaku.pngに入れる正しい答えを、解答群の中から選べ。

   関数のインライン展開の例を図1に示す。図1の関数funcをインライン展開
  した場合、実引数10の値が仮引数pに代入され、その値10が関数func内の変
  数pの値になる(図1 ①)。次に、H24_fe_pm_sp_c.pngの方法を適用することによって、
  条件式p≧10の判定結果やpを含んだ計算式の計算結果がコンパイル時に確定
  する(図1 ②)。その結果、func(10)を値15に置き換えることができる(図1 ③)。
   なお、#wはコンパイラが最適化をしたときに生成した整数型の変数である。

H24_fe_pm_sp_10.png

cに関する解答群
 ア 共通部分式の削除    イ 定数の畳込み
 ウ 定数伝播        エ 無用命令の削除
 オ ループ内不変式の異動  カ ループのアンローリング

※解答・解説はマウスをドラッグすると表示されます。





設問3 次の記述中のshikaku.pngに入れる適切な答えを、解答群の中から選べ。

    最適化をしないときと最適化をしたときとで浮動小数点数の演算の結果が異な
   る場合がある。プログラム1に対して表2の最適化をしなかったものと、最適化
   をしたものとに、y[0]=307000000.0、y[1]=305000000.0、m=-303000000.0、
   n=4.0を与えて実行した。その結果のx[0]、x[1]が次のとおりになった。ここ
   で、同一優先順位の算術演算子は、左から順に演算する。
     最適化をしないとき: x[0]=4000004.0、x[1]=2000004.0
     最適化をしたとき:  x[0]=4000000.0、x[1]=2000000.0
    この実行結果が異なる原因としては、H24_fe_pm_sp_d.pngの方法の適用によって演算
   順序が変化したことで、H24_fe_pm_sp_e.pngが発生したからである。ここで、浮動小数
   点数の演算は単精度(仮数部は23ビット)で計算しているものとする。

dに関する解答群
 ア 関数のインライン展開    イ 共通部分式の削除
 ウ 定数の畳込み        エ 定数伝播
 オ 無用命令の削除       カ ループ内不変式の移動
 キ ループのアンローリング

eに関する解答群
 ア 桁あふれ   イ 桁落ち   ウ 情報落ち   エ 丸め誤差

※解答・解説はマウスをドラッグすると表示されます。



スポンサーサイト

Comment













非公開コメントにする
Trackback

Trackback URL

プロフィール

基本情報技術者午後対策@のぶ

HN:のぶ
性別:男性
年齢:35歳
出身地:北海道

IT関係の高校,大学卒業後、ダメ人間だったのでうまく就職できませんでした・・・。かなり反省しています。よって、25歳で上京!
"できる"ITエンジニアを目指していました。
色々あり、IT業界の仕事は辞めてしまいましたが、ITの分野に興味があるのでIT業界で仕事をする又は、目指している皆さんのお役に立てるかと思い、このブログを開設しました。頑張りましょう!

【現IT資格保持】
・CCNA(640-802J)