24531904_j
24531904_j 24531904_j
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
- Seite 448 und 449: CMPXCHG—Compare and Exchange (
- Seite 450 und 451: CMPXCHG8B—Compare and Exchange 8
- Seite 452 und 453: CPUID—CPU Identification オペ
- Seite 454 und 455: CPUID—CPU Identification ( 続き
- Seite 456 und 457: CPUID—CPU Identification ( 続き
- Seite 458 und 459: CWDE—Convert Word to Doubleword
- Seite 460 und 461: DAS—Decimal Adjust AL after Subtr
- Seite 462 und 463: DEC—Decrement by 1 ( 続き ) #AC
- Seite 464 und 465: DIV—Unsigned Divide ( 続き ) FI
- Seite 466 und 467: ENTER—Make Stack Frame for Proced
- Seite 468 und 469: ENTER—Make Stack Frame for Proced
- Seite 470 und 471: F2XM1—Compute 2 x -1 ( 続き )
- Seite 472 und 473: FADD/FADDP/FIADD—Add オペコー
- Seite 474 und 475: FADD/FADDP/FIADD—Add ( 続き )
- Seite 476 und 477: FBLD—Load Binary Coded Decimal
- Seite 478 und 479: FBSTP—Store BCD Integer and Pop
- Seite 480 und 481: FBSTP—Store BCD Integer and Pop (
- Seite 482 und 483: FCLEX/FNCLEX—Clear Exceptions オ
- Seite 484 und 485: FCMOVcc—Floating-Point Conditiona
- Seite 486 und 487: FCOM/FCOMP/FCOMPP—Compare Real (
- Seite 488 und 489: FCOMI/FCOMIP/FUCOMI/FUCOMIP—Compa
- Seite 490 und 491: FCOMI/FCOMIP/ FUCOMI/FUCOMIP—Comp
- Seite 492 und 493: FCOS—Cosine ( 続き ) 追加の
- Seite 494 und 495: FDIV/FDIVP/FIDIV—Divide オペコ
- Seite 496 und 497: FDIV/FDIVP/FIDIV—Divide ( 続き
- Seite 500 und 501: FDIVR/FDIVRP/FIDIVR—Reverse Divid
- Seite 502 und 503: FFREE—Free Floating-Point Registe
- Seite 504 und 505: FICOM/FICOMP—Compare Integer (
- Seite 506 und 507: FILD—Load Integer オペコード
- Seite 508 und 509: FINCSTP—Increment Stack-Top Point
- Seite 510 und 511: FIST/FISTP—Store Integer オペ
- Seite 512 und 513: FIST/FISTP—Store Integer ( 続き
- Seite 514 und 515: FLD—Load Real ( 続き ) 浮動
- Seite 516 und 517: FLD1/FLDL2T/FLDL2E/FLDPI/FLDLG2/FLD
- Seite 518 und 519: FLDCW—Load Control Word ( 続き
- Seite 520 und 521: FLDENV—Load FPU Environment ( 続
- Seite 522 und 523: FMUL/FMULP/FIMUL—Multiply ( 続
- Seite 524 und 525: FMUL/FMULP/FIMUL—Multiply ( 続
- Seite 526 und 527: FPATAN—Partial Arctangent オペ
- Seite 528 und 529: FPREM—Partial Remainder オペコ
- Seite 530 und 531: FPREM—Partial Remainder ( 続き
- Seite 532 und 533: FPREM1—Partial Remainder ( 続き
- Seite 534 und 535: FPTAN—Partial Tangent オペコ
- Seite 536 und 537: FRNDINT—Round to Integer オペ
- Seite 538 und 539: FRSTOR—Restore FPU State ( 続き
- Seite 540 und 541: FSAVE/FNSAVE—Store FPU State (
- Seite 542 und 543: FSCALE—Scale オペコード 命
- Seite 544 und 545: FSIN—Sine オペコード 命令
- Seite 546 und 547: FSINCOS—Sine and Cosine オペコ
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 基本命令リファレンス