[0180] コンパイラ

平成12年度春期 (旧)第2情報処理技術者試験より
コンパイラに関する記述として、適切なものはどれか。
原始プログラムを解釈し、実行する。
構文解析、意味解析を行い、オブジェクトコードを生成する。
中間コードを編集する。
ロードモジュールを主記憶に格納する。

正解

解説

 コンパイラに関する問題です。

 コンパイラ(compiler)とは、Cなどの高級言語のソースプログラムを、コンピュータが直接解釈できるマシン語に変換するプログラムのことです。一文ずつマシン語に変換しながら実行するインタプリタ型の言語よりも、すべてをマシン語に翻訳してから実行するコンパイラ型言語の方が、処理速度が速い傾向にあります。

 一般的に、仕様書からプログラムを作成し、実行できるようになるまでには、下図のような手順を踏みます。コンパイラは、テキストエディタなどで入力されたソースプログラムから、オブジェクトモジュール(オブジェクトコード)を作成するまでの作業を行います。オブジェクトモジュールは、中間モジュールとも呼ばれ、まだ実行可能ではありません。リンカと呼ばれるオブジェクトモジュールの連結編集を行うプログラムを経由してから実行可能になります。



 コンパイラの中身を詳しくみてみましょう。以下の手順でオブジェクトモジュールを作成します。この手順の中で、プログラムのミスなど、処理が先に進めなくなる問題が発見されたときは、コンパイルエラーとして利用者へ通知します。コンパイルエラーが発生したとき、利用者は原因を調べてからソースプログラムを修正し、再度コンパイルを行います。
  • 字句解析 : ソースプログラムを読み取って、記号や名前などに分解する
  • 構文解析 : ソースプログラム中の文や式の構造を解析する
  • 意味解析 : 文や式の意味を調べる
  • コード生成: マシン語のコードを生成する
  • 最適化  : 実行速度向上やサイズ縮小のために、生成されたコードを修正する



 それでは選択肢をみていきましょう。

 原始プログラムを解釈し、実行する。
解釈しながら実行するのは、インタプリタです。

 構文解析、意味解析を行い、オブジェクトコードを生成する。
正しい記述です。

 中間コードを編集する。
中間コード、すなわちオブジェクトモジュールを編集、連結するのは、リンカです。(※「中間コードの編集」の内容が曖昧なので、コンパイラの最適化処理を表しているかもしれません)

 ロードモジュールを主記憶に格納する。
主記憶へ読み込ませるのは、ローダです。


 よって、イが正解となります。
※ 解説の内容は執筆時点のものであり,含まれている情報の正確性,妥当性について保証するものではありません。ご注意ください・・・

関連する(かもしれない)問題