PUSH (value) | Pushing (value) to stack |
POP (ID) | Pop value from stack to the (ID) |
NOT (value) | Getting complement of (value) |
ADD (arg1) (arg2) (result) | Adding (arg1) (arg2) and save value to (result) |
SUB (arg1) (arg2) (result) | Substracting (arg1) (arg2) and save value to (result) |
MUL | Multiply (arg1) (arg2) and save value to (result) |
DIV | Divide (arg1) (arg2) and save value to (result) |
MOD | Calculate the modules of (arg1) (arg2) and save value to (result) |
AND | Perform logical and between (arg1) (arg2) and save value to (result) |
OR | Perform logical or between (arg1) (arg2) and save value to (result) |
XOR | Perform logical xor between (arg1) (arg2) and save value to (result) |
EQ | Check the equality of the two operands and store the comparsion result in temp reg |
NE | Check the inequality of the two operands and store the comparsion result in temp reg |
LT | Check if the first operand is less than the second and store the comparison result in temp reg |
GT | Check if the first operand is greater than the second and store the comparison result in temp reg |
LE | Check if the first operand is less than or equal the second and store the comparison result in temp reg |
GE | Check if the first operand is greater than or equal the second and store the comparison result in temp reg |
JMP L(): | Unconditional Jump to label |
JUMPZERO L(): | Jump if the zero flag from previous command is zero |
JMPNONZERO L(): | Jump if the zero flag from previous command is non-zero |
Convi (var/value) | Convert float to integer |
Convf (var/value) | Convert integer to float |