5 enum opcode 6 { 7 OP_ADD = 0, // ADD dest, src 8 OP_SUB, // SUB dest, src 9 OP_MUL, // MUL dest, src 10 OP_DIV, // DIV dest, src 11 OP_NEW, // NEW dest, type 12 OP_ASSIGN, // perform an assign() operation from src to dest, without increasing 13 // the number of references to src, but decreasing the number of referenes of dest 14 OP_ASSIGN_INC, // same as above, but increase the number of references to src 15 OP_MOV, // just an 'aliasing' move, not touching any references. useful for moving 16 // 'atomic' data, like integers and floats, and moving objects to temporary variables 17 OP_INCREFS, // increase the number of references to dest 18 OP_DECREFS, // decrease the number of references to dest 19 OP_COPY, // copy dest 20 OP_ASSIGNSUBSC, 21 OP_ASSIGNSUBSC_INC, 22 OP_ASSIGNSLICE, 23 OP_ASSIGNSLICE_INC, 24 OP_LOADINT, // dest, src 25 OP_LOADFLT, // dest, src 26 OP_LOADSEQ, // dest 27 OP_BEGINSEQ, 28 OP_ENDSEQ, 29 OP_CNV, // dest, src 30 OP_EQ, // dest, src 31 OP_NE, 32 OP_LT, 33 OP_GT, 34 OP_LE, 35 OP_GE, 36 OP_AND, 37 OP_OR, 38 OP_XOR, 39 OP_NOT, 40 OP_IF, 41 OP_SEQ_CMP, // dest, src 42 OP_SEQ_EQ, // dest, src 43 OP_SUBSC, // dest, src 44 OP_SLICE, // dest, src 45 OP_APPEND, // dest, src 46 OP_PREPEND, // dest, src 47 OP_RETURN, 48 OP_NOP 49 };