back

コンパイラの手順 


コンパイラは次の5段階の処理を実行する

 
原始プログラム
 
字句解析
原始プログラムを変数、定数などの字句に分解
構文解析
字句が文法的に正しいかどうかをチェック
意味解析
変数の宣言、変数の型など意味の検査を行う
コード最適化
実行時間や領域の縮小を図るための最適化を行う
コード生成
機械語命令に変換
 
目的プログラム
 

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

 コンパイラの最適化に関する記述として,正しいものはどれか。

 ア オブジェクトコードを生成する代わりに,インタプリタ用の中間コードを
  生成する。

 イ コンパイルするコンピュータとは異なる機種で動作するオブジェクトモジュー
  ルを生成する。

 ウ プログラムが実行されたときに,制御が渡ったルーチン名やある時点での
  変数の内容を表示するようなオブジェクトコードを生成する。

 エ プログラムコードを解析して,実行時の処理効率がより高くなるようにオ
  ブジェクトコードを生成する。





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

>最適化コンパイラ[optimization compiler]
> 1.実行速度が速く、2.小さなオブジェクトプログラムを
> 作成するコンパイラ。1と2は相反することがあり、通常
> コンパイル時にどちらを優先するか指定できるようになって
> いる。
> 実行速度の速いオブジェクトプログラムを作るための最適化の
> 方法は、たとえば、定数の演算は事前に計算したり、ループ内
> で変化しない演算式をループの外に出したりする。
>(新星出版社「情報処理用語辞典」p.160 参考)

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



★★★宿題:二種(基礎情報処理技術者)向け★(2000/6/21)

 コンパイラに関する記述として,適切なものはどれか。

 ア 原始プログラムを解釈し,実行する。

 イ 構文解析,意味解析を行い,オブジェクトコードを生成する。

 ウ 中間コードを編集する。

 エ ロードモジュールを主記憶に格納する。


(解答例)

ア:インタプリンタ
イ:正解
ウ:?
エ:ローダ

ここらへんは毎回出ていますね。確実に理解しておきましょう。

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

> ウ=リンカ
> エ=ローダ

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

> ア インタプリタ
> イ 正解
> ウ リンカ
> エ ローダ
> でしょうか?

 どうもありがとうございました。「中間コードの編集」が他のモジュールとの
アドレス調整なら,リンカですが,最適化を表しているなら,コンパイラの仕事
です。

> コンパイラ【compiler】
> →http://www.e-words.ne.jp/view.asp?word=%u30B3%u30F3%u30D1%u30A4%u30E9
> →http://www.ascii.co.jp/ghelp/7/000711.html

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

> コンパイラ:コンパイル手順
> [原始(ソース)プログラム]
> コンパイル(字句解析→構文解析→意味解析→
>                 コード生成→目的プログラムの最適化) →
> [目的(オブジェクト)プログラム] → 連係編集プログラム →
> [ロードモジュール] → ロード[主記憶へ] → 実行
>
> 学研付録「直前総まとめ・総整理」P.19より

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