浮動小数点演算(8087コプロセッサ)

8087基礎知識

知っておくと便利な予備知識

8087浮動小数点演算命令 一覧

命令動作
F2XM12x-1
FABSabs(x)
FADD/FADDP/FIADD加算
FBLDLoad Binary Coded Decimal
FBSTPStore Binary Coded Decimal and Pop
FCHSChange Sign
FCLEX/FNCLEXClear Exception
FCOM/FCOMP/FCOMPPCompare Real
FCOScos(x)
FDECSTPDecrement Stack-Top Pointer
FDIV/FDIVP/FIDIVDivide
FDIVR/FDIVRP/FIDIVRReverse Divide
FFREE Free Floating-Point Register
ffree ST(i) ;ST(i)のタグに空を意味する11Bをセットする.
FICOM/FICOMP Compare Integer
0.0と比較する場合はFTST(Floating-Point Test), 浮動小数点数同士を比較する場合はFXAM(Floting-Point Examine)を用いる.
FILD Load Integer
スタックトップに指定された整数値をプッシュする.
FINCSTP Increment Stack-Top Pointer
スタックトップポインタをインクリメントする. スタックのスロットは8個(0〜7)なので,7の場合は0にもどる.
FINIT/FNINIT Initialize Floating-Point Unit
Control Word CW = 037H,Status Word SW = 0,Tag Word TW = FFFFHほか,いろいろ初期化する. 037Hは,ラウンドコントロール(RC)をRound to Near,すべての例外をマスク, 精度(PC)に64ビット(仮数部だけで64ビット=全体で80ビットの拡張倍精度)を指定する.
FIST/FISTP Store Integer
ストアする際にはRCフィールドに設定されている丸めモードに従って丸め処理が行われる.
FISTTP Store Integer with Truncation
浮動小数→整数変換時には必ず切り捨て丸め(truncation)を適用する. RCフィールドに設定されている丸めモードは無視する. x87 FPUに対する命令だが,命令セットとしてはSSE3命令に分類されていて,実装されているのはPrescott以降.
FLD Load Real
字数をスタックにプッシュする. FLD ST(i)の形でも利用でき,この場合はスタックのスロットST(i)の値を複製してスタックにプッシュすることになる.

FLD1
FLDL2T
FLDL2E
FLDIP
FLDLG2
FLDLN2
FLDZ
Load Constant 各命令は以下の値をプッシュする.
FLD1 +1.0
FLDL2T log2(10)
FLDL2E log2(e)
FLDPI 円周率π
FLDLG2 log10(2)
FLDLN2 loge(2)
FLDZ +0.0
FLDCWLoad Control Word
FLDENVLoad FPU Environment
FMUL/FMULP/FIMULMultiply
FNOPNo Operation
FPATANPartial Arctangent
FPREMPartial Reminder
FPREM1Partial Reminder
FPTANPartial Tangent
FRNDINT Round to Integer
スタックトップの値を丸め処理してスタックトップに格納する. 整数型に変換したいのであればFISTまたはFISTPを使う. FRNDINTはあくまで浮動小数点型を保持しつつ,整数値に丸めたい場合に使用する(スタックトップの値を丸めてスタックトップにかきもどす).
FRSTRRestore FPU State
FSAVE/FNSAVEStore FPU State
FSCALE Scale
スタックトップSTの値を2のST(1)乗でスケーリング(桁合わせ)する. ST←ST×2ST(1)
FSINSine
FSINCOS Sine and Cosine
スタックトップSTのsin(ST)とcos(ST)を同時に算出し, 現在のスタックトップをsin(ST)でかきかえ,cos(ST)を新たにスタックに積む.
FSQRTSquare Root 平方根
FST/FSTPStore Real
FSTCW/FNSTCWStore Control Word
FSTENV/FNSTENVStore FPU Environment
FSTSW/FNSTSWStore Status Word
FSUB/FSUBP/FISUBSubtract
FSUBR/FSUBRP/FISUBRReverse Subtract
FTST TEST
スタックトップSTの値を0.0と比較して,FPUフラグのC0,C2,C3に次の値を設定する(C2が飛んでいるのは間違いではない).
FUCOM/FUCOMP/FUCOMPP Unordered Compare Real
スタックトップSTの値をソースSRCの値と比較する. SRCにはST(i)が指定できる. 省略するとSRCST(1)になる.
FWAITWait
FXAM Examine 浮動小数点数の内容を検査する.
FXCHExchange Register Contents
FYL2Xy ← y × log2(x)
FYL2XP1y ← y × log2(x + 1)

はたいたかし
2006-08-05
トップ > 開発ツール > Intel x86 > 浮動小数点演算