略号の意味(追加)
オペランド
| ST | スタックトップレジスタ(ST、つまり ST(0) レジスタ) |
| ST(i) | レジスタ(「i」は 0 以上 7 以下) |
| MR | 実数を表すメモリオペランド DWORD/QWORD(32/64 ビット)タイプのメモリ |
| MI | 符号付き整数を表すメモリオペランド WORD/DWORD(16/32 ビット)タイプのメモリ |
| MI | WORD(16 ビット)タイプのメモリ(整数) |
| M80 | TBYTE(80 ビット)タイプのメモリ(パック BCD 数) |
| M14B | 14 バイトのメモリ(タイプは何でもよい) |
| M94B | 94 バイトのメモリ(タイプは何でもよい) |
説明
| No Wait | WAIT 命令の自動挿入が行われない命令 |
命令表
| 命令 | オペランド | サイズ | 説明 |
| F2XM1 | 2 | 2 の X 乗マイナス 1 ST ← 2^ST - 1 | |
| FABS | 2 | 絶対値 ST ← |ST| | |
| FADD | ST,ST(i) ST(i),ST MR |
2 2 2 2+M |
「FADDP ST(1),ST」 と同じ 加算 OP1 ← OP1 + OP2 加算 ST ← ST + OP |
| FADDP | ST(i),ST | 2 | 加算、ST をポップ OP1 ← OP1 + ST |
| FBLD | M80 | 2 | ロード(プッシュ) |
| FBSTP | M80 | 2 | ストア、ST をポップ OP ← ST |
| FCHS | 2 | 符号反転 ST ← - ST | |
| FCLEX | 2 | 例外フラグ、ビジーフラグ、ステータスワードの | |
| FNCLEX | ビット 7 をクリア(FNCLEX : No Wait) | ||
| FCOM | ST(i) MR |
2 2 2+M |
「FCOM ST(1)」 と同じ 比較 ST - OP (コンディションコードの設定のみで オペランド、ST は変化しない) |
| FCOMP | ST(i) MR |
2 2 2+M |
「FCOMP ST(1)」 と同じ 比較、ST をポップ ST - OP |
| FCOMPP | 2 | 比較、現在の ST と ST(1) をポップ ST - ST(1) |
|
| FDECSTP | 2 | スタックトップポインタを 1 減らす ST ← ST(7) ← ST(6) ← ... ← ST(1) ← ST |
|
| FDISI | 2 | 割り込みマスクをセットする(割り込み禁止) | |
| FNDISI | (FNDISI : No Wait) | ||
| FDIV | ST,ST(i) ST(i),ST MR |
2 2 2 2+M |
「FDIVP ST(1),ST」 と同じ 除算 OP1 ← OP1 / OP2 除算 ST ← ST / OP |
| FDIVR | ST,ST(i) ST(i),ST MR |
2 2 2 2+M |
「FDIVRP ST(1),ST」 と同じ 除算 OP1 ← OP2 / OP1 除算 ST ← OP / ST |
| FENI | 2 | 割り込みマスクをクリアする(割り込み許可) | |
| FNENI | (FNENI : No Wait) | ||
| FFREE | ST(i) | 2 | 指定レジスタのタグワードを 11b にセット (このレジスタが空になったことを示す) |
| FIADD | MI | 2+M | 整数を加算 ST ← ST + OP2 |
| FICOM | MI | 2+M | 整数と比較 ST - OP |
| FICOMP | MI | 2+M | 整数と比較、ST をポップ ST - OP |
| FIDIV | MI | 2+M | 整数を除算 ST ← ST / OP2 |
| FIDIVR | MI | 2+M | 整数から除算 ST ← OP2 / ST |
| FILD | MI | 2+M | 整数をロード(プッシュ) |
| FIMUL | MI | 2+M | 整数を乗算 ST ← STラOP2 |
| FINCSTP | 2 | スタックトップポインタを 1 増やす ST ← ST(1) ← ST(2) ← ... ← ST(7) ← ST |
|
| FINIT | 2 | 数値演算コプロセッサを初期化する | |
| FNINIT | (FNINIT : No Wait) | ||
| FIST | MI | 2+M | 整数型でストア OP ← ST |
| FISTP | MI | 2+M | 整数型でストア、ST をポップ OP ← ST |
| FISUB | MI | 2+M | 整数を減算 ST ← ST - OP2 |
| FISUBR | MI | 2+M | 整数から減算 ST ← OP2 - ST |
| FLD | ST(i) MR |
2 2+M |
ロード(プッシュ) OP → ST → ST(1) → ST(2) → ... → ST(7) |
| FLD1 | 2 | 1.0 をロード(プッシュ) | |
| FLDCW | M16 | 2+M | コントロールワード ← OP |
| FLDENV | M14B | 2+M | 環境データ(14 バイト) ← OP |
| FLDL2E | 2 | log2e をロード(プッシュ) | |
| FLDL2T | 2 | log210 をロード(プッシュ) | |
| FLDLG2 | 2 | log102 をロード(プッシュ) | |
| FLDLN2 | 2 | loge2 をロード(プッシュ) | |
| FLDPI | 2 | πをロード(プッシュ) | |
| FLDZ | 2 | 0.0 をロード(プッシュ) | |
| FMUL | ST,ST(i) ST(i),ST MR |
2 2 2 2+M |
「FMULP ST(1),ST」 と同じ 乗算 OP1 ← OP1ラOP2 乗算 ST ← STラOP |
| FNOP | 2 | 何もしない | |
| FN... | 2 | (WAIT 命令の挿入を伴わない制御命令) | |
| FPATAN | 2 | ST(1) ← arctan( ST(1) / ST ) さらに ST をポップ(結果は新 ST に) ( |ST(1) / ST|< 1 であること) |
|
| FPREM | 2 | 剰余(符号は ST と同じ) ST ← ST/ST(1) の 0 方向切捨て時誤差 (終了時の C2 フラグが 1 ならば、計算は未完なので引続きこの命令を行う必要がある) |
|
| FPTAN | 2 | ST ← tan(ST) さらに 1.0 をプッシュ |
|
| FRNDINT | 2 | ST を整数へ丸める(デフォルトでは至近値) | |
| FRSTOR | M94B | 2+M | 全レジスタ(94 バイト) ← OP |
| FSAVE | M94B | 2+M | OP ← 全レジスタ(94 バイト) |
| FNSAVE | さらに FINIT(FNINIT) 命令相当の作業を行う (FNSAVE : No Wait) |
||
| FSCALE | 2 | ST ← STラ2^( ST(1) の切捨て整数値 ) ( |ST(1)|>= 1 であること) |
|
| FSQRT | 2 | 平方根 ST ← ST の平方根 | |
| FST | ST(i) MR |
2 2+M |
ストア OP ← ST |
| FSTCW | M16 | 2+M | OP ← コントロールワード |
| FSTENV | M14B | 2+M | OP ← 環境データ(14 バイト) |
| FSTP | ST(i) MR |
2 2+M |
ストア、 ST をポップ OP ← ST ← ST(1) ← ST(2) ← ... ← ST(7) |
| FSTSW | M16 AX |
2+M 2+M |
OP ← ステータスワード (AX のオペランドは 287 以上のみ可) |
| FSUB | ST,ST(i) ST(i),ST MR |
2 2 2 2+M |
「FSUBP ST(1),ST」 と同じ 減算 OP1 ← OP1 - OP2 減算 ST ← ST - OP |
| FSUBR | ST,ST(i) ST(i),ST MR |
2 2 2 2+M |
「FSUBRP ST(1),ST」 と同じ 減算 OP1 ← OP2 - OP1 減算 ST ← OP - ST |
| FSUBP | ST(i),ST | 2 | 減算、ST をポップ OP1 ← OP1 - ST |
| FSUBP | ST(i),ST | 2 | 減算、ST をポップ OP1 ← ST - OP1 |
| FTST | 2 | 0.0 との比較 ST - 0.0 | |
| FWAIT | 2 | WAIT 命令と同じ | |
| FXAM | 2 | ST の値によってフラグを設定する | |
| FXCH | ST(i) |
2 2 |
「FXCH ST(1)」 と同じ ST の値と OP の値を交換する |
| FXTRACT | 2 | ST ← ST の指数部分 さらに旧 ST の仮数部分(1 以下)をプッシュ |
|
| FYL2X | 2 | ST(1) ← ST(1)ラlog2ST さらに ST をポップ |
|
| FYL2XP1 | 2 | ST(1) ← ST(1)ラlog2(ST+1) さらに ST をポップ (|ST|< 1 - v 2 / 2 であること) |