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です。 |
- | 命令実行前にR6:R5:R4には初期値を設定してください。また、R6にはR5:R4が負のときは“FFFFFFFFh”を、正のときは“00000000h”を設定してください。 |
- | 命令実行中に割り込み要求があった場合は、演算を中断して割り込みを受け付けます。割り込みルーチンからの復帰後、中断されていた処理を継続して実行します。本命令を使用する際には、割り込み時、R1、R2、R3、R4、R5、R6とPSWを退避/復帰してください。 |
- | 命令実行時は、R1で示される被乗数番地とR2で示される乗数番地から、それぞれデータプリフェッチが行われる場合があります。ただし、R3で指定された範囲を超えるデータプリフェッチは行いません。プリフェッチされるデータサイズについては、各製品のハードウェアマニュアルを参照してください。 |
注 | アキュムレータ(ACC)を使用します。命令実行後のACCの値は不定です。 |
【命令フォーマット】
【フラグ変化】
条件
S:R6のMSBが“1”のとき“1”、それ以外のとき“0”になります。
O:R6:R5:R4の内容が2 - 1または-2 を超えると“1”、それ以外のとき“0”になります。
【記述例】