第二部 トロン仕様チップ命令詳細第三章 比較命令
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

【使用例】