24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

INT n/INTO/INT 3—Call to Interrupt Procedure ( 続き ) #SS( セレクタ ) SS レジスタがロード されよう としたとき、 指示先のセグ メ ン ト が存在しない と マ ー ク さ れていた場合。 リターン・アドレス、 フラグ、 エラー・コード、 スタッ ク ・ セグメン ト ・ ポインタ、 またはデータ ・ セグメン ト を プッシュして、 スタ ッ ク ・ セグメン ト の範囲を超えた場 合。 #NP( セレクタ ) コード ・セグメント、 割り込みゲート、 トラップ・ゲー ト、 タスク ・ゲート、 またはTSS が存在しない場合。 #TS( セレクタ ) TSS内のスタック・セグメント ・セレクタのRPL が、 割 り込みゲー ト または ト ラップ ・ゲー トによってアクセスさ れるコー ド ・ セグメン ト の DPL に等し く ない場合 TSS のスタック ・セグメント に対するスタック ・セグメン ト・ディスクリプタのDPL が、 割り 込みゲー ト ま たは ト ラップ・ゲートのコード ・セグメント ・ディスクリプタの DPL に等し く ない場合。 TSS 内のスタック・セグメント ・セレクタがNULL の場 合。 TSS のスタ ッ ク ・ セグメン ト が書き込み可能なデータ ・ セ グメン ト でない場合。 スタック ・セグメン トのセグメン ト ・セレクタ ・ インデッ ク スがデ ィ ス ク リ プ タ ・ テ ー ブルの範囲外の場合。 #PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。 #BP INT 3 命令が実行 された場合。 #OF INTO 命令が実行 さ れ、 OF フ ラ グがセ ッ ト さ れた場合。 3:596 第 3 巻 : IA-32 基本命令リファレンス

INVD—Invalidate Internal Caches オペコード 命令 説明 0F 08 INVD 内部キャッシュをフラッシュする。外部キャッシュのフラッシュを 開始させる。 説明 プ ロ セ ッ サの内部キ ャ ッ シ ュ を無効化 ( フラッシュ ) し、 外部キ ャ ッ シ ュ に も 自身を フ ラ ッ シ ュ する よ う 指示する特殊機能バス ・ サイ ク ルを発行す る。 内部キ ャ ッ シ ュ に保持 されていたデータはメイン ・ メモリにライ トバッ クされない。 この命令を実行した後、 プロセッサは、 外部キャッシュのフラッシュ操作の完了を待た ずに命令の実行を継続する。 キ ャ ッ シ ュ ・ フ ラ ッ シ ュ信号への応答は、 ハー ド ウ ェ アに よって行う。 INVD 命令は特権命令であ る。 プ ロ セ ッ サが保護モー ド で動作してい る場合は、 こ の命 令を実行するには、 プログラムまたはプロシージャの CPL が 0 でなければならない。 こ の命令はプロセ ッサのモデルに も依存する。 今後のインテル ・ アーキテクチャ ・ プロ セ ッ サでは、 こ の命令の機能が異なる可能性がある。 こ の命令を使用する際は注意が必要であ る。 内部でキ ャ ッ シ ュ さ れ、 メ イ ン ・ メ モ リ に ライ トバックされないデータは失われる。 ( 例えば、 メ イン ・ メモ リ と のキ ャ ッ シ ュ ・ コ ヒ ーレンシが重要でないテス ト やフ ォル ト ・ リ カバ リ のよ う に ) 修正したキ ャ ッ シ ュ ・ ラ イ ン を ラ イ ト バ ッ ク しないでキ ャ ッ シ ュ を フ ラ ッ シ ュ する特別な必要性、 ま たは そ う するこ とに特別な利点がなければ、 ソフ ト ウェアには WBINVD 命令を使用すべ き であ る。 操作 IF Itanium System Environment THEN IA-32_Intercept(INST,INVD); Flush(InternalCaches); SignalFlush(ExternalCaches); Continue (* Continue execution); 影響を受けるフラグ なし。 追加の Itanium ベース・システム環境例外 IA-32_Intercept 強制命令イ ン タ ー セプ ト ・ フ ォ ル ト 。 保護モード例外 #GP(0) 現行特権レベルが 0 でない場合。 実アドレス・モード例外 なし。 仮想 8086 モード例外 #GP(0) INVD 命令は仮想 8086 モー ド で実行で き ない。 第 3 巻 : IA-32 基本命令リファレンス 3:597

INVD—Invalidate Internal Caches<br />

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

0F 08 INVD 内部キャッシュをフラッシュする。外部キャッシュのフラッシュを<br />

開始させる。<br />

説明<br />

プ ロ セ ッ サの内部キ ャ ッ シ ュ を無効化 ( フラッシュ ) し、 外部キ ャ ッ シ ュ に も 自身を フ<br />

ラ ッ シ ュ する よ う 指示する特殊機能バス ・ サイ ク ルを発行す る。 内部キ ャ ッ シ ュ に保持<br />

されていたデータはメイン ・ メモリにライ トバッ クされない。<br />

この命令を実行した後、 プロセッサは、 外部キャッシュのフラッシュ操作の完了を待た<br />

ずに命令の実行を継続する。 キ ャ ッ シ ュ ・ フ ラ ッ シ ュ信号への応答は、 ハー ド ウ ェ アに<br />

よって行う。<br />

INVD 命令は特権命令であ る。 プ ロ セ ッ サが保護モー ド で動作してい る場合は、 こ の命<br />

令を実行するには、 プログラムまたはプロシージャの CPL が 0 でなければならない。 こ<br />

の命令はプロセ ッサのモデルに も依存する。 今後のインテル ・ アーキテクチャ ・ プロ<br />

セ ッ サでは、 こ の命令の機能が異なる可能性がある。<br />

こ の命令を使用する際は注意が必要であ る。 内部でキ ャ ッ シ ュ さ れ、 メ イ ン ・ メ モ リ に<br />

ライ トバックされないデータは失われる。 ( 例えば、 メ イン ・ メモ リ と のキ ャ ッ シ ュ ・ コ<br />

ヒ ーレンシが重要でないテス ト やフ ォル ト ・ リ カバ リ のよ う に ) 修正したキ ャ ッ シ ュ ・<br />

ラ イ ン を ラ イ ト バ ッ ク しないでキ ャ ッ シ ュ を フ ラ ッ シ ュ する特別な必要性、 ま たは そ う<br />

するこ とに特別な利点がなければ、 ソフ ト ウェアには WBINVD 命令を使用すべ き であ<br />

る。<br />

操作<br />

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

Flush(InternalCaches);<br />

SignalFlush(ExternalCaches);<br />

Continue (* Continue execution);<br />

影響を受けるフラグ<br />

なし。<br />

追加の Itanium ベース・システム環境例外<br />

IA-32_Intercept 強制命令イ ン タ ー セプ ト ・ フ ォ ル ト 。<br />

保護モード例外<br />

#GP(0) 現行特権レベルが 0 でない場合。<br />

実アドレス・モード例外<br />

なし。<br />

仮想 8086 モード例外<br />

#GP(0) INVD 命令は仮想 8086 モー ド で実行で き ない。<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!