24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

SLDT—Store Local Descriptor Table Register ( 続き ) 実アドレス・モード例外 #UD SLDT 命令は実ア ド レ ス ・ モ ー ド では認識 さ れない。 仮想 8086 モード例外 #UD SLDT 命令は仮想 8086 モー ドでは認識されない。 3:748 第 3 巻 : IA-32 基本命令リファレンス

SMSW—Store Machine Status Word オペコード 命令 説明 0F 01 /4 SMSW r32/m16 マシン・ステータス・ワードを r32 の下位 16 ビットまたは m16 に ストアし、r32 の上位 16 ビットは未定義である。 説明 マシン・ステータス・ワード ( 制御レ ジ ス タ CR0 のビッ ト 0 ~ 15) をデステ ィ ネーシ ョ ン・オペランドにストアする。 デスティネーション・オペランドには、 16 ビッ トの汎用 レジスタまたはメモリ ・ ロケーションを使用できる。 デステ ィ ネーシ ョ ン ・ オペラン ドが 32 ビッ ト ・レジスタであるときは、 CR0 レジスタの 下位 16 ビットがレジスタの下位16 ビ ッ ト に コ ピ ー さ れ、 レ ジ ス タ の上位 16 ビッ トは未 定義であ る。 デス テ ィ ネ ー シ ョ ン ・ オペラ ン ド が メ モ リ ・ ロ ケ ー シ ョ ンである と き は、 オペラン ド ・ サイズに関係な く 、 CR0 レジスタの下位16 ビッ トが16 ビッ ト幅でメモリ に書き込まれる。 SMSW 命令は、 オペレーティング ・ システム・ ソフ ト ウェアだけに有用であるが、 特権 命令ではな く 、 アプ リ ケ ー シ ョ ン ・ プ ロ グ ラ ムで使用で き る。 この命令は、 インテル 286 プロセッサとの互換性を保つために設けられたものである。 インテル 286 よ り新しいプロセッサ向けに開発されるプログラムおよびプロシージ ャで は、 MOV( コント ロール・ レジスタ ) 命令を使用してマシ ン ・ ステ ー タ ス ・ ワ ー ド を ロードすることを推奨する。 操作 IF Itanium System Environment THEN IA-32_Intercept(INST,SMSW); DEST ← CR0[15:0]; (* MachineStatusWord *); 影響を受けるフラグ なし。 追加の Itanium ベース・システム環境例外 IA-32_Intercept 強制命令イ ン タ ー セプ ト 。 保護モード例外 #GP(0) デステ ィ ネー シ ョ ンが書き込み不可能なセグメ ン ト にある 場合。 メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 DS、 ES、 FS、 GS レジスタを使用してメモ リ がアクセス さ れ、 レ ジ ス タ の内容が NULL セグメン ト ・ セレク タで あった場合。 #SS(0) メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 #PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。 #AC(0) 現行特権レベルが 3 のときに、 アライメント ・チェックが イネーブルにされていて、 アライメントが合わないメモリ 参照が行われた場合。 第 3 巻 : IA-32 基本命令リファレンス 3:749

SMSW—Store Machine Status Word<br />

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

0F 01 /4 SMSW r32/m16 マシン・ステータス・ワードを r32 の下位 16 ビットまたは m16 に<br />

ストアし、r32 の上位 16 ビットは未定義である。<br />

説明<br />

マシン・ステータス・ワード ( 制御レ ジ ス タ CR0 のビッ ト 0 ~ 15) をデステ ィ ネーシ ョ<br />

ン・オペランドにストアする。 デスティネーション・オペランドには、 16 ビッ トの汎用<br />

レジスタまたはメモリ ・ ロケーションを使用できる。<br />

デステ ィ ネーシ ョ ン ・ オペラン ドが 32 ビッ ト ・レジスタであるときは、 CR0 レジスタの<br />

下位 16 ビットがレジスタの下位16 ビ ッ ト に コ ピ ー さ れ、 レ ジ ス タ の上位 16 ビッ トは未<br />

定義であ る。 デス テ ィ ネ ー シ ョ ン ・ オペラ ン ド が メ モ リ ・ ロ ケ ー シ ョ ンである と き は、<br />

オペラン ド ・ サイズに関係な く 、 CR0 レジスタの下位16 ビッ トが16 ビッ ト幅でメモリ<br />

に書き込まれる。<br />

SMSW 命令は、 オペレーティング ・ システム・ ソフ ト ウェアだけに有用であるが、 特権<br />

命令ではな く 、 アプ リ ケ ー シ ョ ン ・ プ ロ グ ラ ムで使用で き る。<br />

この命令は、 インテル 286 プロセッサとの互換性を保つために設けられたものである。<br />

インテル 286 よ り新しいプロセッサ向けに開発されるプログラムおよびプロシージ ャで<br />

は、 MOV( コント ロール・ レジスタ ) 命令を使用してマシ ン ・ ステ ー タ ス ・ ワ ー ド を<br />

ロードすることを推奨する。<br />

操作<br />

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

DEST ← CR0[15:0]; (* MachineStatusWord *);<br />

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

なし。<br />

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

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

保護モード例外<br />

#GP(0) デステ ィ ネー シ ョ ンが書き込み不可能なセグメ ン ト にある<br />

場合。<br />

メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、<br />

または GS セグ メ ン ト の範囲外の場合。<br />

DS、 ES、 FS、 GS レジスタを使用してメモ リ がアクセス<br />

さ れ、 レ ジ ス タ の内容が NULL セグメン ト ・ セレク タで<br />

あった場合。<br />

#SS(0) メモリ ・ オペランドの実効アドレスが SS セグメン ト の範<br />

囲外の場合。<br />

#PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。<br />

#AC(0) 現行特権レベルが 3 のときに、 アライメント ・チェックが<br />

イネーブルにされていて、 アライメントが合わないメモリ<br />

参照が行われた場合。<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!