基本情報技術者の勉強 コンパイラ
インタプリタ方式でプログラムを実行する場合、プログラミング言語を機械語に変換し、そのまま実行までやってくれます。
しかし、コンパイラ方式でプログラムを実行していく場合、コンパイラがやってくれるのは、プログラミング言語を機械語に変換するだけです。
ちなみに、インタプリタ方式でもコンパイラ方式でも、機械語に変換され後のファイルのことをオブジェクトファイルと言います。
コンパイラ方式の場合、オブジェクトファイルを用いて、プログラムを実行してくれるソフトウェアが必要なのです。
では、いったいどのようなソフトウェアが必要なのでしょうか?
プログラミング言語
プログラミング言語はコンピュータに命令を与えるための言葉です。
こちらを見てみてください。
コンパイラ方式
コンパイラ方式は、ソースコードを一括で機械語に変換してくれます。
この作業を行ってくれるソフトウェアのことをコンパイラと言います。しかし、コンパイラの作業はここまでです。変換をして機械語だけで表されたオブジェクトコードを書いて終了してしまいます。
ここからの作業を引き継ぎ、実際にプログラムを実行してくれるある 2 つのソフトウェアが登場します。
リンカ
コンパイラ方式の場合に登場するソフトウェアにリンカがあります。
プログラミング言語にはライブラリが用意されています。ライブラリにはよく使う関数などが保存されています。
例えば入出力関数です。入出力関数は頻繁に使われる関数です。そのため、あらかじめライブラリに保存しておき、いつでも呼び出せるようにしておくのです。
よく読む本を机の周りに置いておくようなイメージでしょうか?
ライブラリを、呼び出し元のオブジェクトコードと引っ付けるだけで、汎用的な関数は使えます。この作業のことをリンクと言います。結合とかそんな意味です。
そして、リンクを行うソフトウェアのことをリンカと言うのです。
リンクが完了してできるファイルを実行可能ファイル(ロードモジュール)と言います。
ローダ
実行可能ファイルが完成するとあとは実行するだけです。実行してくれるのは CPU です。
CPU に実行してもらうために、実行可能プログラムを主記憶の空き容量に読み込む必要があります。この作業をロードと言います。そして。ロードを行うソフトウェアがローダなのです。
まとめ
- コンパイル→リンク→ロードの一連の流れで実行する
過去問に挑戦
リンカの機能として,適切なものはどれか。
- 作成したプログラムをライブラリに登録する。
- 実行に先立ってロードモジュールを主記憶にロードする。
- 相互参照の解決などを行い,複数の目的モジュールなどから一つのロードモジュールを生成する。
- プログラムの実行を監視し,ステップごとに実行結果を記録する。