0-9 - number literal. exactly one of these must be placed before every instruction.
a - adds n to the register.
d - divides the register by n, rounding down.
e - conditional equal to. goto function n if the value in the register is equal to the value of a specific variable.
f - function command:
g - conditional greater than. goto function n if the value in the register is greater than the value of a specific variable.
h - halts program execution. this is meant to be used for debugging purposes only.
l - conditional less than. goto function n if the value in the register is less than the value of a specific variable.
m - multiplies the register by n.
n - negates variable n.
o - outputs a value determined by the value in the register:
r - sets the register equal to the ASCII value of the n-th character of the input string, then removes that character from the input.
s - subtracts n from the register.
v - variable command:
x - sets the current opcode to n.
0 - normal operation. commands will execute one at a time, in order.
1 - function write. the interpreter must parse a call to the f command first; commands will then be added onto the end of the referenced function until a newline is parsed or the opcode is explicitly set to 0.
2 - variable write. the interpreter must parse a call to the v command; after this is executed, the interpreter will return to opcode 0.
3 - conditional opcode. the interpreter must parse a call to the v command, followed by a call to a conditional instruction (l, e or g). afterwards, the interpreter will return to opcode 0.
the value in the register must always be between -127 and 127 inclusive, or program execution will immediately halt.
conditional instructions can only be run in opcode 3.