インデックス(指標)アドレス指定方式をわかりやすく解説!CPUの仕組みを初心者向けに丁寧に学ぼう
生徒
「CPU(シーピーユー)がデータを探す仕組みを学んでいたら、インデックスアドレス指定方式という言葉が出てきたんですが、どんな方式なんでしょうか?」
先生
「インデックスアドレス指定方式は、基本となる番地にインデックスレジスタという値を加えて本当に取りたいデータの場所を求める方式なんですよ。」
生徒
「番地に値を足すということですか?どんなときに使われるんですか?」
先生
「配列など連続したデータを扱うときにとても便利なんです。では、具体的な仕組みを見ていきましょう。」
1. インデックス(指標)アドレス指定方式とは?
インデックスアドレス指定方式(インデックスアドレスしていほうしき)とは、命令の中に書かれた基準となる番地に、インデックスレジスタという値を加算して実際のデータがある番地を求める方式です。 「インデックス」は指標(シヒョウ)という意味で、位置を示すための数字のような役割を持っています。
CPU(シーピーユー)が主記憶装置(シュキオクソウチ)からデータを取り出すとき、データが並んでいる構造を効率よく扱えるため、多くのプログラムで重要な役割を果たしています。
2. インデックスアドレス指定方式の動作イメージ
初心者でもイメージしやすくするために、日常の例で説明します。例えば「本棚の左から十冊目の本を取りたい」という状況を考えてみてください。 このとき、「本棚の最初の位置」が基準番地で「十冊目」がインデックスの値になります。基準となる場所にインデックスを足すことで目的の本にたどり着けます。
CPUが行う処理もこれと似ています。命令の中に書かれた基準番地に、レジスタに保存されている数値を加えることで、次にアクセスすべき番地が決まります。 配列や連続したデータを扱うとき、このような計算が非常に役立ちます。
3. インデックスアドレス指定方式が使われる理由
インデックスアドレス指定方式が使われる最も大きな理由は、連続したデータを効率よく扱えるためです。 プログラムには複数のデータが順番に並んだ「配列」が多く使われていますが、配列の要素を順に取り出すには番地をひとつずつずらす必要があります。
このとき、基準となる番地にインデックス値を足すだけで目的の位置が求められるため、とても効率よくアクセスできます。 同じような構造を持つデータを扱うときにも活用でき、柔軟で応用の利く方式として広く利用されています。
4. 他のアドレス指定方式との違い
即値アドレス指定方式(そくちアドレスしていほうしき)は値そのものを命令に書き、直接アドレス指定方式(ちょくせつアドレスしていほうしき)は番地をそのまま書きます。 それに対して、インデックスアドレス指定方式は番地とレジスタ値を組み合わせて本当の番地を求めます。
また、間接アドレス指定方式(かんせつアドレスしていほうしき)は番地の中に別の番地が保存されているため二段階でアクセスしますが、インデックス方式は加算だけで目的にたどり着けるのが特徴です。 これらの違いを理解することで、CPUがどのようにデータを扱うのかがより明確になります。
5. インデックスレジスタの役割を知ろう
インデックスアドレス指定方式で重要なのが「インデックスレジスタ」です。これはCPU内部にある特別な領域で、データの位置をずらすための数値を一時的に保存できます。
配列の何番目を参照するかをこのインデックスレジスタに設定し、命令に書かれた基準番地に加えることで、アクセスすべき位置を容易に変更できます。 このように、インデックスレジスタは柔軟なデータアクセスに欠かせない重要な仕組みとなっています。
6. インデックスアドレス指定方式の具体的利用例
実際の利用例として、数字が順番に並んだ配列が主記憶装置に保存されているケースを考えてみます。配列の先頭番地を基準番地として命令に書き、参照したい番号をインデックスレジスタに設定します。
例えば、三番目の要素を読み取りたいなら、配列の先頭番地に「二」を足すことで目的の位置が求められます。CPUは計算された番地にアクセスし、データを取り出す仕組みです。
このように、同じ構造が連続して並ぶデータにアクセスするとき、インデックスアドレス指定方式はとても効率よく動作します。