アドレッシング・モード (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.