ICDロゴ

アドレッシング・モード (addressing mode)

別名
実効アドレッシング・モード (effective addressing mode) 【ジッコウ・アドレッシング・モード】

最終更新日: 2002/10/30

 CPUの命令セットアーキーテクチャにおいて、命令のオペランド部(演算の対象となるデータのこと)を表すための方法のこと。オペランドが格納されている場所(実効アドレス)を指し示すため、実効アドレッシング・モードということもある。

 例えば加算演算を行う場合、加算命令のほかに、加算される2つのデータ(オペランド)が置かれている場所と、結果を格納する場所の3カ所を指定する必要がある(ただし多くのプロセッサ・アーキテクチャでは、加算されるオペランドの場所に結果を書き戻すことにして、オペランドの指定を2つで済ませている)。この場所の指定方法のことを「アドレッシング・モード」という。代表的なアドレッシング・モードとしては、イミディエイト(即値)モードやレジスタ直接モード、レジスタ間接モード、スケールド・インデックス・モードなどがある。

 多くのアドレッシング・モードを備えるほどオペランドの指定の自由度が高まるが、デメリットとして、それだけ命令コード長が長くなるし、複雑なアドレッシング・モードを使うとそれだけ実行時間の増大を招くことになる。そこでRISCアーキテクチャのプロセッサでは、アドレッシング・モードを限定したロード/ストア・アーキテクチャを採用して、プロセッサの簡素化や高速化を実現している。

表記 意味
レジスタ直接モード
Dn データ・レジスタ直接モード。データ・レジスタDnの内容そのものがオペランドになる
An アドレス・レジスタ直接モード。アドレス・レジスタAnの内容そのものがオペランドになる
アドレス・レジスタ間接モード
(An) アドレス・レジスタ間接モード。Anの指す先がオペランドになる
(An)+ ポストインクリメント付きアドレス・レジスタ間接モード。Anの指す先がオペランドになるが、アクセス後にAnの値をデータのサイズ分(1か2か4か8)だけ増加させる。スタックからのデータの取り出しやキューへのアクセスで使われる
-(An) プリデクリメント付きアドレス・レジスタ間接モード。アクセス前にAnの値をデータのサイズ分(1か2か4か8)だけ減算し、そのAnの指す先のメモリ上のデータがオペランドになる。スタックへのデータのプッシュで利用される
(disp,An) ディスプレースメント付きアドレス・レジスタ間接モード。Anに16bitの定数値dispを足したものがアドレスとなり、そこからデータをアクセスする。disp(displacement)は定数値のオフセットを表す
インデックス付きアドレス・レジスタ間接モード
(disp,An,Xn*S) Anに定数値dispと、インデックス・レジスタXn(AnかDnのいずれか)にデータ・サイズ(Sは1か2か4か8)をかけたものを加算し、その合計の指すアドレスの先からデータをアクセスする。データの配列へアクセスする場合に使われる
メモリ間接モード
([disp1,An],Xn*S,disp2) ポストインデックス付きメモリ間接。アドレス・レジスタにdisp1を加算した場所のメモリから32bitのデータを取り出し、それにインデックス・レジスタにデータ・サイズをかけたものと、2つ目のdisp2を加算したものがオペランドの場所になる
([disp1,An,Xn*S],disp2) プリインデックス付きメモリ間接。アドレス・レジスタとdisp1、インデックス・レジスタにデータ・サイズをかけたものをすべて加算した場所のメモリから32bitのデータを取り出し、それに2つ目のdisp2を加算したものがオペランドの場所になる
ディスプレースメント付きPC相対モード
(disp,PC) プログラム・カウンタPCにdispを加算したものがオペランドの場所となる。PC相対なのでコードを置く位置を変更してもプログラムの実行が可能(リロケータブル)
インデックス付きPC相対モード
(disp,PC,Xn*S) PCに、インデックス・レジスタにデータ・サイズをかけたものと、dispを加算したものがオペランドの場所となる。コード中に置いたテーブルへのアクセスに利用する
メモリ間接PC相対モード
([disp1,PC],Xn*S,disp2) ポストインデックス付きメモリ間接PC相対モード。PCにdispを加算した場所のメモリから32bitのデータを取り出し、それにインデックス・レジスタにデータ・サイズをかけたものと、2つ目のdisp2を加算したものがオペランドの場所になる。
([disp1,PC,Xn*S],disp) プリインデックス付きメモリ間接PC相対モード。PCとdisp1、インデックス・レジスタにデータ・サイズをかけたものをすべて加算した場所のメモリから32bitのデータを取り出し、それに2つ目のdisp2を加算したものがオペランドの場所になる
絶対アドレッシング・モード
(address) 指定されたaddressがオペランドの場所となる
イミディエイト(即値)モード
#number 指定されたnumberそのものがオペランドになる
アドレッシング・モードの例
これはMotorola社の代表的なマイクロプロセッサであるMC68000シリーズにおけるアドレッシング・モードの例(MC68020以降でのみ利用可能なモードも含む)。このプロセッサは8つのデータ・レジスタ(Dn)と8つのアドレス・レジスタ(An)を持ち、それらを組み合わせた非常に多彩なアドレッシング・モードをサポートしているという、典型的なCISC型のプロセッサである。

Copyright (C) 2000-2007 Digital Advantage Corp.

アイティメディアの提供サービス

キャリアアップ