---
# System prepended metadata

title: Chapter16-2「コンパイラ方式でのプログラム実行手順」
tags: [基本情報技術]

---

# Chapter16-2「コンパイラ方式でのプログラム実行手順」

## 7/27(火)

###### tags:`基本情報技術`

さつき：
> 複数ファイルがある場合、バラバラのコンパイルされたファイルが出来上がる。
> リンカというプログラムで、実行可能ファイルを生成する。
* コンパイラの仕事
    * 字句解析
        > 変数A = 変数B + 10
        > 「変数A」「=」...というふうに。　
    * 構文解析...構文木と呼ばれるデータ構造にを生成する
    * 意味解析...変数の型や分が、プログラム言語の仕様に沿っているかチェックする
    * 最適化...処理効率の向上を目的として、よりよいプログラムコードの再編成を検討する。
        > 頭いい。
    * コード生成...目的プログラムを生成する
* リンカの仕事
    * さまざまな関数やモジュールを組み合わせることで、実行に必要な機能がそろったプログラムファイルになる。
    * このプログラムファイルを、「実行可能ファイル」とも言うし、「ロードモジュール」とも言う。
* ローダの仕事
    * ロードモジュールを主記憶装置に読み込ませる作業を、ロードという。
    * ロードを担当するプログラムが、ローダ。
* 過去問
    * 問１:OK
    * 問２：おけ。


にわ：
- 読み込み
    * コンパイラ方式でのプログラム実行手順：コンパイラは具体的に何してる？
        * 字句解析：コードを字句（トークン）単位に分解
        * 構文分解：分解したトークンを言語の構文規則に従って解析
        * 意味解析：型や文が言語の仕様に沿っているかチェック
        * 最適化：コードをより効率よく最適化
        * コード生成
    * リンカ：自前のモジュール群やライブラリなどをくっつけて実行可能な形（ロードモジュール）にする連係編集プログラム。
    * ローダ：リンカが作ったロードモジュールを主記憶装置に読み込ませるプログラム。
- 過去問
    * 問１：OK
    * 問２：OK


ちさと：
* コンパイラ方式には実行までに２種類のプログラムが登場する
    * リンカ
        * 分割したモジュール、ライブラリの関数や共通モジュールなどを全てつなぎ合わせる
        * あらかじめリンクしておく手法を「静的リンキング」という
        * この時点ではリンクさせずにプログラム実行時に共有ライブラリなどをロードしてリンクする手法を「動的リンキング」という
    * ローダ
        * ロードモジュールを主記憶装置に読みこませる作業（ロード）
        * これを担当するプログラムをローダという
* コンパイラの中で行われてること
    * 字句（トークン）解析
        * 変数A＝変数B＋１０とあったら、「変数A」「＝」「変数B」「１０」というふうに分ける
    * 構文解析
        * 分解したトークンを解析して構文木と呼ばれるデータ構造を作る
    * 意味解析
    * 最適化
    * コード生成
* 過去問
    * 問１：おk
    * 問２：おk

まい：
* ソースコード→(コンパイラ)→目的プログラム→(リンカ)→実行可能ファイル→(ローダ)→実行できる！ 
　　* コンパイラ/ 機械語化
　　* リンカ/ 実行に必要なファイルを全部くっつける(ライブラリなども)
　　* ローダ/ 主記憶装置に読み込む

* 過去問
  * 問一　ok
  * 問二  ok 