インデックスレジスタ【index register】指標レジスタ

インデックスレジスタとは?

CPU内部の記憶装置であるレジスタの一種で、アクセスしたいメモリ上の番地(アドレス)の、基準値からの相対的な値を格納するためのもの。現代では専用のレジスタとしては用意せずに、汎用レジスタを転用することが多い。
インデックスレジスタのイメージ画像

コンピュータメモリデータを読み書きするには、格納場所を示すアドレスを指定しなければならない。名簿や売上データのように同じ形式のデータが連続して並ぶ配列を扱う場合、個々のアドレスをプログラム中にひとつずつ書き込む方法は非効率である。

そこで、先頭の基準アドレスを固定しておき、そこからの相対的な位置をインデックスレジスタに格納しておく。CPUは「基準アドレス+インデックスレジスタの値」を計算して実際のアクセス先を求めるため、レジスタの値を一定量ずつ増やすだけで隣のデータへと順番にアクセスできる。

この方式は「インデックスアドレス指定」(指標アドレス指定)と呼ばれ、ループ処理で同じ命令を繰り返しながらレジスタの値だけを次々更新していけば、簡単に配列全体を端から走査できる。アドレスを個別に記述する必要がなくなるため、プログラムが短くなり、CPUが処理する命令数も減るため実行効率も上がる。配列への順次アクセスだけでなく、構造体の要素参照やテーブル検索でも同様の手法が使われる。

初期のCPU製品ではインデックスレジスタが専用のレジスタ域として独立して設けられていたが、現代の製品では汎用レジスタをインデックス用途に転用する設計が一般的である。x86系アーキテクチャにおけるSIレジスタDIレジスタはその名残であり、64ビット環境ではRSIレジスタ、RDIレジスタとして拡張されている。

また、インデックスレジスタと混同されやすいベースレジスタは、プログラムが置かれたメモリ領域の先頭アドレスを保持するためのもので、役割が異なる。両者を組み合わせ「ベースアドレス+インデックス+即値オフセット」の組み合わせでアドレスを計算する場合もある。C言語やJavaなどの高水準言語を使う場合、プログラマがインデックスレジスタを直接操作することはないが、コンパイラが内部でこの仕組みを活用したコードを自動生成している。

他の辞典等による「インデックスレジスタ」の解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。