略号の意味(追加)
オペランド
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 であること) |