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