RACW

16ビット符号付きアキュムレータ丸め処理

RACW

Round ACcumulator Word


【構文】

(1)

RACW src

(2)

RACW src, Adest 【V2.01.00以降】

 

【オペレーション】

(1)

signed long long tmp;

tmp = (signed long long) ACC << src;

tmp = tmp + 0000000080000000h;

if (tmp > (signed long long) 00007FFF00000000h)

ACC = 00007FFF00000000h;

else if (tmp < (signed long long) FFFF800000000000h)

ACC = FFFF800000000000h;

else

ACC = tmp & FFFFFFFF00000000h;

(2)

signed 72bit tmp;

signed 73bit tmp73;

tmp = (signed 72bit) Adest << src;

tmp73 = (signed 73bit) tmp + 0000000000080000000h;

if (tmp73 > (signed 73bit) 00000007FFF00000000h)

Adest = 0000007FFF00000000h;

else if (tmp73 < (signed 73bit) 1FFFFFF800000000000h)

Adest = FFFFFF800000000000h;

else

Adest = tmp & FFFFFFFFFF00000000h;

【V2.01.00以降】

 

【機能】

-

アキュムレータの値に対してワードサイズで丸めを行い、その結果をアキュムレータに格納します。

-

RACW命令は、以下のような手順で実行されます。

処理1. アキュムレータの値を、srcで指定したビット数分(1ビットまたは2ビット)、左シフトします。

処理2. 1ビットまたは2ビットの左シフトを行った64ビットの値に従って、アキュムレータの値が変化します。

 

【命令フォーマット】

構文

対象

コードサイズ

(バイト)

src

Adest

(1) RACW src

#IMM:1(注)

(IMM:1 = 1〜2)

3

(2) RACW src, Adest

【V2.01.00以降】

#IMM:1

(IMM:1 = 1〜2)

A0, A1

3

弊社の「RXファミリ アセンブラ」では、即値(IMM:1)は、1〜2を指定してください。命令コードには、-1した値が埋め込まれます。

Adestには、ACC0の場合A0、ACC1の場合A1を指定してください。

 

【フラグ変化】

フラグ変化はありません。

 

【記述例】

RACW    #1
RACW    #2
RACW    #1, A1
RACW    #2, A0