Intel のドキュメント「Architectures Software Developer's Manual Vol 2A」の表 2-4 に、REX プレフィックスのビットの意味が示されています。
W=0 の場合の解釈方法を誰かに説明してもらえますか? と書いてありますが意味0 = Operand size determined by CS.D
がわかりませんCS.D
。
Intel のドキュメント「Architectures Software Developer's Manual Vol 2A」の表 2-4 に、REX プレフィックスのビットの意味が示されています。
W=0 の場合の解釈方法を誰かに説明してもらえますか? と書いてありますが意味0 = Operand size determined by CS.D
がわかりませんCS.D
。
CS.D
現在のコード セグメントに関連付けられたセグメント記述子の「デフォルト操作サイズ」フィールドを表します。これは、アドレスとオペランドのデフォルト サイズを制御し、デフォルトで 16 ビットまたは 32 ビットのオペランド サイズに設定できます。
64 ビット aka long モード (CS.L=1) では、CS.D = 32 ビットの唯一の有効な設定であるため、W ビットがクリアされた REX プレフィックスは、デフォルトのオペランド サイズを 32 ビットのままにします。 (オペランド サイズのプレフィックスは、オペランド サイズを 16 までオーバーライドできます)。
ロング モードでのデフォルトのアドレス サイズは 64 ビットです (命令のアドレス サイズ プレフィックスはそれを 32 にオーバーライドします)。
セグメント記述子については、Volume 3A - System Programming Guide, Part 1のChapter 3.4.5 Segment Descriptorsで詳しく説明されています。
D
このフィールドの影響については、第 1 巻 - 基本アーキテクチャーの第3.6章「オペランド サイズとアドレス サイズの属性」でも説明されています。