SUNTIL

ストリングサーチ

SUNTIL

Search UNTIL equal string


【構文】

SUNTIL.size

 

【オペレーション】

unsigned { char | short | long } *R1;

unsigned long R2, R3, tmp;

while ( R3 != 0 ) {

tmp = ( unsigned long ) *R1++;

R3--;

if ( tmp == R2 ) {

break;

}

}

注 1.

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

注 2.

R1++:サイズ指定子(.size)が“.B”のとき1、“.W”のとき2、“.L”のとき4が加算されます。

 

【機能】

-

R1で示される比較先番地からアドレスの加算方向に、R2の内容と一致するデータが現れるまで、R3で指定される回数を上限として検索を行います。サイズ指定子(.size)が“.B”または“.W”のときは、メモリのバイトデータまたはワードデータをロングワードデータにゼロ拡張し、R2の内容と比較を行います。

-

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

-

フラグは「*R1-R2」の演算結果にしたがって変化します。

-

命令終了時のR1は、一致したデータの次の番地を示します。すべて一致しなかったときは、最後に転送したデータの次の番地を示します。

-

命令終了後のR3は、「初期値 - 比較回数」となります。

-

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

 

【命令フォーマット】

構文

size

処理サイズ

コードサイズ

(バイト)

SUNTIL.size

B/W/L

L

2

 

【フラグ変化】

フラグ

C

Z

S

O

変化

条件

C:符号なし比較の結果、0以上のとき“1”、それ以外のとき“0”になります。

Z:一致したとき“1”、それ以外のとき“0”になります。

 

【記述例】

SUNTIL.W