コンパイラの手順
■コンパイラは次の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より
どうもありがとうございました。