インデックスレジスタ
インデックスレジスタ(英:index register)とは、レジスタの一種で連続したデータの取り出しに使う増分値を記憶しておくものであり、配列など等間隔で連続して置かれた複数のデータに対し、順番にアクセスする際に使用します。
レジスタとは
レジスタ(英:register)とは、CPU内部にある記憶装置のことです。
CPUは次のような手順で命令を順番に処理します。(命令を取り出して解読、解読した結果から対象データを読み出して命令を実行するという流れ)
実行の流れ
- 命令の取り出し
- 取り出した命令の解読
- 解読結果から対象データを取り出す
- 命令の実行
- 結果の書き込み
このとき「取り出した命令の情報」や「次はどの命令を取り出せばよいかの情報」を覚えておく必要があります。この役割を果たすのがCPU内部にあるレジスタです。
スポンサーリンク
インデックスアドレス指定方式(指標アドレス指定方式)
インデックスレジスタは、アドレス指定方式の一種であるインデックスアドレス指定方式(指標アドレス指定方式)で使用するレジスタです。
CPUが実行する命令は下記の図のように「命令部」と「オペランド部」に分かれています。(命令部にはコンピュータへの命令が入り、オペランド部には対象データの在りかを示す情報が入る)
対象データの在りかを示すオペランド部にはさまざまな指定方法があります。例えば、オペランド部に値を直接格納したり、メモリ上のアドレスを格納したりとさまざまです。
インデックスアドレス指定方式は、オペランド部にインデックスレジスタと値が入り、オペランド部の値にインデックスレジスタの値を加算することで、実効アドレスを求める方式です。
上記の例では、オペランド部にインデックスレジスタ「1」と「980」が格納されており、インデックスレジスタを参照するとアドレス「1」には「22」が格納されているので、この値をオペランド部の値に加算(980 + 22 = 1002)し、実効アドレスを求めます。
このようにインデックスレジスタはインデックスアドレス指定方式で使用します。