読み方 : さんアドレスめいれい

3アドレス命令【3-address instruction】3番地コード

3アドレス命令とは?

コンピュータ機械語の命令形式の一つで、演算対象となる2つのオペランドのアドレスと、演算結果の格納先アドレスの計3つを一つの命令内に指定するもの。CPU命令セット設計や、コンパイラが生成する中間コードの説明でも用いられる概念である。
3アドレス命令のイメージ画像

加算を例にすると、「AとBを加算してCへ格納する」という処理を「ADD A, B, C」のように一命令で記述する。Aのアドレス、Bのアドレス、結果を書き込むCのアドレスをすべて命令内に明示するため、演算前の元データを上書きせずに残しておける。演算結果を格納するオペランドを「ディスティネーションオペランド」、演算対象の二つを「ソースオペランド」と呼ぶ。

CPUの命令形式はアドレス数によって分類される。「2アドレス命令」では演算結果が一方のソースオペランドに上書きされるため、元データを残す場合は事前に別の場所へ退避する命令が必要になる。「1アドレス命令」では「アキュムレータ」と呼ばれる専用レジスタが暗黙の演算対象となり、「0アドレス命令」ではスタックを使って演算する。3アドレス命令はこれらと比べて一命令で表現できる操作が多く、同じ処理を少ない命令数で記述できる。

一方、3つのアドレスを一命令に収めるため、命令のビット長が長くなりやすい。固定長命令を採用するアーキテクチャでは1命令に使えるビット数に上限があり、各アドレスに割り当てられるビット数が制約される。そのため、ARMRISC-Vといった現代的なアーキテクチャでは、32ビットや64ビットの固定長命令を維持しながら3アドレス形式をレジスタ指定に限って用意しており、即値メモリアドレスロード・ストア命令で別途扱う設計を採っている。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。