Home | History | Annotate | Download | only in Include
      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 STORE_ANNOTATION        127
    103 #define RAISE_VARARGS           130
    104 #define CALL_FUNCTION           131
    105 #define MAKE_FUNCTION           132
    106 #define BUILD_SLICE             133
    107 #define LOAD_CLOSURE            135
    108 #define LOAD_DEREF              136
    109 #define STORE_DEREF             137
    110 #define DELETE_DEREF            138
    111 #define CALL_FUNCTION_KW        141
    112 #define CALL_FUNCTION_EX        142
    113 #define SETUP_WITH              143
    114 #define EXTENDED_ARG            144
    115 #define LIST_APPEND             145
    116 #define SET_ADD                 146
    117 #define MAP_ADD                 147
    118 #define LOAD_CLASSDEREF         148
    119 #define BUILD_LIST_UNPACK       149
    120 #define BUILD_MAP_UNPACK        150
    121 #define BUILD_MAP_UNPACK_WITH_CALL 151
    122 #define BUILD_TUPLE_UNPACK      152
    123 #define BUILD_SET_UNPACK        153
    124 #define SETUP_ASYNC_WITH        154
    125 #define FORMAT_VALUE            155
    126 #define BUILD_CONST_KEY_MAP     156
    127 #define BUILD_STRING            157
    128 #define BUILD_TUPLE_UNPACK_WITH_CALL 158
    129 
    130 /* EXCEPT_HANDLER is a special, implicit block type which is created when
    131    entering an except handler. It is not an opcode but we define it here
    132    as we want it to be available to both frameobject.c and ceval.c, while
    133    remaining private.*/
    134 #define EXCEPT_HANDLER 257
    135 
    136 
    137 enum cmp_op {PyCmp_LT=Py_LT, PyCmp_LE=Py_LE, PyCmp_EQ=Py_EQ, PyCmp_NE=Py_NE,
    138                 PyCmp_GT=Py_GT, PyCmp_GE=Py_GE, PyCmp_IN, PyCmp_NOT_IN,
    139                 PyCmp_IS, PyCmp_IS_NOT, PyCmp_EXC_MATCH, PyCmp_BAD};
    140 
    141 #define HAS_ARG(op) ((op) >= HAVE_ARGUMENT)
    142 
    143 #ifdef __cplusplus
    144 }
    145 #endif
    146 #endif /* !Py_OPCODE_H */
    147