アドレッシング(アドレス指定方式)とは?初心者でもすぐわかる!IT基礎知識

IT IT基礎知識

アドレッシング(アドレス指定)とは…?

アドレッシングとは、命令のアドレス部から、ほしいデータが収まっている主記憶装置のアドレスを得るための方法のことです。

命令は命令部とアドレス部の2つで構成されています。

命令部

アドレス部には処理したいデータがどこに入っているのかを示す情報が入っています。しかしアドレス指定方式によっては直接データにアクセスできる情報が入っているとは限りません。ある基準からの引き算をした値であったり、データを格納するアドレスのアドレスが入っていたりします。

ややこしい…

このようにある計算することによってデータが入っているアドレスを求める処理のことをアドレス指定(アドレス修飾)と言います。

 

アドレッシングの方法、代表的なもの6つを以下で紹介します。

 

即値アドレス指定方式

即値アドレス指定方式は、アドレス部に処理したいデータそのものが入っている方式です。
アドレスを指定せずデータそのものを指定されるので、メモリへの参照はしません。

1番単純!

 

イメージからもわかるように、データを取り出すために主記憶から読み出す手間がかからないので、1番早く処理することができます。その反面データそのものを書き込み固定されてしまうので、外部からの書き込み、処理結果といったデータを扱うことはできません。その為、プログラム中に変更されることのない定数等の指定に利用されます。

直接アドレス指定方式

直接アドレス指定方式は、アドレス部に記載された値がそのまま実行アドレスとして使用できる方法です。

計算によって求めたアドレスのことを実効アドレスといいます。

アドレスが直接指定できるから直接アドレス指定方式ね!

 

 

 

直接アドレス指定方式

間接アドレス指定方式

間接アドレス指定方式は、アドレス部に、対象データが入っている場所を表すアドレスが入っている方法です。

 

ややこしくなってきた~

 

直接アドレス指定方式の場合は、アドレス部の値で直接実効アドレスとして取り出すことができました。一方間接方式の場合、アドレス部には、実効アドレスを格納するアドレスのアドレスが入っているので、命令の実行をするために主記憶装置でさらにアクセスをする必要があります。

 

間接アドレス指定方式

このように実効アドレスを求めるために2ステップ踏むので、実行速度は遅くなります。しかし、ビット数が長くなってしまうような大きなアドレス値を指定することも可能になるので、容量の大きいメモリを利用するのに適しています。

指標付きアドレス指定方式(インデックスアドレス指定方式)

指標付きアドレス指定方式は、アドレス部に指標レジスタの値を加えて実効アドレスを求める方法です。
この方式では、命令部とアドレス部に加えてアドレス修飾部という場所が存在します。このアドレス修飾部が指標レジスタの番号を指定して、その番号とアドレス部の値を足します。加算した結果の値をもとに実行アドレスを求めます。

インデックス指定方式

 

 

インデックスレジスタを配置することでアドレスを自由に再設定できるので、主記憶上のどこにでも配置することができるようになります。データの格納スペースを有効に活用することができるというメリットがあります。

 

ベースアドレス指定方式

ベースアドレス指定方式は、アドレス部の値にベースレジスタ番号を加算して実効アドレスを求める方式です。

ベースレジスタは、「アクセスしたいメモリのアドレスの基準値・先頭位置」を記憶しておくところです。

 

ベースアドレス指定方式

 

 

相対アドレス指定方式

相対アドレス指定方式は、プログラムカウンタの値とアドレス部の値を加算して実効アドレスを求める方式です。

プログラムカウンタとは、次に実行する命令のアドレスが入っています。

相対アドレス指定方式

プログラムカウンタの値を使うことで、その命令からの相対距離でデータの存在場所を指定できます。プログラムがどの位置で読み込まれてもプログラムの形を変えずにデータにアクセスできるようになります。
ベースレジスタが存在しないCPUで再配置可能なプログラムを作る時などに用いられます。

再配置可能なプログラムとは、主記憶上のどこにでも配置することができるプログラムのことです。
反対に、絶対アドレスを使うと主記憶での配置に制限がついてしまいます。

 

 

 

まとめ

データを取り出すだけでもいくつかの方法が使われていることがわかりました。それぞれにメリットデメリットがあるので、方式の特徴に応じてデータの取り出しがおこなわれているのですね。
以上、アドレッシングの説明でした!

 

Thank you

アバター

タイトルとURLをコピーしました