24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

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

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!