アドレス修飾について

概要

命令レジスタに取り出してくる命令は以下の2つの要素で構成されている。 Image from Gyazo

上図の「オペランド部」に入っているデータまたはアドレスから「何らかの計算」によってアドレスを求める方式を「アドレス修飾」という。

また、計算によって求めたメモリ上のアドレスを「実効アドレス」という。

指定方式一覧

即値アドレス指定方式

オペランド部に対象となるデータそのものが入っている。 Image from Gyazo

直接アドレス指定方式

オペランド部に記載してあるアドレスがそのまま「実効アドレス」となる。 Image from Gyazo

間接アドレス指定方式

オペランド部に記載してあるアドレスの中に「実効アドレス」が記されている。 Image from Gyazo

インデックスアドレス指定方式

オペランド部の値に「インデックスレジスタ」の値を加算することで実行アドレスを求める。 Image from Gyazo

インデックスレジスタの値を増減させることで、等間隔で並ぶアドレスに「同じ命令」を繰り返す事ができる!

ベースアドレス指定方式

オペランド部の値に「ベースレジスタ」の値を加算することで実行アドレスを求める。 Image from Gyazo

めんどくさい方法だがオペランド部に先頭のアドレスからの「差分」を持たせる事で、メモリ上のどこの場所にロードされても、命令を変えなくて済む!!

相対アドレス指定方式

オペランド部の値に「プログラムカウンタ」の値を加算する事で実効アドレスを求める。

ベースレジスタを持たないCPUでベースレジスタ指定方式と同じようにしたい時に使用する。

関連記事

matazoukun.hatenablog.com