コンピュータで実行可能な形式の機械語プログラムを何と呼ぶか。
平成25年度 春期 ITパスポート試験 問60
この問題の解説と、これまでの解答の記録です。
問 60
不正解ア
オブジェクトモジュールはコンパイル直後の機械語プログラムで、機械語であるという点は満たすが、外部モジュールやライブラリへの参照アドレスが未解決なため、単独ではコンピュータで実行できない。実行可能にするにはリンカによる連係編集が必要で、その結果できるのがロードモジュールである。「機械語だが、まだ実行可能形式ではない」段階を表す語なので誤り。
不正解イ
ソースコードは C 言語や Java などのプログラム言語で人間が記述した原始プログラムであり、機械語ではない。コンピュータが直接実行することはできず、コンパイラやインタプリタによる翻訳を経て初めて実行できる。設問の「機械語」「実行可能な形式」のいずれも満たさないので誤り。
不正解ウ
テキストデータは文字コードだけで構成された、人間が読める形式のデータ全般を指す語で、プログラムの実行形式を表す用語ではない。ソースコードや設定ファイルはテキストデータだが、それ自体が機械語の実行可能プログラムを意味することはないので誤り。
- エ
正解 正解は エ。ロードモジュールとは、リンカ (連係編集プログラム) による処理を終えて、そのまま主記憶に読み込めば実行できる状態になった機械語プログラムのことである。プログラムが動くまでには段階があり、人が書いたソースコードをコンパイラが翻訳すると、まず機械語のオブジェクトモジュールができる。しかしこの時点では、他のモジュールやライブラリの関数を呼び出す部分のアドレスが未解決で、単体では実行できない。そこでリンカが複数のオブジェクトモジュールや標準ライブラリを結合し、参照アドレスを解決して一本化する。こうしてできあがったものがロードモジュールであり、ローダが主記憶に配置すれば CPU が命令を実行できる。したがって「コンピュータで実行可能な形式の機械語プログラム」を指す語は ロードモジュール である。
- プログラムが実行されるまでの流れを押さえる: ソースコード → コンパイル → オブジェクトモジュール → リンク (連係編集) → ロードモジュール → ローダが主記憶へロード → 実行。
- オブジェクトモジュールとロードモジュールの違いは「アドレス参照が解決済みで、そのまま実行できるか」。どちらも機械語だが、実行可能形式と呼べるのはリンク後のロードモジュールだけである。