PC相対
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/07/04 05:50 UTC 版)
「アドレッシングモード」の記事における「PC相対」の解説
次の命令のアドレス(PCの内容)にオペランドとして指定したオフセット値を加えたものを実効PCアドレスとする。オフセットは負の場合もある。一般に分岐命令でよく見られる。条件分岐やループなどの制御構造は一般に比較的近いアドレスへの分岐を行うので、絶対アドレスを指定するよりも現在の命令から見た相対的な位置で十分である。実際のプログラムを調査したところ、条件分岐先の90%は8ビットから10ビットのオフセット値でカバーできるという。任意のアドレスに配置可能な位置独立コードでもPC相対のアドレッシングモードを多用する。なお、条件分岐命令の条件としては、ステータスレジスタ内のビットの状態を使う場合や、レジスタを1本(例えば、reg1=0 なら分岐)または2本(例えば reg1=reg2 なら分岐)指定する場合がある。
※この「PC相対」の解説は、「アドレッシングモード」の解説の一部です。
「PC相対」を含む「アドレッシングモード」の記事については、「アドレッシングモード」の概要を参照ください。
PC相対
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/07/04 05:50 UTC 版)
「アドレッシングモード」の記事における「PC相対」の解説
プログラムカウンタをベースレジスタとして、オフセット値も加えてロード命令の実効アドレスとするアドレッシングモード。「ベース+オフセット」の特殊ケースである。x86-64は、位置独立コードのためにRIP(プログラムカウンタ)相対のアドレッシングをサポートしている。ARMアーキテクチャとVAXはどちらもPCが汎用レジスタファイルに含まれており、PC相対アドレッシングが可能である。これらは定数をリテラルプールと呼ばれるテキスト内の領域(サブルーチンの直前か直後)に配置し、PC相対でそれをロードするようなコードを生成する。PC相対の分岐命令はPC以外のレジスタは更新されないが、PC相対のロード命令ではデータレジスタにロード結果が格納される。
※この「PC相対」の解説は、「アドレッシングモード」の解説の一部です。
「PC相対」を含む「アドレッシングモード」の記事については、「アドレッシングモード」の概要を参照ください。
- PC相対のページへのリンク