24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

FDIVR/FDIVRP/FIDIVR—Reverse Divide オペコード 命令 説明 D8 /7 FDIVR m32real m32real を ST(0) で割り、結果を ST(0) にストアする。 DC /7 FDIVR m64real m64real を ST(0) で割り、結果を ST(0) にストアする。 D8 F8+i FDIVR ST(0), ST(i) ST(i) を ST(0) で割り、結果を ST(0) にストアする。 DC F0+i FDIVR ST(i), ST(0) ST(0) を ST(i) で割り、結果を ST(i) にストアする。 DE F0+i FDIVRP ST(i), ST(0) ST(0) を ST(i) で割り、結果を ST(i) にストアし、レジスタ・スタッ クをポップする。 DE F1 FDIVRP ST(0) を ST(1) で割り、結果を ST(1) にストアし、レジスタ・ス タックをポップする。 DA /7 FIDIVR m32int m32int を ST(0) で割り、結果を ST(0) にストアする。 DE /7 FIDIVR m16int m64int を ST(0) で割り、結果を ST(0) にストアする。 説明 ソース・オペランドをデスティネーション・オペランドで割り、 結果をデスティネー ション・ロケーションにストアする。 デスティネーション・オペランド ( 除数 ) は常に FPU レジスタである。 ソース ・ オペランド ( 被除数 ) には、 レジスタまたはメモリ ・ ロ ケ ー シ ョ ン を使用で き る。 メ モ リ 内の ソ ー ス ・ オペラ ン ド には、 単精度実数、 倍精度実 数、 ワ ー ド 整数、 ま たは シ ョ ー ト 整数の フ ォ ー マ ッ ト を使用で き る。 これらの命令は、 それぞれ FDIV、 FDIVP、 FIDIV 命令の逆の演算を行 う 。 これら は、 コ ー デ ィ ン グ効率の向上をサポ ー ト する目的で設け ら れた も のであ る。 これらの命令のオペランドなしバージョンでは、 ST(0) レジスタの内容を ST(1) レジスタ の内容で割る。 1 オペランド ・バージョンでは、 メモリ ・ ロケーションの内容( 実数 ま た は整数値 ) を ST(0) レジスタの内容で割る。 2 オペラン ド ・ バージ ョ ンでは、 ST(i) レジ スタの内容を ST(0) レ ジス タの内容で割るか、 ま たはその逆の除算を行 う 。 FDIVRP 命令は、 除算結果を ス ト アした後に、 追加操作 と して FPU レジスタ ・ スタック をポップする。 レジスタ ・ スタッ クをポップするため、 プロセッサは ST(0) レジスタを 空としてマークし、 スタッ ク ・ ポインタ (TOP) を 1 インク リ メントする。 これらの浮動 小数点除算命令のオペラ ン ド なしバー ジ ョ ンでは、 常に レ ジ ス タ ・ ス タ ッ ク のポ ッ プを 伴う。 一部のアセンブラでは、 この命令のニーモニッ クは FDIVRP ではな く FDIVR に なっている。 FIDIVR 命令は、 整数の ソ ー ス ・ オペラ ン ド を拡張実数フ ォ ー マ ッ ト に変換してか ら 除算 を行う。 ゼ ロ に よ る除算例外 (#Z) が発生して も 、 それがマス ク されていない場合は結果はス ト ア されない。 こ の例外がマス ク されていた場合は、 正しい符号の∞がデステ ィ ネ ー シ ョ ン・オペランドにストアされる。 以下の表に、 オーバフローもアンダフローも発生しないものとして、 さまざまなクラス の数の除算を行ったと きに得られる結果を示す。 3:486 第 3 巻 : IA-32 基本命令リファレンス

FDIVR/FDIVRP/FIDIVR—Reverse Divide ( 続き ) DEST −∞ −F −0 +0 +F +∞ NaN −∞ * +∞ +∞ −∞ −∞ * NaN SRC −F +0 +F ** ** -F −0 NaN −I +0 +F ** ** -F −0 NaN −0 +0 +0 * * −0 −0 NaN +0 −0 −0 * * +0 +0 NaN +I −0 −F ** ** +F +∞ NaN +F −0 −F ** ** +F +∞ NaN +∞ * −∞ −∞ +∞ +∞ * NaN NaN NaN NaN NaN NaN NaN NaN NaN 注 : F 有限実数を示す。 I 整数を示す。 * 浮動小数点無効算術オペランド (#IA) 例外を示す。 ** 浮動小数点 0 による除算 (#Z) 例外を示す。 ソース ・オペランドは、 整数0 の場合は +0 として取り扱われる。 操作 IF DEST = 0 THEN #Z ELSE IF instruction is FIDIVR THEN DEST ← ConvertExtendedReal(SRC) / DEST; ELSE (* source operand is real number *) DEST ← SRC / DEST; FI; FI; IF instruction = FDIVRP THEN PopRegisterStack FI; FPU 影響を受けるフラグ C1 ス タ ッ ク ・ アンダ フ ロ ーが発生した場合は 0 にセッ ト され る。 不正確結果例外 (#P) が発生した場合は、 丸めの方向を示 す。 0 = 切り上げなし、 1 = 切り上げ。 C0、 C2、 C3 未定義。 第 3 巻 : IA-32 基本命令リファレンス 3:487

FDIVR/FDIVRP/FIDIVR—Reverse Divide<br />

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

D8 /7 FDIVR m32real m32real を ST(0) で割り、結果を ST(0) にストアする。<br />

DC /7 FDIVR m64real m64real を ST(0) で割り、結果を ST(0) にストアする。<br />

D8 F8+i FDIVR ST(0), ST(i) ST(i) を ST(0) で割り、結果を ST(0) にストアする。<br />

DC F0+i FDIVR ST(i), ST(0) ST(0) を ST(i) で割り、結果を ST(i) にストアする。<br />

DE F0+i FDIVRP ST(i), ST(0) ST(0) を ST(i) で割り、結果を ST(i) にストアし、レジスタ・スタッ<br />

クをポップする。<br />

DE F1 FDIVRP ST(0) を ST(1) で割り、結果を ST(1) にストアし、レジスタ・ス<br />

タックをポップする。<br />

DA /7 FIDIVR m32int m32int を ST(0) で割り、結果を ST(0) にストアする。<br />

DE /7 FIDIVR m16int m64int を ST(0) で割り、結果を ST(0) にストアする。<br />

説明<br />

ソース・オペランドをデスティネーション・オペランドで割り、 結果をデスティネー<br />

ション・ロケーションにストアする。 デスティネーション・オペランド ( 除数 ) は常に<br />

FPU レジスタである。 ソース ・ オペランド ( 被除数 ) には、 レジスタまたはメモリ ・ ロ<br />

ケ ー シ ョ ン を使用で き る。 メ モ リ 内の ソ ー ス ・ オペラ ン ド には、 単精度実数、 倍精度実<br />

数、 ワ ー ド 整数、 ま たは シ ョ ー ト 整数の フ ォ ー マ ッ ト を使用で き る。<br />

これらの命令は、 それぞれ FDIV、 FDIVP、 FIDIV 命令の逆の演算を行 う 。 これら は、<br />

コ ー デ ィ ン グ効率の向上をサポ ー ト する目的で設け ら れた も のであ る。<br />

これらの命令のオペランドなしバージョンでは、 ST(0) レジスタの内容を ST(1) レジスタ<br />

の内容で割る。 1 オペランド ・バージョンでは、 メモリ ・ ロケーションの内容( 実数 ま た<br />

は整数値 ) を ST(0) レジスタの内容で割る。 2 オペラン ド ・ バージ ョ ンでは、 ST(i) レジ<br />

スタの内容を ST(0) レ ジス タの内容で割るか、 ま たはその逆の除算を行 う 。<br />

FDIVRP 命令は、 除算結果を ス ト アした後に、 追加操作 と して FPU レジスタ ・ スタック<br />

をポップする。 レジスタ ・ スタッ クをポップするため、 プロセッサは ST(0) レジスタを<br />

空としてマークし、 スタッ ク ・ ポインタ (TOP) を 1 インク リ メントする。 これらの浮動<br />

小数点除算命令のオペラ ン ド なしバー ジ ョ ンでは、 常に レ ジ ス タ ・ ス タ ッ ク のポ ッ プを<br />

伴う。 一部のアセンブラでは、 この命令のニーモニッ クは FDIVRP ではな く FDIVR に<br />

なっている。<br />

FIDIVR 命令は、 整数の ソ ー ス ・ オペラ ン ド を拡張実数フ ォ ー マ ッ ト に変換してか ら 除算<br />

を行う。<br />

ゼ ロ に よ る除算例外 (#Z) が発生して も 、 それがマス ク されていない場合は結果はス ト ア<br />

されない。 こ の例外がマス ク されていた場合は、 正しい符号の∞がデステ ィ ネ ー シ ョ<br />

ン・オペランドにストアされる。<br />

以下の表に、 オーバフローもアンダフローも発生しないものとして、 さまざまなクラス<br />

の数の除算を行ったと きに得られる結果を示す。<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!