summaryrefslogtreecommitdiffstats
path: root/Include/opcode.h
blob: 0638b5468c2d3284b21538d87ed35eb4da13555a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/* Auto-generated by Tools/scripts/generate_opcode_h.py */
#ifndef Py_OPCODE_H
#define Py_OPCODE_H
#ifdef __cplusplus
extern "C" {
#endif


    /* Instruction opcodes for compiled code */
#define POP_TOP             	1  
#define ROT_TWO             	2  
#define ROT_THREE           	3  
#define DUP_TOP             	4  
#define DUP_TOP_TWO         	5  
#define NOP                 	9  
#define UNARY_POSITIVE      	10 
#define UNARY_NEGATIVE      	11 
#define UNARY_NOT           	12 
#define UNARY_INVERT        	15 
#define BINARY_MATRIX_MULTIPLY	16 
#define INPLACE_MATRIX_MULTIPLY	17 
#define BINARY_POWER        	19 
#define BINARY_MULTIPLY     	20 
#define BINARY_MODULO       	22 
#define BINARY_ADD          	23 
#define BINARY_SUBTRACT     	24 
#define BINARY_SUBSCR       	25 
#define BINARY_FLOOR_DIVIDE 	26 
#define BINARY_TRUE_DIVIDE  	27 
#define INPLACE_FLOOR_DIVIDE	28 
#define INPLACE_TRUE_DIVIDE 	29 
#define STORE_MAP           	54 
#define INPLACE_ADD         	55 
#define INPLACE_SUBTRACT    	56 
#define INPLACE_MULTIPLY    	57 
#define INPLACE_MODULO      	59 
#define STORE_SUBSCR        	60 
#define DELETE_SUBSCR       	61 
#define BINARY_LSHIFT       	62 
#define BINARY_RSHIFT       	63 
#define BINARY_AND          	64 
#define BINARY_XOR          	65 
#define BINARY_OR           	66 
#define INPLACE_POWER       	67 
#define GET_ITER            	68 
#define PRINT_EXPR          	70 
#define LOAD_BUILD_CLASS    	71 
#define YIELD_FROM          	72 
#define INPLACE_LSHIFT      	75 
#define INPLACE_RSHIFT      	76 
#define INPLACE_AND         	77 
#define INPLACE_XOR         	78 
#define INPLACE_OR          	79 
#define BREAK_LOOP          	80 
#define WITH_CLEANUP        	81 
#define RETURN_VALUE        	83 
#define IMPORT_STAR         	84 
#define YIELD_VALUE         	86 
#define POP_BLOCK           	87 
#define END_FINALLY         	88 
#define POP_EXCEPT          	89 
#define HAVE_ARGUMENT       	90 
#define STORE_NAME          	90 
#define DELETE_NAME         	91 
#define UNPACK_SEQUENCE     	92 
#define FOR_ITER            	93 
#define UNPACK_EX           	94 
#define STORE_ATTR          	95 
#define DELETE_ATTR         	96 
#define STORE_GLOBAL        	97 
#define DELETE_GLOBAL       	98 
#define LOAD_CONST          	100
#define LOAD_NAME           	101
#define BUILD_TUPLE         	102
#define BUILD_LIST          	103
#define BUILD_SET           	104
#define BUILD_MAP           	105
#define LOAD_ATTR           	106
#define COMPARE_OP          	107
#define IMPORT_NAME         	108
#define IMPORT_FROM         	109
#define JUMP_FORWARD        	110
#define JUMP_IF_FALSE_OR_POP	111
#define JUMP_IF_TRUE_OR_POP 	112
#define JUMP_ABSOLUTE       	113
#define POP_JUMP_IF_FALSE   	114
#define POP_JUMP_IF_TRUE    	115
#define LOAD_GLOBAL         	116
#define CONTINUE_LOOP       	119
#define SETUP_LOOP          	120
#define SETUP_EXCEPT        	121
#define SETUP_FINALLY       	122
#define LOAD_FAST           	124
#define STORE_FAST          	125
#define DELETE_FAST         	126
#define RAISE_VARARGS       	130
#define CALL_FUNCTION       	131
#define MAKE_FUNCTION       	132
#define BUILD_SLICE         	133
#define MAKE_CLOSURE        	134
#define LOAD_CLOSURE        	135
#define LOAD_DEREF          	136
#define STORE_DEREF         	137
#define DELETE_DEREF        	138
#define CALL_FUNCTION_VAR   	140
#define CALL_FUNCTION_KW    	141
#define CALL_FUNCTION_VAR_KW	142
#define SETUP_WITH          	143
#define EXTENDED_ARG        	144
#define LIST_APPEND         	145
#define SET_ADD             	146
#define MAP_ADD             	147
#define LOAD_CLASSDEREF     	148

/* EXCEPT_HANDLER is a special, implicit block type which is created when
   entering an except handler. It is not an opcode but we define it here
   as we want it to be available to both frameobject.c and ceval.c, while
   remaining private.*/
#define EXCEPT_HANDLER 257


enum cmp_op {PyCmp_LT=Py_LT, PyCmp_LE=Py_LE, PyCmp_EQ=Py_EQ, PyCmp_NE=Py_NE,
                PyCmp_GT=Py_GT, PyCmp_GE=Py_GE, PyCmp_IN, PyCmp_NOT_IN,
                PyCmp_IS, PyCmp_IS_NOT, PyCmp_EXC_MATCH, PyCmp_BAD};

#define HAS_ARG(op) ((op) >= HAVE_ARGUMENT)

#ifdef __cplusplus
}
#endif
#endif /* !Py_OPCODE_H */