16.02.2013 Aufrufe

24531904_j

24531904_j

24531904_j

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

FCMOVcc—Floating-Point Conditional Move<br />

オペコード 命令 説明<br />

DA C0+i FCMOVB ST(0), ST(i) より下 (CF=1) の場合転送する。<br />

DA C8+i FCMOVE ST(0), ST(i) 等しい (ZF=1) 場合転送する。<br />

DA D0+i FCMOVBE ST(0), ST(i) より下か等しい (CF=1 または ZF=1) 場合転送する。<br />

DA D8+i FCMOVU ST(0), ST(i) 順序付けなし (PF=1) の場合転送する。<br />

DB C0+i FCMOVNB ST(0), ST(i) より下でない (CF=0) 場合転送する。<br />

DB C8+i FCMOVNE ST(0), ST(i) 等しくない (ZF=0) 場合転送する。<br />

DB D0+i FCMOVNBE ST(0), ST(i) より下でなく等しくない (CF=0 および ZF=0) 場合転送する。<br />

DB D8+i FCMOVNU ST(0), ST(i) 順序付け (PF=0) の場合転送する。<br />

説明<br />

EFLAGS レ ジス タ内のステ ー タ ス ・ フ ラグをテス ト し、 与え られたテス ト 条件が真の場<br />

合、 ソ ー ス ・ オペラ ン ド ( 第 2 オペラン ド ) をデスティネーション・オペランド ( 第 1 オ<br />

ペラン ド ) に転送する。 ソ ース ・ オペラン ド は常に ST(i) レジスタにあり、 デスティネー<br />

ション・オペランドは常にST(0) である。<br />

FCMOVcc 命令は小 さ い IF 構造を最適化す る場合に有用である。 こ れら の命令は、 さ ら<br />

に IF 操作の分岐にかかわ る オ ー バヘ ッ ド お よ びプ ロ セ ッ サに よ る分岐の予測 ミ ス を排除<br />

する上でも有効である。<br />

Pentium Pro プロセッサ ・ ファ ミ リ内のプロセッサによっては、 FCMOVcc 命令をサポ ー<br />

トしていないものがある。 ソフトウェアで、 CPUID 命令 (3:440 ページの 「CPUID—CPU<br />

Identification」 を参照 ) を使用してプロセ ッサの機能情報を調べる こ と によ り、<br />

FCMOVcc 命令がサポ ー ト されているかど う かを確認でき る。 CMOV および FPU の両機<br />

能ビ ッ ト がセッ ト されていれば、 FCMOVcc 命令がサポ ー ト さ れている。<br />

操作<br />

IF condition TRUE<br />

ST(0) ← ST(i)<br />

FI;<br />

FPU 影響を受けるフラグ<br />

C1 ス タ ッ ク ・ アンダ フ ロ ーが発生した場合は 0 にセッ ト され<br />

る。<br />

C0、 C2、 C3 未定義。<br />

追加の Itanium ベース・システム環境例外<br />

Itanium アーキテクチャ ・<br />

レジスタ ・ フォルト<br />

浮動小数点例外<br />

#IS ス タ ッ ク ・ アンダ フ ロ ーが発生した場合。<br />

Integer 影響を受けるフラグ<br />

なし。<br />

浮動小数点レ ジ ス タ無効フ ォ ル ト (PSR.dfl が 1 の場合 )、<br />

NaT レ ジ ス タ参照アボ ー ト 。<br />

第 3 巻 : IA-32 基本命令リファレンス 3:471

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!