| CHK 比較命令 <<L1R>>,<<L1>>,<<L2>> |
【ニモニックとオペランド】
CHK bounds, src, destreg
【機能】
Check bounds
範囲のチェック
【オプション】
/S 下限値を引く
/N 下限値を引かない(デフォルト)
【命令フォーマットと表記法】
【解説】
srcがboundsで示される範囲に入っていることをチェックし、結果をレジスタに格納します。
上限値と下限値をboundsで指定されたアドレスに格納しておきます。これらのboundsをsrcと比較します。上限値はboundsの実効アドレスに配置され、下限値は(bounds+オペランドサイズ)のアドレスに配置されています。
/Sオプションを指定すると、srcから下限値を引いた値がdestregに格納されます。/Sを指定しない場合(または/Nを指定した場合)には、srcが直接destregに格納されます。mem [address of bounds + operand size] → tmp if (src ≧ mem [address of bounds] .or.src < tmp) then set V_flag if (c = 1) then src --tmp → destreg else src → destreg endifただし"address of..."は "mem[..]"の逆演算子を意味します。
【フラグ変化】
【発生EIT】
RIE bounds [Gen-IRS/rx], src [Gen/r]のアドレッシングモード違反 RIE sx = 11
【使用例】