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