Intelマニュアルには、正規アドレスと一般的な保護の例外について次のように記載されています。
(Vol 1、Pg。3-13)から:
「線形メモリ参照が標準形式でない場合、実装は例外を生成する必要があります。ほとんどの場合、一般保護例外(#GP)が生成されます。...」
(Vol 3A、Pg。6-52)から:
「次の条件により、64ビットモードで一般保護例外が発生します。-
メモリアドレスが非標準形式の
場合。-セグメント記述子のメモリアドレスが非標準形式の場合。...」
上記の引用で述べたように、RIPの内容も「メモリアドレス」として分類されているかどうかを知りたいです。または、RIPに非正規アドレスを含めることができますが、RIPを使用してメモリ内の場所を参照するまで、#GPは発生しませんか?
[編集]
私は今、マニュアル、特にCALL、RET、およびJMP命令の擬似コードをより注意深く読みました(RIPを自由に変更できるため)。64ビットモードでは、アドレスの正規性のチェックがRIPに格納される前に行われ、その結果、RIPが非正規アドレスを取得する前に#GPが発生することに気付きました。したがって、私の質問に対する答えは、RIPに非正規アドレスを含めることはできないということです。
私が心配していた状況---非正規アドレスを含むRIPがメモリ位置を参照するために使用されるために#GPが発生する---まったく発生しません。