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.

fcvt.fx<br />

fcvt.fx ─ 浮動小数点から整数への変換 (Convert Floating-point to Integer)<br />

書式 : (qp) fcvt.fx.sf f 1 = f 2 signed_form F10<br />

(qp) fcvt.fx.trunc.sf f 1 = f 2 signed_form, trunc_form F10<br />

(qp) fcvt.fxu.sf f 1 = f 2 unsigned_form F10<br />

(qp) fcvt.fxu.trunc.sf f 1 = f 2 unsigned_form, trunc_form F10<br />

説明 : FR f2 が レ ジ ス タ形式の浮動小数点値 と して扱われ、 FPSR.sf.rc で指定される丸めモー ド<br />

を使用するか、 あるいは trunc_form の場合にはゼロ側への丸めモー ド を使用して、 符号<br />

付き (signed_form の場合 ) または符号なし (unsigned_form の場合 ) の整数に変換される。<br />

結果は、 FR f1 の 64 ビットの仮数フィールドに格納される。 FR f1 の指数フ ィ ール ド は<br />

2.0 63 (0x1003E) のバイアス付き指数に設定 さ れ、 FR f1 の符号フ ィ ール ド は正に対応する<br />

0 に設定 さ れる。 変換の結果を 64 ビ ッ ト 整数で表現で き ない場合は、 IEEE 無効操作浮<br />

動小数点例外フ ォ ル ト がデ ィ スエ ー ブルに さ れている と き は、 変換結果 と して 64 ビッ ト<br />

整数不定値 0x8000000000000000 が使用される。<br />

FR f2 が NaTVal である場合は、 FR f1 は計算結果ではな く NaTVal に設定される。<br />

sf のニーモニ ッ ク値は 3:50 ページの表 2-23 に示している。<br />

操作 : if (PR[qp]) {<br />

fp_check_target_register(f 1);<br />

if (tmp_isrcode = fp_reg_disabled(f 1 , f 2 , 0, 0))<br />

disabled_fp_register_fault(tmp_isrcode, 0);<br />

}<br />

if (fp_is_natval(FR[f 2 ])) {<br />

FR[f 1 ] = NATVAL;<br />

fp_update_psr(f 1);<br />

} else {<br />

tmp_default_result = fcvt_exception_fault_check(f 2 , signed_form,<br />

trunc_form, sf, &tmp_fp_env);<br />

if (fp_raise_fault(tmp_fp_env))<br />

fp_exception_fault(fp_decode_fault(tmp_fp_env));<br />

}<br />

if (fp_is_nan(tmp_default_result)) {<br />

FR[f 1 ].significand = INTEGER_INDEFINITE;<br />

FR[f 1].exponent = FP_INTEGER_EXP;<br />

FR[f 1 ].sign = FP_SIGN_POSITIVE;<br />

} else {<br />

tmp_res = fp_ieee_rnd_to_int(fp_reg_read(FR[f 2]), &tmp_fp_env);<br />

if (tmp_res.exponent)<br />

tmp_res.significand = fp_U64_rsh(<br />

tmp_res.significand, (FP_INTEGER_EXP - tmp_res.exponent));<br />

if (signed_form && tmp_res.sign)<br />

tmp_res.significand = (~tmp_res.significand) + 1;<br />

}<br />

FR[f 1 ].significand = tmp_res.significand;<br />

FR[f 1 ].exponent = FP_INTEGER_EXP;<br />

FR[f 1].sign = FP_SIGN_POSITIVE;<br />

fp_update_fpsr(sf, tmp_fp_env);<br />

fp_update_psr(f 1 );<br />

if (fp_raise_traps(tmp_fp_env))<br />

fp_exception_trap(fp_decode_trap(tmp_fp_env));<br />

第 3 巻 : 命令リファレンス 3:63

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!