FMUL
|
浮動小数点乗算
|
FMUL
|
Floating-point MULtiply
|
【構文】
FMUL src, dest
【オペレーション】
dest = dest * src;
【機能】
- | destに格納された単精度浮動小数点数と、srcに格納された単精度浮動小数点数を乗算し、その結果をdestに格納します。結果はFPSWのRM[1:0]ビットにしたがって丸められます。 |
- | 非正規化数の扱いは、FPSWのDNビットによって変化します。 |
注 | アキュムレータ(ACC)を使用します。命令実行後のACCの値は不定です。 |
【命令フォーマット】
|
|
|
|
|
FMUL src, dest
|
|
#IMM:32
|
Rd
|
|
|
Rs
|
Rd
|
|
|
[Rs].L
|
Rd
|
|
|
dsp:8[Rs].L(注)
|
Rd
|
|
|
dsp:16[Rs].L(注)
|
Rd
|
|
注 | 弊社の「RXファミリ アセンブラ」では、ディスプレースメントの値(dsp:8、dsp:16)は、4の倍数を指定してください。dsp:8には、0〜1020(255×4)が指定できます。dsp:16には、0〜262140(65535×4)が指定できます。命令コードには、1/4した値が埋め込まれます。 |
【フラグ変化】
フラグ
|
C
|
Z
|
S
|
O
|
CV
|
CO
|
CZ
|
CU
|
CX
|
CE
|
FV
|
FO
|
FZ
|
FU
|
FX
|
変化
|
−
|
○
|
○
|
−
|
○
|
○
|
○
|
○
|
○
|
○
|
○
|
○
|
−
|
○
|
○
|
条件
Z:演算の結果が“+0”または“-0”のとき“1”、それ以外のとき“0”になります。
S:演算の結果、符号部(ビット31)が“1”のとき“1”、“0”のとき“0”になります。
CV:無効演算が発生したとき“1”、それ以外のとき“0”になります。
CO:オーバフローが発生したとき“1”、それ以外のとき“0”になります。
CZ:常に“0”になります。
CU:アンダフローが発生したとき“1”、それ以外のとき“0”になります。
CX:精度異常が発生したとき“1”、それ以外のとき“0”になります。
CE:非実装処理が発生したとき“1”、それ以外のとき“0”になります。
FV:無効演算が発生したとき“1”、それ以外のときは変化しません。
FO:オーバフローが発生したとき“1”、それ以外のときは変化しません。
FU:アンダフローが発生したとき“1”、それ以外のときは変化しません。
FX:精度異常が発生したとき“1”、それ以外のときは変化しません。
注 | FX、FU、FO、FVフラグは、例外処理許可ビットEX、EU、EO、EVが“1”の場合は変化しません。S、Zフラグは、例外処理が発生した場合は変化しません。 |
【記述例】
FMUL R1, R2
FMUL [R1], R2
|