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