1 /* Auto-generated by Tools/scripts/generate_opcode_h.py from Lib/opcode.py */ 2 #ifndef Py_OPCODE_H 3 #define Py_OPCODE_H 4 #ifdef __cplusplus 5 extern "C" { 6 #endif 7 8 9 /* Instruction opcodes for compiled code */ 10 #define POP_TOP 1 11 #define ROT_TWO 2 12 #define ROT_THREE 3 13 #define DUP_TOP 4 14 #define DUP_TOP_TWO 5 15 #define ROT_FOUR 6 16 #define NOP 9 17 #define UNARY_POSITIVE 10 18 #define UNARY_NEGATIVE 11 19 #define UNARY_NOT 12 20 #define UNARY_INVERT 15 21 #define BINARY_MATRIX_MULTIPLY 16 22 #define INPLACE_MATRIX_MULTIPLY 17 23 #define BINARY_POWER 19 24 #define BINARY_MULTIPLY 20 25 #define BINARY_MODULO 22 26 #define BINARY_ADD 23 27 #define BINARY_SUBTRACT 24 28 #define BINARY_SUBSCR 25 29 #define BINARY_FLOOR_DIVIDE 26 30 #define BINARY_TRUE_DIVIDE 27 31 #define INPLACE_FLOOR_DIVIDE 28 32 #define INPLACE_TRUE_DIVIDE 29 33 #define GET_AITER 50 34 #define GET_ANEXT 51 35 #define BEFORE_ASYNC_WITH 52 36 #define BEGIN_FINALLY 53 37 #define END_ASYNC_FOR 54 38 #define INPLACE_ADD 55 39 #define INPLACE_SUBTRACT 56 40 #define INPLACE_MULTIPLY 57 41 #define INPLACE_MODULO 59 42 #define STORE_SUBSCR 60 43 #define DELETE_SUBSCR 61 44 #define BINARY_LSHIFT 62 45 #define BINARY_RSHIFT 63 46 #define BINARY_AND 64 47 #define BINARY_XOR 65 48 #define BINARY_OR 66 49 #define INPLACE_POWER 67 50 #define GET_ITER 68 51 #define GET_YIELD_FROM_ITER 69 52 #define PRINT_EXPR 70 53 #define LOAD_BUILD_CLASS 71 54 #define YIELD_FROM 72 55 #define GET_AWAITABLE 73 56 #define INPLACE_LSHIFT 75 57 #define INPLACE_RSHIFT 76 58 #define INPLACE_AND 77 59 #define INPLACE_XOR 78 60 #define INPLACE_OR 79 61 #define WITH_CLEANUP_START 81 62 #define WITH_CLEANUP_FINISH 82 63 #define RETURN_VALUE 83 64 #define IMPORT_STAR 84 65 #define SETUP_ANNOTATIONS 85 66 #define YIELD_VALUE 86 67 #define POP_BLOCK 87 68 #define END_FINALLY 88 69 #define POP_EXCEPT 89 70 #define HAVE_ARGUMENT 90 71 #define STORE_NAME 90 72 #define DELETE_NAME 91 73 #define UNPACK_SEQUENCE 92 74 #define FOR_ITER 93 75 #define UNPACK_EX 94 76 #define STORE_ATTR 95 77 #define DELETE_ATTR 96 78 #define STORE_GLOBAL 97 79 #define DELETE_GLOBAL 98 80 #define LOAD_CONST 100 81 #define LOAD_NAME 101 82 #define BUILD_TUPLE 102 83 #define BUILD_LIST 103 84 #define BUILD_SET 104 85 #define BUILD_MAP 105 86 #define LOAD_ATTR 106 87 #define COMPARE_OP 107 88 #define IMPORT_NAME 108 89 #define IMPORT_FROM 109 90 #define JUMP_FORWARD 110 91 #define JUMP_IF_FALSE_OR_POP 111 92 #define JUMP_IF_TRUE_OR_POP 112 93 #define JUMP_ABSOLUTE 113 94 #define POP_JUMP_IF_FALSE 114 95 #define POP_JUMP_IF_TRUE 115 96 #define LOAD_GLOBAL 116 97 #define SETUP_FINALLY 122 98 #define LOAD_FAST 124 99 #define STORE_FAST 125 100 #define DELETE_FAST 126 101 #define RAISE_VARARGS 130 102 #define CALL_FUNCTION 131 103 #define MAKE_FUNCTION 132 104 #define BUILD_SLICE 133 105 #define LOAD_CLOSURE 135 106 #define LOAD_DEREF 136 107 #define STORE_DEREF 137 108 #define DELETE_DEREF 138 109 #define CALL_FUNCTION_KW 141 110 #define CALL_FUNCTION_EX 142 111 #define SETUP_WITH 143 112 #define EXTENDED_ARG 144 113 #define LIST_APPEND 145 114 #define SET_ADD 146 115 #define MAP_ADD 147 116 #define LOAD_CLASSDEREF 148 117 #define BUILD_LIST_UNPACK 149 118 #define BUILD_MAP_UNPACK 150 119 #define BUILD_MAP_UNPACK_WITH_CALL 151 120 #define BUILD_TUPLE_UNPACK 152 121 #define BUILD_SET_UNPACK 153 122 #define SETUP_ASYNC_WITH 154 123 #define FORMAT_VALUE 155 124 #define BUILD_CONST_KEY_MAP 156 125 #define BUILD_STRING 157 126 #define BUILD_TUPLE_UNPACK_WITH_CALL 158 127 #define LOAD_METHOD 160 128 #define CALL_METHOD 161 129 #define CALL_FINALLY 162 130 #define POP_FINALLY 163 131 132 /* EXCEPT_HANDLER is a special, implicit block type which is created when 133 entering an except handler. It is not an opcode but we define it here 134 as we want it to be available to both frameobject.c and ceval.c, while 135 remaining private.*/ 136 #define EXCEPT_HANDLER 257 137 138 139 enum cmp_op {PyCmp_LT=Py_LT, PyCmp_LE=Py_LE, PyCmp_EQ=Py_EQ, PyCmp_NE=Py_NE, 140 PyCmp_GT=Py_GT, PyCmp_GE=Py_GE, PyCmp_IN, PyCmp_NOT_IN, 141 PyCmp_IS, PyCmp_IS_NOT, PyCmp_EXC_MATCH, PyCmp_BAD}; 142 143 #define HAS_ARG(op) ((op) >= HAVE_ARGUMENT) 144 145 #ifdef __cplusplus 146 } 147 #endif 148 #endif /* !Py_OPCODE_H */ 149