---
# System prepended metadata

title: 'Chapter5-3,5-4　「命令の実行手順とレジスタ」「機械語のアドレス指定方式」'
tags: [基本情報技術]

---

# Chapter5-3,5-4　「命令の実行手順とレジスタ」「機械語のアドレス指定方式」
## 4/27(火) 
###### tags:`基本情報技術`



皐月：

#### CPUの命令実行手順とレジスタ
* CPU内部にも記憶装置がある！これをレジスタという。
    * 記憶装置がいっぱい（＞＜）
* 主記憶装置から読み出したプログラムを実行する際に、CPUの中で記憶しておく
* レジスタの種類も多い（＞＜）。これは実行手順と一緒に覚えよう。

#### 命令の実行手順
#### その①「命令の取り出し（フェッチ）」
* 取り出すべき命令がどこにあるか探す→プログラムカウンタ（レジスタ）が知っている
    * プログラムカウンタの示すアドレスを参照して命令を取り出す。
    * これを命令レジスタに記憶させる。
    * 取り出し終わったら、プログラムカウンタの値を１つ増加させる。（図をみるとわかりやすい）
#### その②「命令の解読」
* 命令レジスタに取り出した値は、「命令部：命令の種類を示すコード番号が入っているところ」「オペランド部：処理対象となるデータを納めたメモリアドレスが入っているところ」

#### その③「対象データ（オペランド）読み出し」
* 命令が「加算」であった場合、２つの値が必要になる
    * この値を読み取ってくる作業
    * 命令レジスタのオペランド部が、読み出すべきデータのメモリアドレスなどを指している。
    * ただし、アドレスの指定方式には色々な種類があるので、オペランド部に直接「メモリのアドレス」が入っているとは限らない
    * 汎用レジスタなどに記憶させる。

#### その④「命令実行」
* 演算装置が計算する。


#### 過去問
* 用語
    * [プロセッサ（わわわIT用語時点）](https://wa3.i-3-i.info/word11281.html)
    * アキュムレータ
    > アキュムレータ（英: Accumulator）は、コンピュータにおいて、演算装置による演算結果を累積する、すなわち総和を得るといったような計算に使うレジスタや変数のことである。
    * データキャッシュ
    > コンピューターの処理速度の高速化を図るために用いるキャッシュメモリーの1つ。CPUの直接的な処理対象であるデータを保存する。


#### アドレスの指定方式には色々ある

* 前章の話...命令レジスタのオペランド部が対象データのありかを示す方法には色々な方式がある。
* コンピュータへの指示は、０と１で構成された命令語。
* 何らかの計算によって、アドレスを求める方法をアドレス指定という。
* めっちゃあるやん。。。
#### 即値アドレス指定方式
* オペランド部に、対象となるデータそのものが入っている。
* メモリへの参照は行われない。
#### 直接アドレス指定方式
* オペランド部に記載しているアドレスが、そのまま実行アドレスとして使える。
#### 間接アドレス指定方式
* オペランド部に記載しているアドレスの中に「対象データが入っている箇所を示すメモリアドレス」が入っている。

> 例）オペランド部にはアドレス200。アドレス200には、アドレス150。アドレス150には、値18。
#### インデックスアドレス指定方式
* オペランド部の横に、インデックスレジスタの値を加算することで、アドレスを求めます。
#### ベースアドレス指定方式
* オペランド部の値に、ベースレジスタの値を加算することで、実行アドレスを求めます。
#### 相対アドレス指定方式
* オペランド部の値に、プログラムカウンタの値を加算することで実行アドレスを求めます。

#### 過去問
* 問１ 用語！
* 問2 用語！　

にわ：
- chapter 5-3
    - 読み込み
        * CPUが命令を実行するために取り出した情報は「レジスタ」と言うCPU内部の記憶装置に保持する。
        * レジスタには色々種類がある。
        * 命令の実行手順①：命令の取り出し（フェッチ）
            * プログラムカウンタから取り出すべき命令のアドレスを参照して命令取り出し→命令レジスタに記憶させる→プログラムカウンタの値を+1
        * 命令の実行手順②：命令の解読
            * 取り出した命令は「命令部」「オペランド部」の構成でできている。これを命令でコーダを使って解読する。
        * 命令の実行手順③：対象データ（オペランド）読み出し
            * 「オペランド部」を参照して処理対象となるデータ（オペランド）を読み出し、汎用レジスタなどに記憶させる。
        * 命令の実行手順④：命令実行
            * 演算装置使って実行
    - 過去問
        * 問1、問2、問3:覚えてればいける感じ（消去法）
        * 問4:用語。。
            * 「プロセッサ」ってよく PC買うとき見かけるけど、命令セット実行(=プロセス)のためのハードウェアだからか・・・！
            * 「アキュムレータ」は演算結果を累積、つまり総和を得る的な計算に使うレジスタ。
        * 問5:OK
- chapter 5-4
    - 読み込み
        * 命令は「命令部」「オペランド部」の構成でできているが、「オペランド部」は命令の種類によって方式が異なる。
            * てか命令の並び順、まんま英語やん・・・！と言う気づき
        * 即値アドレス方式：
            * オペランド部に対象データそのものが入ってる
        * 直接アドレス指定方式：
            * オペランド部にあるアドレスがそのまま実行アドレスとして使える
        * 間接アドレス指定方式：
            * オペランド部にあるアドレスの中に、対象データのありかを示すメモリアドレスが記載されてる
        * インデックス（指標）アドレス指定方式：
            * オペランド部の値にインデックスレジスタ（連続したアドレスを使うときに用いる）の値を加算することで実行アドレスを求める。インデックスレジスタを参照するって感じ
        * ベースアドレス方式：
            * オペランド部の値にベースレジスタ（プログラムがメモリにロードされた時の先頭アドレスを記憶してるレジスタ）の値を加算することで実行アドレスを求める。これであれば、メモリ上のどこにプログラムがロードされても命令を変える必要がなくなる。
        * 相対アドレス指定方式：
            * オペランド部の値にプログラムカウンタの値を加算することで実行アドレスを求める。命令位置を基準として、そこからの差分をオペランド部で指定してる。CPUにベースレジスタがない場合とかに使える
    - 過去問
        * 問1：即値オペランドと直接アドレスややこしい
        * 問2：OK