CISCの例
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/07/04 05:50 UTC 版)
「アドレッシングモード」の記事における「CISCの例」の解説
CISCアーキテクチャでは、分岐命令やメモリアクセス(ロード/ストア)命令だけでなく、演算命令などでもメモリアクセスを行うことができる。CISCの命令セットの設計思想はアドレッシングモードを豊富に用意して、ある処理を実現するのに必要となる命令数を減らすことが大きな目標となっていた。このため、現在では使われなくなった複雑なアドレッシングモードを用意したCPUも存在する(VAXが有名。日本では日本電気のV60などは豊富なアドレッシングモードを誇っていた)。 右図は、現在最も多く使われているCISCであるx86アーキテクチャでのアドレッシングモードを示している。実効アドレス(実際にアクセスすべきメモリアドレス)はセグメント内のアドレスであり、セグメントレジスタと組み合わせることでリニアアドレスと呼ばれる一種の論理アドレスに変換されるが、この部分はメモリ管理に関わるものでアドレッシングモードには含まれない。実効アドレスは、ベースレジスタ、インデックスレジスタ、ディスプレースメントを加算することで得られるが、これらの要素は省略可能である。したがって、以下のようなアドレッシングモードが存在する。 レジスタ間接 ベースレジスタがアクセスすべきメモリアドレスを保持している。また、ベースレジスタを省略してインデックスレジスタだけを使う場合もこれにあたる。 ベース+インデックス ベースレジスタにインデックスレジスタの値を加算した値がアクセスすべきメモリアドレスとなる。インデックスレジスタの値は加算する前に2倍、4倍、8倍とスケーリングすることができる。これは例えば 32ビットのデータの配列のインデックスをインデックスレジスタに保持している場合に、4倍にスケールアップすることで配列先頭からのオフセット(アドレスの差分)に変換されるような場合に使われる。 ベース+オフセット ベースレジスタ(またはインデックスレジスタ)に命令内に直接書かれたディスプレースメントを加算した値がアクセスすべきメモリアドレスとなる。 ベース+インデックス+オフセット 全部を使用した指定方法 直接(絶対)アドレス ディスプレースメントのみを使用した場合。 x86では、ロード・ストア命令以外でもメモリアクセスが可能である。例えば加算の場合「A ← A + B」という形式であるため、A にメモリを指すようなアドレッシングモードを使用すると一命令で「ロード→加算→ストア」と二回のメモリアクセスを行うことになる。なお、MOV命令でメモリからメモリへの転送はできない。
※この「CISCの例」の解説は、「アドレッシングモード」の解説の一部です。
「CISCの例」を含む「アドレッシングモード」の記事については、「アドレッシングモード」の概要を参照ください。
- CISCの例のページへのリンク