RMPA

積和演算

RMPA

Repeated MultiPly and Accumulate


【構文】

RMPA.size

 

【オペレーション】

while ( R3 != 0 ) {

R6:R5:R4 = R6:R5:R4 + *R1 * *R2;

R1 = R1 + n;

R2 = R2 + n;

R3 = R3 - 1;

}

注 1.

R3に0を設定して実行したとき、本命令は無視され、レジスタおよびフラグは変化しません。

注 2.

n:サイズ指定子(.size)が“.B”のとき1、“.W”のとき2、“.L”のとき4になります。

 

【機能】

-

R1を被乗数番地、R2を乗数番地、R3を回数とする積和演算を行います。演算は符号付きで行い、その結果をR6:R5:R4の80ビットに格納します。ただし、R6の上位16ビットには、下位16ビットを符号拡張した値が格納されます。

-

R3に設定可能な最大値は00010000hです。

-

命令終了時のR1、R2の内容は不定となります。

-

命令実行前にR6:R5:R4には初期値を設定してください。また、R6にはR5:R4が負のときは“FFFFFFFFh”を、正のときは“00000000h”を設定してください。

-

命令実行中に割り込み要求があった場合は、演算を中断して割り込みを受け付けます。割り込みルーチンからの復帰後、中断されていた処理を継続して実行します。本命令を使用する際には、割り込み時、R1、R2、R3、R4、R5、R6とPSWを退避/復帰してください。

-

命令実行時は、R1で示される被乗数番地とR2で示される乗数番地から、それぞれデータプリフェッチが行われる場合があります。ただし、R3で指定された範囲を超えるデータプリフェッチは行いません。プリフェッチされるデータサイズについては、各製品のハードウェアマニュアルを参照してください。

アキュムレータ(ACC)を使用します。命令実行後のACCの値は不定です。

 

【命令フォーマット】

構文

size

size

コードサイズ

(バイト)

RMPA.size

B/W/L

size

2

 

【フラグ変化】

フラグ

C

Z

S

O

変化

条件

S:R6のMSBが“1”のとき“1”、それ以外のとき“0”になります。

O:R6:R5:R4の内容が2 - 1または-2 を超えると“1”、それ以外のとき“0”になります。

 

【記述例】

RMPA.W