コンピュータ

ベースレジスタとは

2021年10月13日

ベースレジスタ

ベースレジスタ(英:base register)とは、レジスタの一種でプログラムをメモリ上にロードした時の先頭のアドレスを記憶しておくためのものです。

ベースレジスタの詳細を説明する前に、まずはレジスタについて説明していきます。

レジスタとは

レジスタ(英:register)とは、CPU内部にある記憶装置のことです。

CPUは次のような手順で命令を順番に処理します。命令を取り出して解読、解読した結果から対象データを読み出して命令を実行するという流れです。

CPUの命令実行手順

このとき「取り出した命令の情報」や「次はどの命令を取り出せばよいかの情報」を覚えておく必要があります。この役割を果たすのがCPU内部にあるレジスタです。

スポンサーリンク

ベースレジスタとは

ベースレジスタとは、プログラムをメモリ上にロードした時の先頭のアドレスを記憶しておくためのレジスタです。

ベースレジスタを使うことで、プログラムがメモリ上のどの位置にロードされても、命令を変えることなく実行できるというメリットがあります。

例えば、次の図のようにプログラムをメモリ上にロードしたとき「1001」~「2000」のアドレスを使用したとします。このときベースレジスタには、先頭のアドレスである「1001」を記憶します。

ベースレジスタ

再び同じプログラムをメモリ上にロードした時、今度は「801」~「1800」のアドレスを使用したとします。このときベースレジスタには、先頭のアドレスである「801」を記憶します。

ベースレジスタ2

ベースレジスタは、ベースアドレス指定方式(基底アドレス指定方式)と呼ばれる方式で使用します。ベースアドレス指定方式は、命令のオペランド部にベースレジスタの値を加算することで、対象データの位置を求める手法です。

命令のオペランド部に「1」が入っている場合は、前者は「1」+「1001」(ベースレジスタの値)=「1002」、後者は「1」+「801」(ベースレジスタの値)=「802」と、どちらもプログラムがロードされた位置から2番目の値を参照しているのがわかります。

このようにベースレジスタを使うことで、プログラムがロードされた位置に応じて命令を変えることなく実行できます。

helpful