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を退避/復帰してください。 |
【命令フォーマット】
【フラグ変化】
条件
C:符号なし比較の結果、0以上のとき“1”、それ以外のとき“0”になります。
Z:一致したとき“1”、それ以外のとき“0”になります。
【記述例】