FSUB

浮動小数点減算

FSUB

Floating-point SUBtract


【構文】

(1)

FSUB src, dest

(2)

FSUB src, src2, dest 【V2.01.00以降】

 

【オペレーション】

(1)

dest = dest - src;

(2)

dest = src2 - src; 【V2.01.00以降】

 

【機能】

(1)

destに格納された単精度浮動小数点数から、srcに格納された単精度浮動小数点数を減算し、 その結果をdestに格納します。

(2)

src2に格納された単精度浮動小数点数から、srcに格納された単精度浮動小数点数を減算し、 その結果をdestに格納します。アセンブルオプション-isaを用いてRXv2以降の命令セットを 指定した場合にアセンブルできます。 【V2.01.00以降】

-

結果はFPSWのRM[1:0]ビットにしたがって丸められます。

-

非正規化数の扱いは、FPSWのDNビットによって変化します。

-

同一の符号を持つsrc、dest(もしくはsrc2)の差が正確に0であるときは、-∞方向への丸めモードの場合を除いて、結果は+0になります。-∞方向への丸めモードの場合は、結果は-0になります。

 

【命令フォーマット】

構文

処理

サイズ

対象

コードサイズ

(バイト)

src

src2

dest

(1) FSUB src, dest

L

#IMM:32

Rd

7

L

Rs

Rd

3

L

[Rs].L

Rd

3

L

dsp:8[Rs].L(注)

Rd

4

L

dsp:16[Rs].L(注)

Rd

5

(2) FSUB src, src2, dest

【V2.01.00以降】

L

Rs

Rs2

Rd

3

弊社の「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フラグは、例外処理が発生した場合は変化しません。

 

【記述例】

FSUB    R1, R2
FSUB    [R1], R2
FSUB    R1, R2, R3