3

Intel のドキュメント「Architectures Software Developer's Manual Vol 2A」の表 2-4 に、REX プレフィックスのビットの意味が示されています。

W=0 の場合の解釈方法を誰かに説明してもらえますか? と書いてありますが意味0 = Operand size determined by CS.DがわかりませんCS.D

4

1 に答える 1

5

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 1Chapter 3.4.5 Segment Descriptorsで詳しく説明されています。

Dこのフィールドの影響については、第 1 巻 - 基本アーキテクチャーの第3.6章「オペランド サイズとアドレス サイズの属性」でも説明されています。

于 2012-08-15T17:47:45.597 に答える