24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

LGDT/LIDT—Load Global/Interrupt Descriptor Table Register オペコード 命令 説明 0F 01 /2 LGDT m16&32 m を GDTR にロードする。 0F 01 /3 LIDT m16&32 m を IDTR にロードする。 説明 ソース ・ オペランド内の値をグローバル ・ ディスク リプタ ・ テーブル ・ レジスタ (GDTR) または割り込みディスク リプタ ・ テーブル・ レジスタ (IDTR) にロードする。 ソース ・ オペランドは、 グローバル ・ ディスク リプタ ・ テーブル (GDT) または割り込み ディスクリプタ・テーブル(IDT) のベース ・ ア ド レス ( リニア・アドレス) と範囲( バイ ト単位のテーブル・サイズ) を内容とする、 メモ リ内の 6 バイ トのデータへのポインタ である。 オペラン ド ・ サイズ属性が 32 ビッ トである場合は、 16 ビッ トの範囲(6 バイ ト のデー タ ・ オペラン ド の下位 2 バイ ト ) と 32 ビッ トのベース・アドレス( データ ・ オペ ランドの上位4 バイ ト ) が レ ジ ス タ に ロ ー ド さ れる。 オペラ ン ド ・ サイ ズ属性が 16 ビッ トである場合は、 16 ビッ トの範囲( 下位 2 バイ ト ) と 24 ビッ トのベース・アドレス( 第 3、 第4、 第5 バイ ト ) が ロ ー ド さ れる。 こ の場合は、 オペラ ン ド の上位バ イ ト は使用 さ れず、 GDTR または IDTR のベース ・ ア ド レスの上位バイ ト にはゼロが埋められる。 LGDT 命令お よ び LIDT 命令は、 オペレーティ ング ・ システム ・ ソフ ト ウェアだけで使 用される。 これらの命令は、 アプリ ケーシ ョン ・ プログラムでは使用されない。 保護 モー ドでリニア ・ アド レス ( すなわち、 セグメン ト に相対的でないア ド レス ) と範囲を 直接ロ ー ド す る のは こ れ ら の命令だけである。 LGDT 命令お よ び LIDT 命令は、 一般的 に、 保護モー ド への切り替え前にプロセ ッ サの初期化を可能にするために、 実ア ド レ ス・モードで実行される。 操作 IF Itanium System Environment THEN IA-32_Intercept(INST,LGDT/LIDT); IF instruction is LIDT THEN IF OperandSize = 16 THEN IDTR(Limit) ← SRC[0:15]; IDTR(Base) ← SRC[16:47] AND 00FFFFFFH; ELSE (* 32-bit Operand Size *) IDTR(Limit) ← SRC[0:15]; IDTR(Base) ← SRC[16:47]; FI; ELSE (* instruction is LGDT *) IF OperandSize = 16 THEN GDTR(Limit) ← SRC[0:15]; GDTR(Base) ← SRC[16:47] AND 00FFFFFFH; ELSE (* 32-bit Operand Size *) GDTR(Limit) ← SRC[0:15]; GDTR(Base) ← SRC[16:47]; FI; FI; 3:634 第 3 巻 : IA-32 基本命令リファレンス

LGDT/LIDT—Load Global/Interrupt Descriptor Table Register ( 続き ) 影響を受けるフラグ なし。 追加の Itanium ベース・システム環境例外 IA-32_Intercept LIDT および LGDT 命令での強制命令イ ン タ ー セプ ト 。 保護モード例外 #UD ソース・オペランドがメモリ ・ ロケーションでない場合。 #GP(0) 現行特権レベルが 0 でない場合。 メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 DS、 ES、 FS、 または GS レジスタを使用してメモリがア クセスされ、 レジスタの内容が NULL セグメン ト ・ セレ クタであった場合。 #SS(0) メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 #PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。 実アドレス・モード例外 #UD ソース・オペランドがメモリ ・ ロケーションでない場合。 #GP メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 #SS メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 仮想 8086 モード例外 #UD ソース・オペランドがメモリ ・ ロケーションでない場合。 #GP(0) メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 #SS(0) メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 #PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。 第 3 巻 : IA-32 基本命令リファレンス 3:635

LGDT/LIDT—Load Global/Interrupt Descriptor Table Register<br />

オペコード 命令 説明<br />

0F 01 /2 LGDT m16&32 m を GDTR にロードする。<br />

0F 01 /3 LIDT m16&32 m を IDTR にロードする。<br />

説明<br />

ソース ・ オペランド内の値をグローバル ・ ディスク リプタ ・ テーブル ・ レジスタ<br />

(GDTR) または割り込みディスク リプタ ・ テーブル・ レジスタ (IDTR) にロードする。<br />

ソース ・ オペランドは、 グローバル ・ ディスク リプタ ・ テーブル (GDT) または割り込み<br />

ディスクリプタ・テーブル(IDT) のベース ・ ア ド レス ( リニア・アドレス) と範囲( バイ<br />

ト単位のテーブル・サイズ) を内容とする、 メモ リ内の 6 バイ トのデータへのポインタ<br />

である。 オペラン ド ・ サイズ属性が 32 ビッ トである場合は、 16 ビッ トの範囲(6 バイ ト<br />

のデー タ ・ オペラン ド の下位 2 バイ ト ) と 32 ビッ トのベース・アドレス( データ ・ オペ<br />

ランドの上位4 バイ ト ) が レ ジ ス タ に ロ ー ド さ れる。 オペラ ン ド ・ サイ ズ属性が 16 ビッ<br />

トである場合は、 16 ビッ トの範囲( 下位 2 バイ ト ) と 24 ビッ トのベース・アドレス( 第<br />

3、 第4、 第5 バイ ト ) が ロ ー ド さ れる。 こ の場合は、 オペラ ン ド の上位バ イ ト は使用 さ<br />

れず、 GDTR または IDTR のベース ・ ア ド レスの上位バイ ト にはゼロが埋められる。<br />

LGDT 命令お よ び LIDT 命令は、 オペレーティ ング ・ システム ・ ソフ ト ウェアだけで使<br />

用される。 これらの命令は、 アプリ ケーシ ョン ・ プログラムでは使用されない。 保護<br />

モー ドでリニア ・ アド レス ( すなわち、 セグメン ト に相対的でないア ド レス ) と範囲を<br />

直接ロ ー ド す る のは こ れ ら の命令だけである。 LGDT 命令お よ び LIDT 命令は、 一般的<br />

に、 保護モー ド への切り替え前にプロセ ッ サの初期化を可能にするために、 実ア ド レ<br />

ス・モードで実行される。<br />

操作<br />

IF Itanium System Environment THEN IA-32_Intercept(INST,LGDT/LIDT);<br />

IF instruction is LIDT<br />

THEN<br />

IF OperandSize = 16<br />

THEN<br />

IDTR(Limit) ← SRC[0:15];<br />

IDTR(Base) ← SRC[16:47] AND 00FFFFFFH;<br />

ELSE (* 32-bit Operand Size *)<br />

IDTR(Limit) ← SRC[0:15];<br />

IDTR(Base) ← SRC[16:47];<br />

FI;<br />

ELSE (* instruction is LGDT *)<br />

IF OperandSize = 16<br />

THEN<br />

GDTR(Limit) ← SRC[0:15];<br />

GDTR(Base) ← SRC[16:47] AND 00FFFFFFH;<br />

ELSE (* 32-bit Operand Size *)<br />

GDTR(Limit) ← SRC[0:15];<br />

GDTR(Base) ← SRC[16:47];<br />

FI;<br />

FI;<br />

3:634 第 3 巻 : IA-32 基本命令リファレンス

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!