back

プログラムの実行


プログラム言語を使って、プログラムを作成、実行する手順は以下の流れとなる。

  エディタなどで作成  
原始プログラム
プログラム言語で書かれたプログラム
コンパイル
 
目的プログラム
翻訳したプログラム
リンカ
目的プログラム、ライブラリを結合して、ロードモジュールを作 成
ロードモジュール
実行可能なプログラム(exeファイルが該当する)
 
ローダ
実行可能な状態にするプログラム。主記憶の指定番地に格納
     

★★★宿題:二種向け★(2000/3/23)

 高水準言語で原始プログラムを作成した後,そのプログラムをコンパイル方式
によって 実行するまでの手順として,正しいものはどれか。

 ア 原始プログラム作成 → コンパイル → 連係編集 → ロード → 実行

 イ 原始プログラム作成 → コンパイル → ロード → 連係編集 → 実行

 ウ 原始プログラム作成 → 連係編集 → コンパイル → ロード → 実行

 エ 原始プログラム作成 → 連係編集 → ロード → コンパイル → 実行


(解答)

この問題は上の説明で理解できますね。

■解答■(宿題メールより)
  二種午前平成11年春問38

> VC++等で、コンパイルボタンを押してビルドボタンを押すと
>リンク中(連係編集)と表示され、実行されるまでの流れが
>よくわかります。

 どうもありがとうございました。

>アとウでいつもコンパイルが先か連係編集が先か迷ってしまいます。

 リンカは,機械語のものを合体させます。そすると,コンパイルの後です。
家でいうと,ソースが設計図で,コンパイルが大工さんの現場の仕事,証明とか
ドアの取り付けが,リンカの仕事です。


★★★宿題:二種(基本情報技術者)向け★(2000/7/28)

 次のエラーの事例のうち,リンケージエディタによって検出される事例はどれ
か。

 ア グループ又はブロックを示すカッコの対応が正しくなかった。

 イ プログラムで局所的に使用する変数の名前と属性の宣言を忘れていた。

 ウ プログラムの論理を間違えていた。

 エ 呼び出すサブルーチンの名前を間違えていた。


(解答例)

ア:構文解析
イ:意味解析
ウ:構文解析
ア,イ,ウともコンパイルの説明です。

エ:呼び出すサブルーチンの名前を間違ったらリンクできないですよね。

■解答■(宿題メールより)
  二種午前平成12年春問66

> リンケージエディタとは、各コンパイラなどがOBJモジュールを、結合して実行可
> 能プログラム(EXE)を生成するものである。
>  ア〜イは、各個々のプログラム内でのエラーなので、コンパイラで検出は出来
> るが、エは、他のプログラムとの連携の部分のエラーなので、プログラムの結合
> 作業をする、リンカでないと、エラーが検出できない
> よって、答えは、エ

 どうもありがとうございました。

> リンクとは各オブジェクトファイルを一つにまとめて
> ロードファイル(ロードモジュール略してLMという人もいます)
> を作成することをいいます。リンクを行うツールはリンカ
> (リンケージエディタ、ローダという人もいます)です。
> http://audit.lab.sphere.ad.jp/hata/docs/software-guide/2-6-4.html
>
> リンケージエディタ、リンカ、連係編集プログラムは同じものですか?

 その3つは同じものです。ローダは,リンカーとは違います。

> 連係編集プログラム(linkage editor)
>  目的プログラムやライブラリを結合してロードモジュール(主記憶に読込むプ
> ログラム)を作成するプログラム。
>  目的プログラムは機械語プログラムだが、そのままでは実行できない。通常の
> プログラムは、外部のサブルーチンを利用したり、実行時ライブラリ(ランタイ
> ムルーチン)などを使用しているからである。
>  プログラムの中で使用しているサブルーチンや、システムがあらかじめ用意し
> ている関数などをライブラリから探し出して、アドレスが重複しないようにアド
> レス補正して結合を行う。
> 新星出版社「情報処理用語辞典」P.383

 どうもありがとうございました。

>リンケージエディタは、C言語のmakefileみたいなものだと
>考えていいでしょうか。

 メイクは,コンパイル,リンクを順々にやる作業を自動化しています。