24531904_j
24531904_j 24531904_j
FPREM—Partial Remainder ( 続き ) 実アドレス・モード例外 #NM CR0 の EM または TS がセッ ト された場合。 仮想 8086 モード例外 #NM CR0 の EM または TS がセッ ト された場合。 3:518 第 3 巻 : IA-32 基本命令リファレンス
FPREM1—Partial Remainder オペコード 命令 説明 D9 F5 FPREM1 ST(0) を ST(1) で割って得られる IEEE 剰余で ST(0) を置き換える。 説明 ST(0) レジスタの値( 被除数 ) を ST(1) レジスタの値( 除数 ま たは法 ) で割っ て得られる IEEE 剰余を計算し、 結果を ST(0) にス ト アする。 剰余の値は以下の式で表される。 剰余 = ST(0) - (N ∗ ST(1)) ここで、 N は [ST(0)/ST(1)] の実数の商を最 も近い整数値に向けて丸めて得られる整数値 である。 剰余の符号は被除数の符号 と 同じ であ る。 部分剰余が 1 回も計算されていなく て も 、 剰余の絶対値は法の絶対値の 1/2 より小さい( 下で説明 )。 こ の命令は正確な結果を生じ る。 精度 ( 不正確 ) 例外は発生せず、 丸め制御は効果を も たない。 以下の表に、 アンダフ ロ ーが発生しない も の と して、 さ ま ざ ま な ク ラ スの数の 剰余を計算した と き に得 ら れる結果を示す。 表 1-8. FPREM1 の 0 と NaN ST(1) −∞ −F −0 +0 +F +∞ NaN −∞ * * * * * * NaN ST(0) −F ST(0) −F or −0 ** ** −F or −0 ST(0) NaN −0 −0 −0 * * −0 −0 NaN +0 +0 +0 * * +0 +0 NaN +F ST(0) +F or +0 ** ** +F or +0 ST(0) NaN +∞ * * * * * * NaN NaN NaN NaN NaN NaN NaN NaN NaN 注 : F 有限実数を示す。 * 浮動小数点無効算術オペランド (#IA) 例外を示す。 ** 浮動小数点 0 による除算 (#Z) 例外を示す。 結果が 0 のときは、 その符号は被除数の符号と同じである。 法が∞のときは、 結果は ST(0) の値に等し く なる。 FPREM 命令は、 IEEE 規格 754 に規定されている剰余を計算する。 こ の命令の操作は、 ST(0) を ST(1) で割った商を整数に丸める点で FPREM 命令 と は異な る ( 以下の 「操作」 の項を参照 )。 FPREM1 命令は、 FPREM 命令と同様に、 減算を反復して最終的に剰余を計算する。 すな わち、 この命令の 1 回の実行では ST(0) の指数を 63 までしか縮小できない。 法より小さ い剰余を生じた場合に、 この演算は完了し、 FPU ステータス ・ ワー ド内の C2 フラグが クリアされる。 法より小さい剰余に達するまでは、 C2 はセッ ト されており、 ST(0) 内の 結果は部分剰余 と 呼ばれる。 部分剰余の指数は元の被除数の指数 よ り も 最低 32 は小さ く なっている。 ソフ ト ウェアは、 C2 がク リアされるまで、 (ST(0) 内の部分剰余を被除数 と して使用して ) こ の命令を繰 り 返し実行で き る。 注 : そのよ うな剰余計算ループを実行している間に、 FPU を必要とする、 優先順位が高 い割 り 込みル ー チンが剰余計算ル ー プ内の命令間で コ ン テ キス ト ・ ス イ ッ チを強制 する可能性があるので注意する。 第 3 巻 : IA-32 基本命令リファレンス 3:519
- 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 498 und 499: FDIVR/FDIVRP/FIDIVR—Reverse Divid
- 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 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 オペコ
- Seite 548 und 549: FSQRT—Square Root オペコード
- Seite 550 und 551: FST/FSTP—Store Real オペコー
- Seite 552 und 553: FST/FSTP—Store Real ( 続き ) #A
- Seite 554 und 555: FSTCW/FNSTCW—Store Control Word (
- Seite 556 und 557: FSTENV/FNSTENV—Store FPU Environm
- Seite 558 und 559: FSTSW/FNSTSW—Store Status Word (
- Seite 560 und 561: FSUB/FSUBP/FISUB—Subtract ( 続
- Seite 562 und 563: FSUBR/FSUBRP/FISUBR—Reverse Subtr
- Seite 564 und 565: FSUBR/FSUBRP/FISUBR—Reverse Subtr
- Seite 566 und 567: FTST—TEST オペコード 命令
- Seite 568 und 569: FUCOM/FUCOMP/FUCOMPP—Unordered Co
- Seite 570 und 571: FWAIT—Wait 本章の 「WAIT」
- Seite 572 und 573: FXAM—Examine ( 続き ) 実アド
- Seite 574 und 575: FXCH—Exchange Register Contents (
- Seite 576 und 577: FXTRACT—Extract Exponent and Sign
- Seite 578 und 579: FYL2X—Compute y ∗ log 2 x ( 続
FPREM1—Partial Remainder<br />
オペコード 命令 説明<br />
D9 F5 FPREM1 ST(0) を ST(1) で割って得られる IEEE 剰余で ST(0) を置き換える。<br />
説明<br />
ST(0) レジスタの値( 被除数 ) を ST(1) レジスタの値( 除数 ま たは法 ) で割っ て得られる<br />
IEEE 剰余を計算し、 結果を ST(0) にス ト アする。 剰余の値は以下の式で表される。<br />
剰余 = ST(0) - (N ∗ ST(1))<br />
ここで、 N は [ST(0)/ST(1)] の実数の商を最 も近い整数値に向けて丸めて得られる整数値<br />
である。 剰余の符号は被除数の符号 と 同じ であ る。 部分剰余が 1 回も計算されていなく<br />
て も 、 剰余の絶対値は法の絶対値の 1/2 より小さい( 下で説明 )。<br />
こ の命令は正確な結果を生じ る。 精度 ( 不正確 ) 例外は発生せず、 丸め制御は効果を も<br />
たない。 以下の表に、 アンダフ ロ ーが発生しない も の と して、 さ ま ざ ま な ク ラ スの数の<br />
剰余を計算した と き に得 ら れる結果を示す。<br />
表 1-8. FPREM1 の 0 と NaN<br />
ST(1)<br />
−∞ −F −0 +0 +F +∞ NaN<br />
−∞ * * * * * * NaN<br />
ST(0) −F ST(0) −F or −0 ** ** −F or −0 ST(0) NaN<br />
−0 −0 −0 * * −0 −0 NaN<br />
+0 +0 +0 * * +0 +0 NaN<br />
+F ST(0) +F or +0 ** ** +F or +0 ST(0) NaN<br />
+∞ * * * * * * NaN<br />
NaN NaN NaN NaN NaN NaN NaN NaN<br />
注 :<br />
F 有限実数を示す。<br />
* 浮動小数点無効算術オペランド (#IA) 例外を示す。<br />
** 浮動小数点 0 による除算 (#Z) 例外を示す。<br />
結果が 0 のときは、 その符号は被除数の符号と同じである。 法が∞のときは、 結果は<br />
ST(0) の値に等し く なる。<br />
FPREM 命令は、 IEEE 規格 754 に規定されている剰余を計算する。 こ の命令の操作は、<br />
ST(0) を ST(1) で割った商を整数に丸める点で FPREM 命令 と は異な る ( 以下の 「操作」<br />
の項を参照 )。<br />
FPREM1 命令は、 FPREM 命令と同様に、 減算を反復して最終的に剰余を計算する。 すな<br />
わち、 この命令の 1 回の実行では ST(0) の指数を 63 までしか縮小できない。 法より小さ<br />
い剰余を生じた場合に、 この演算は完了し、 FPU ステータス ・ ワー ド内の C2 フラグが<br />
クリアされる。 法より小さい剰余に達するまでは、 C2 はセッ ト されており、 ST(0) 内の<br />
結果は部分剰余 と 呼ばれる。 部分剰余の指数は元の被除数の指数 よ り も 最低 32 は小さ く<br />
なっている。 ソフ ト ウェアは、 C2 がク リアされるまで、 (ST(0) 内の部分剰余を被除数 と<br />
して使用して ) こ の命令を繰 り 返し実行で き る。<br />
注 : そのよ うな剰余計算ループを実行している間に、 FPU を必要とする、 優先順位が高<br />
い割 り 込みル ー チンが剰余計算ル ー プ内の命令間で コ ン テ キス ト ・ ス イ ッ チを強制<br />
する可能性があるので注意する。<br />
第 3 巻 : IA-32 基本命令リファレンス 3:519