TIS-100

実績にこんなのがある。

UNCONDITIONAL
Solve SIGNAL COMPARATOR without using the JGZ, JLZ, JEZ, or JNZ instructions.

条件分岐命令(JGZ, JLZ, JEZ, JNZ)を使わずに SIGNAL COMPARATOR を解けというもの。

  • JGZ は ACC に格納されている値が 0 より大きければ処理される。
  • JLZ は ACC に格納されている値が 0 より小さければ処理される。
  • JEZ は ACC に格納されている値が 0 であれば処理される。
  • JNZ は ACC に格納されている値が 0 でなければ処理される。

で、残りの命令セットで使えそうなのは JMP と JRO だった。
JMP は指定したラベル行から処理を始める。
JRO は指定した行数分進めた位置から処理を始める。
例えば ACC への入力が 1, 2, 3 となっていた場合、

MOV UP, ACC
JRO ACC
JMP ONE
JMP TWO
JMP THREE
ONE: #入力が1だった場合ここから処理される
TWO: #入力が2だった場合ここから処理される
THREE: #入力が3だった場合ここから処理される

というようなロジックにすれば JGZ, JLZ, JEZ, JNZ を使わずとも処理が書けるってわけだ。
仕事中に閃いたおかげで実績解除することができた。やったぜ!