24531904_j
24531904_j 24531904_j
FST/FSTP—Store Real オペコード 命令 説明 D9 /2 FST m32real ST(0) を m32real にコピーする。 DD /2 FST m64real ST(0) を m64real にコピーする。 DD D0+i FST ST(i) ST(0) を ST(i) にコピーする。 D9 /3 FSTP m32real ST(0) を m32real にコピーし、レジスタ・スタックをポップする。 DD /3 FSTP m64real ST(0) を m64real にコピーし、レジスタ・スタックをポップする。 DB /7 FSTP m80real ST(0) を m80real にコピーし、レジスタ・スタックをポップする。 DD D8+i FSTP ST(i) ST(0) を ST(i) にコピーし、レジスタ・スタックをポップする。 説明 ST(0) レジスタの値をデスティネーション・オペランドにコピーする。 デスティネーショ ン ・ オペランドには、 メモリ ・ ロケーションまたは FPU レジスタ ・ スタック内の別のレ ジ ス タ を使用で き る。 値を メ モ リ にス ト アする と き は、 値は単精度実数 ま たは倍精度実 数のフ ォ ーマ ッ ト に変換される。 FSTP 命令は、 FST 命令 と 同じ操作を実行した後に、 レ ジ ス タ ・ ス タ ッ ク を ポ ッ プす る。 レジスタ ・ スタックをポップするため、 プロセッサは ST(0) レジスタを空としてマーク し、 スタ ッ ク ・ ポインタ (TOP) を 1 インク リメントする。 FSTP 命令は、 値を メ モ リ に拡 張実数フ ォ ー マ ッ ト で も ス ト アで き る。 デステ ィ ネーシ ョ ン ・ オペラン ド がメモ リ ・ ロケーシ ョ ンの場合、 このオペラン ド はデ スティネーション値の最初のバイトがストアされるアドレスを指定する。 デスティネー シ ョ ン ・ オペラン ド がレジスタの場合、 このオペラン ド はレジスタ ・ スタ ッ ク内のス タ ッ ク の ト ッ プか ら 相対的に レ ジ ス タ を指定す る。 デス テ ィ ネ ー シ ョ ンのサイ ズが単精度実数 ま たは倍精度実数の場合、 ス ト ア さ れる値の 仮数は (FPU 制御ワ ー ド の RC フ ィ ール ド に よ って指定された丸めモー ド に従って ) デス テ ィ ネーシ ョ ンの幅に丸められ、 指数はデステ ィ ネーシ ョ ン ・ フ ォ ーマッ ト の幅とバイ アスに変換される。 ス ト アされる値が大きすぎてデステ ィ ネーシ ョ ン ・ フ ォ ーマッ ト で 表現で き ない場合は、 数値オ ー バフ ロ ー例外 (#0) が発生し、 その例外がマス ク されてい ない場合はデスティネーション・オペランドには何の値もストアされない。 ストアされ る値がデノーマル値であっても、 デノーマル例外(#D) は発生しない。 この条件が単に数 値アンダフ ロ ー例外 (#U) 条件 と して報告される だけである。 ストアされる値が±0、 ±∞、 または NaN の場合は、 仮数およ び指数の最下位ビ ッ ト が デステ ィ ネー シ ョ ン ・ フ ォ ーマ ッ ト に合わせて切り捨て られる。 こ の操作では、 値のア イデンテ ィ ティが 0、 ∞、 または NaN として保存される。 デス テ ィ ネ ー シ ョ ン ・ オペラ ン ド が空でないレ ジ ス タ の場合は、 無効操作例外は発生し ない。 操作 DEST ← ST(0); IF instruction = FSTP THEN PopRegisterStack; FI; 3:538 第 3 巻 : IA-32 基本命令リファレンス
FST/FSTP—Store Real ( 続き ) FPU 影響を受けるフラグ C1 ス タ ッ ク ・ アンダ フ ロ ーが発生した場合は 0 にセッ ト され る。 不正確結果例外 (#P) が発生した場合は、 丸めの方向を示 す。 0 = 切り上げなし、 1 = 切り上げ。 C0、 C2、 C3 未定義。 浮動小数点例外 #IS ス タ ッ ク ・ アンダ フ ロ ーが発生した場合。 #IA ソース・オペランドがSNaN 値であるか、 ま たはその フォーマットがサポートされていない場合。 #U 結果が小さすぎて、 デスティネーション・フォーマットで 表現で き ない場合。 #O 結果が大きすぎて、 デスティネーション・フォーマットで 表現で き ない場合。 #P 値がデステ ィ ネ ーシ ョ ン ・ フ ォ ーマ ッ ト では正確に表現で きない場合。 追加の Itanium ベース・システム環境例外 Itanium アーキテクチャ ・ レジスタ ・ フォルト Itanium アーキテクチャ ・ メモリ ・ フォル ト 浮動小数点レ ジ ス タ無効フ ォ ル ト (PSR.dfl が 1 の場合 )、 NaT レ ジ ス タ参照アボ ー ト 。 VHPT データ ・ フォル ト、 ネス ト された TLB フォルト、 データ TLB フォルト、 代替データTLB フォルト、 デー タ・ページ不在フォルト、 データNaT ページ参照アボー ト、 データ・キー・ ミス・フォルト、 データ・キー許可 フォルト、 データ・アクセス権フォルト、 データ・アクセ ス・ビット ・フォルト、 データ・ダーティ ・ビット ・フォ ルト。 保護モード例外 #GP(0) デステ ィ ネー シ ョ ンが書き込み不可能なセグメ ン ト にある 場合。 メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 DS、 ES、 FS、 または GS レジスタを使用してメモリがア クセスされ、 レジスタの内容が NULL セグメン ト ・ セレ クタであった場合。 #SS(0) メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 #NM CR0 の EM または TS がセッ ト された場合。 #PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。 第 3 巻 : IA-32 基本命令リファレンス 3:539
- 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 530 und 531: 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 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 ( 続
- Seite 580 und 581: FYL2XP1—Compute y ∗ log 2 (x +1
- Seite 582 und 583: IDIV—Signed Divide オペコー
- Seite 584 und 585: IDIV—Signed Divide ( 続き ) 実
- Seite 586 und 587: IMUL—Signed Multiply ( 続き ) 2
- Seite 588 und 589: IMUL—Signed Multiply ( 続き )
- Seite 590 und 591: IN—Input from Port ( 続き ) 操
- Seite 592 und 593: INC—Increment by 1 オペコー
- Seite 594 und 595: INS/INSB/INSW/INSD—Input from Por
- Seite 596 und 597: INS/INSB/INSW/INSD—Input from Por
- Seite 598 und 599: INT n/INTO/INT 3—Call to Interrup
FST/FSTP—Store Real<br />
オペコード 命令 説明<br />
D9 /2 FST m32real ST(0) を m32real にコピーする。<br />
DD /2 FST m64real ST(0) を m64real にコピーする。<br />
DD D0+i FST ST(i) ST(0) を ST(i) にコピーする。<br />
D9 /3 FSTP m32real ST(0) を m32real にコピーし、レジスタ・スタックをポップする。<br />
DD /3 FSTP m64real ST(0) を m64real にコピーし、レジスタ・スタックをポップする。<br />
DB /7 FSTP m80real ST(0) を m80real にコピーし、レジスタ・スタックをポップする。<br />
DD D8+i FSTP ST(i) ST(0) を ST(i) にコピーし、レジスタ・スタックをポップする。<br />
説明<br />
ST(0) レジスタの値をデスティネーション・オペランドにコピーする。 デスティネーショ<br />
ン ・ オペランドには、 メモリ ・ ロケーションまたは FPU レジスタ ・ スタック内の別のレ<br />
ジ ス タ を使用で き る。 値を メ モ リ にス ト アする と き は、 値は単精度実数 ま たは倍精度実<br />
数のフ ォ ーマ ッ ト に変換される。<br />
FSTP 命令は、 FST 命令 と 同じ操作を実行した後に、 レ ジ ス タ ・ ス タ ッ ク を ポ ッ プす る。<br />
レジスタ ・ スタックをポップするため、 プロセッサは ST(0) レジスタを空としてマーク<br />
し、 スタ ッ ク ・ ポインタ (TOP) を 1 インク リメントする。 FSTP 命令は、 値を メ モ リ に拡<br />
張実数フ ォ ー マ ッ ト で も ス ト アで き る。<br />
デステ ィ ネーシ ョ ン ・ オペラン ド がメモ リ ・ ロケーシ ョ ンの場合、 このオペラン ド はデ<br />
スティネーション値の最初のバイトがストアされるアドレスを指定する。 デスティネー<br />
シ ョ ン ・ オペラン ド がレジスタの場合、 このオペラン ド はレジスタ ・ スタ ッ ク内のス<br />
タ ッ ク の ト ッ プか ら 相対的に レ ジ ス タ を指定す る。<br />
デス テ ィ ネ ー シ ョ ンのサイ ズが単精度実数 ま たは倍精度実数の場合、 ス ト ア さ れる値の<br />
仮数は (FPU 制御ワ ー ド の RC フ ィ ール ド に よ って指定された丸めモー ド に従って ) デス<br />
テ ィ ネーシ ョ ンの幅に丸められ、 指数はデステ ィ ネーシ ョ ン ・ フ ォ ーマッ ト の幅とバイ<br />
アスに変換される。 ス ト アされる値が大きすぎてデステ ィ ネーシ ョ ン ・ フ ォ ーマッ ト で<br />
表現で き ない場合は、 数値オ ー バフ ロ ー例外 (#0) が発生し、 その例外がマス ク されてい<br />
ない場合はデスティネーション・オペランドには何の値もストアされない。 ストアされ<br />
る値がデノーマル値であっても、 デノーマル例外(#D) は発生しない。 この条件が単に数<br />
値アンダフ ロ ー例外 (#U) 条件 と して報告される だけである。<br />
ストアされる値が±0、 ±∞、 または NaN の場合は、 仮数およ び指数の最下位ビ ッ ト が<br />
デステ ィ ネー シ ョ ン ・ フ ォ ーマ ッ ト に合わせて切り捨て られる。 こ の操作では、 値のア<br />
イデンテ ィ ティが 0、 ∞、 または NaN として保存される。<br />
デス テ ィ ネ ー シ ョ ン ・ オペラ ン ド が空でないレ ジ ス タ の場合は、 無効操作例外は発生し<br />
ない。<br />
操作<br />
DEST ← ST(0);<br />
IF instruction = FSTP<br />
THEN<br />
PopRegisterStack;<br />
FI;<br />
3:538 第 3 巻 : IA-32 基本命令リファレンス