24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

FLDENV—Load FPU Environment ( 続き ) 浮動小数点例外 なし。 ただし、 この操作でマス ク されていない例外がステー タス ・ ワ ー ド に ロ ー ド され た場合は、 次の 「同期型」 (waiting) 浮動小数点命令が実行 さ れた と き に その例外が発生 する。 保護モード例外 #GP(0) メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 DS、 ES、 FS、 または GS レジスタを使用してメモリがア クセスされ、 レジスタの内容が NULL セグメン ト ・ セレ クタであった場合。 #SS(0) メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 #NM CR0 の EM または TS がセッ ト された場合。 #PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。 #AC(0) 現行特権レベルが 3 のときに、 アライメント ・チェックが イネーブルにされていて、 アライメントが合わないメモリ 参照が行われた場合。 実アドレス・モード例外 #GP メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 #SS メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 #NM CR0 の EM または TS がセッ ト された場合。 仮想 8086 モード例外 #GP(0) メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 #SS(0) メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 #NM CR0 の EM または TS がセッ ト された場合。 #PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。 #AC(0) アライメン ト ・ チェ ッ クがイネーブルにされていて、 アラ イ メン ト が合わないメモ リ 参照が行われた場合。 3:508 第 3 巻 : IA-32 基本命令リファレンス

FMUL/FMULP/FIMUL—Multiply オペコード 命令 説明 D8 /1 FMUL m32real ST(0) に m32real を掛け、結果を ST(0) にストアする。 DC /1 FMUL m64real ST(0) に m64real を掛け、結果を ST(0) にストアする。 D8 C8+i FMUL ST(0), ST(i) ST(0) に ST(i) を掛け、結果を ST(0) にストアする。 DC C8+i FMUL ST(i), ST(0) ST(i) に ST(0) を掛け、結果を ST(i) にストアする。 DE C8+i FMULP ST(i), ST(0) ST(i) に ST(0) を掛け、結果を ST(i) にストアし、レジスタ・スタッ クをポップする。 DE C9 FMULP ST(0) に ST(1) を掛け、結果を ST(0) にストアし、レジスタ・ス タックをポップする。 DA /1 FIMUL m32int m32int に ST(0) を掛け、結果を ST(0) にストアする。 DE /1 FIMUL m16int m16int に ST(0) を掛け、結果を ST(0) にストアする。 説明 デスティネーション・オペランドとソース・オペランドとを掛け合わせ、 結果をデス ティネーション ・ ロケーションにストアする。 デスティネーション ・ オペランドは常に FPU データ ・ レジスタである。 ソース ・ オペランド には、 FPU データ ・ レジスタまたは メ モ リ ・ ロ ケ ー シ ョ ン を使用で き る。 メ モ リ 内の ソ ー ス ・ オペラ ン ド に は、 単精度実数、 倍精度実数、 ワ ー ド 整数、 ま たは シ ョ ー ト 整数の フ ォ ー マ ッ ト を使用で き る。 この命令のオペランドなしバージョンでは、 ST(0) レジスタの内容に ST(1) レジスタの内 容を掛ける。 1 オペラン ド ・ バージ ョ ンでは、 ST(0) レジスタの内容にメモリ ・ ロケー ションの内容( 実数値ま たは整数値 ) を掛ける。 2 オペラン ド ・ バージ ョ ンでは、 ST(0) レジスタの内容に ST(i) レジスタの内容を掛けるか、 またはその逆に掛ける。 FMULP 命令は、 結果を ス ト アした後に、 追加操作 と して RPU レジスタ ・ スタックを ポップする。 レジスタ・スタックをポップするため、 プロセッサはST(0) レジスタを空 としてマークし、 スタック ・ポインタ (TOP) を 1 イ ン ク リ メ ン ト す る。 浮動小数点乗算 命令のオペラ ン ド なしバー ジ ョ ンでは、 常に レ ジ ス タ ・ ス タ ッ ク のポ ッ プ操作を伴 う 。 一部のアセンブ ラ では、 こ の命令のニー モニ ッ ク は FMULP ではな く FMUL になってい る。 FIMUL 命令は、 整数ソ ー ス ・ オペラ ン ド を拡張実数フ ォ ー マ ッ ト に変換してか ら 乗算を 行う。 結果の符号は、 掛け合わ さ れる一方 ま たは両方の値が 0 または∞であっても、 常にソー ス と デス テ ィ ネ ー シ ョ ンの符号の排他的論理和である。 ソ ー ス ・ オペラ ン ド は、 整数 0 の場合、 +0 として取り扱われる。 以下の表に、 オーバフローもアンダフローも発生しないものとして、 さまざまなクラス の数の乗算を行ったと きに得られる結果を示す。 第 3 巻 : IA-32 基本命令リファレンス 3:509

FLDENV—Load FPU Environment ( 続き )<br />

浮動小数点例外<br />

なし。 ただし、 この操作でマス ク されていない例外がステー タス ・ ワ ー ド に ロ ー ド され<br />

た場合は、 次の 「同期型」 (waiting) 浮動小数点命令が実行 さ れた と き に その例外が発生<br />

する。<br />

保護モード例外<br />

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

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

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

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

クタであった場合。<br />

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

囲外の場合。<br />

#NM CR0 の EM または TS がセッ ト された場合。<br />

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

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

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

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

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

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

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

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

囲外の場合。<br />

#NM CR0 の EM または TS がセッ ト された場合。<br />

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

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

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

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

囲外の場合。<br />

#NM CR0 の EM または TS がセッ ト された場合。<br />

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

#AC(0) アライメン ト ・ チェ ッ クがイネーブルにされていて、 アラ<br />

イ メン ト が合わないメモ リ 参照が行われた場合。<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!