平成18年 秋期 基本情報技術者 午前 問36

コンパイラにおける最適化の説明として、適切なものはどれか。

 ア  オブジェクトコードを生成する代わりに、インタプリタ用の中間コードを生成する。
 イ  コンパイルを実施するコンピュータとは異なるアーキテクチャをもったコンピュータで動作するオブジェクトコードを生成する。
 ウ  プログラムコードを解析して、実行時の処理効率を高めたオブジェクトコードを生成する。
 エ  プログラムの実行時に、呼び出されたルーチン名やある時点で変数の内容を表示するようなオブジェクトコードを生成する。


答え ウ


解説

 ア  TeX(てふ、HTMLのような記述方法で文書を作るツール。数式などの表現が自由にできるなどの特徴がある。)などの文書を印刷するため、一度PostScriptファイルにするコンパイラなどが代表例です。(他にもあるのでしょうが詳しくはわかりません。)
 イ  クロス開発と言われる開発手法で携帯電話のソフトウェアをパソコン上で開発するなどがこれになります。
 ウ  コンパイラの最適化の説明です。
 エ  コンパイラのデバッグモードのことです。デバッグモードを使用するとデバッグに必要な情報(ルーチン名や変数内容の表示)をオブジェクトコード内に生成します。

 C言語のコンパイルの最適化技術は年々進化していますので、処理速度の問題が発生したとき、以前はアセンブラ化するようなこともありましたが、最近は人がアセンブラ化するよりコンパイラの最適化を利用したほうが効率がいいです。
 ただし、最適化をすると実行オブジェクトがソースとは異なった順番で動作するため、デバッグ時にわかりにくくなるという問題点もあります。


キーワード
・コンパイラ最適化

キーワードの解説
  • コンパイラ最適化
    コンパイラ最適化(Compiler Optimization)とは、ソースコードから生成するオブジェクトコードや実行モジュールを効率化し、実行時間やメモリ使用量などを最小化すること。
    最近では携帯電話に代表されるように、消費電力を抑える製品が多くなってきたため、消費電力を最小化する最適化手法も考えられている(一部、実現化されている)。

もっと、「コンパイラ」について調べてみよう。

戻る 一覧へ 次へ