相対アドレス指定方式をわかりやすく解説!CPUの動きを初心者向けに丁寧に理解しよう
生徒
「CPU(シーピーユー)のアドレス指定方式を調べていたら、相対アドレス指定方式という言葉が出てきたんですが、どういう方式なんでしょうか?」
先生
「相対アドレス指定方式は、今CPUが実行しようとしている命令の番地に、命令の中に書かれた変位(へんい)を加えて、データや次に実行する場所を決める方式なんですよ。」
生徒
「今いる場所を基準にするってことなんですね!どういう場面で使われるんでしょうか?」
先生
「プログラムの分岐やジャンプと相性がよくて、移動できるプログラムを作るときに多く使われるんですよ。仕組みを順番に見ていきましょう。」
1. 相対アドレス指定方式とは?
相対アドレス指定方式(そうたいアドレスしていほうしき)は、CPU(シーピーユー)がアクセスすべき場所を決める際に、「現在の命令が置かれている番地」を基準として、その番地に命令の中の変位(へんい)を加えることで目的の番地を求める方式です。
この方式では、絶対的な番地ではなく「現在地からどれだけ移動するか」を基準に位置を決めるため、プログラムを主記憶装置(シュキオクソウチ)のどこに置いても正しく動くという柔軟性があります。
2. 相対アドレス指定方式の動作をイメージしてみよう
日常生活に例えると理解しやすいです。たとえば「今いる場所から五歩前へ進む」という指示があったとします。この指示は場所の名前や地図の座標を使わず、現在地を基準にしています。
相対アドレス指定方式も同じで、CPUは「いま読んでいる命令の番地」に変位を足すことで次にアクセスする場所を決めます。これは固定された番地に依存しないため、柔軟な構造のプログラムを作るときにとても重要な仕組みになります。
3. 相対アドレス指定方式が使われる理由
相対アドレス指定方式は、プログラムの移動に強いという利点があります。たとえば、同じプログラムを主記憶装置の別の位置に読み込む場合、絶対番地を使っていると誤作動してしまうことがあります。
しかし、相対アドレス指定方式なら「現在地からどれだけ移動すればよいか」という情報だけを使うため、プログラムの配置場所が変わっても正しく動作します。これは特に分岐処理や繰り返し処理でよく使われる重要な特性です。
4. 他のアドレス指定方式との違いを知ろう
即値アドレス指定方式(そくちアドレスしていほうしき)は値そのものを、直接アドレス指定方式(ちょくせつアドレスしていほうしき)は番地そのものを命令に書きます。 また、間接アドレス指定方式(かんせつアドレスしていほうしき)やインデックス方式(インデックスアドレスしていほうしき)では別の番地やレジスタを使います。
これに対して相対アドレス指定方式は、命令の位置そのものを基準として番地計算を行うのが特徴です。他の方式とは考え方が違い、「プログラムの動きに合わせて位置が変わる」という点で非常に柔軟です。
5. 相対アドレス指定方式のメリットと注意点
相対アドレス指定方式のメリットは、プログラムをどの位置に読み込んでも同じように動作する点です。これは「位置に依存しないプログラム」を実現するうえで欠かせない特徴です。
ただし注意点もあります。変位の範囲が狭い場合、遠い番地へジャンプできないことがあります。そのため、大きなプログラムでは他のアドレス指定方式と組み合わせて使われることが多いです。
6. 相対アドレス指定方式の具体的な利用例
実際の利用例として、分岐命令やジャンプ命令が挙げられます。たとえば「条件を満たしたら三つ先の命令へ移動する」といった動作は相対アドレス指定方式の典型です。
プログラムの位置が変わっても、現在地から三つ先という関係は変わらないため、どの位置に読み込まれても正しく処理が行われます。 このように、相対アドレス指定方式は柔軟なプログラム制御を実現するための重要な技術として幅広く使われています。