Simple arithmitic
ADD: Pops 2 elements, adds them together and pushes the result onto the stackSUBPops 2 elements, subtracts them and pushes the result onto the stackMULPops 2 elements, multiplies them and pushes the result onto the stackDIVPops 2 elements, divides them and pushes the result onto the stackMODPops 2 elements, uses the modulo operator on them and pushes the result onto the stackNEGPops 1 element, uses the ! operator on it and pushes the result onto the stack
Logical
EQUALPops 2 elements, checks if they're equal and pushes the result onto the stackNOT_EQUALPops 2 elements, checks if they're not equal and pushes the result onto the stackSTRICT_EQUALPops 2 elements, checks if they're strictly equal and pushes the result onto the stackSTRICT_NOT_EQUALPops 2 elements, checks if they're strictly not equal and pushes the result onto the stackGREATER_THANPops 2 elements, checks if the top one is greater and pushes the result onto the stackLESS_THANPops 2 elements, checks if the top one is smaller and pushes the result onto the stackLESS_THAN_EQUALPops 2 elements, checks if the top one is smaller or the same and pushes the result onto the stackGREATER_THAN_EQUALPops 2 elements, checks if the top one is greater or the same and pushes the result onto the stack
Bitwise
ANDPops 2 elements, uses the&operator and pushes the result onto the stackORPops 2 elements, uses the|operator and pushes the result onto the stackXORPops 2 elements, uses the^operator and pushes the result onto the stackNOTPops 2 elements, uses the~operator and pushes the result onto the stackLEFT_SHIFTPops 2 elements, uses the<<operator and pushes the result onto the stackRIGHT_SHIFTPops 2 elements, uses the>>operator and pushes the result onto the stackZERO_LEFT_SHIFTPops 2 elements, uses the>>>operator and pushes the result onto the stack
Stack operations
PUSHPushes the next byte onto the stackJMPJumps the pointer to the next byteJMP_IFJumps the pointer to the next byte if the top argument on the stack is also true (and pops that one)
Object operations
PUSH_THISPushes thewindow(or global) keyword onto the stackMEMBER_EXPRESSIONGets the last 2 from the stack, pushes the result ofa[b]to the stackPUSH_ARRAYCreates an empty array and pushes it to the stackPUSH_OBJECTCreates an empty object and pushes it to the stackPUSH_TO_ARRAYGets the top element from the stack, and pushes it to the second element on the stack
Other (for now)
EXECUTE_FUNCTIONExecutes the function at the top of the stack, passes in the destructured arguments from the array in the second top in the stack, if the type of the var is Array. If not, just use that as the only argument
VM operations
HLTHalts the execution