Subtract the contents of address a
from the contents of address b
, store the result in address b
, and if the result is non-positive, transfer control to address c
. If the result is positive, execution continues to the next instruction in the code. So subleq a, b, c
would be equivalent to:
mem[b] -= mem[a];
if (mem[b] <= 0)
goto c;
A variant of subleq
is subneg
, which is equivalent to subleq
except instead of mem[b] <= 0
it performs mem[b] < 0
.
- The accumulator is subtracted from the specified memory location.
- The next instruction is skipped if the memory location was less than the accumulator.
- The result is stored in the accumulator and the memory location.
Memory location 0
contains the program counter (aka instruction pointer), and memory location 1
contains the accumulator.
RSSB x
is equivalent to:
if (mem[x] < mem[1])
skip_next_instruction();
mem[x] -= mem[1];
mem[1] = mem[x];
Another example is a one-instruction variant of [transport triggered architecture][3].
ais's Three Star Programmer is another example of one of these. ais claims it's Turing-complete, and I'm inclined to believe him.