(root)/
Python-3.12.0/
Include/
opcode.h
       1  // Auto-generated by Tools/build/generate_opcode_h.py from Lib/opcode.py
       2  
       3  #ifndef Py_OPCODE_H
       4  #define Py_OPCODE_H
       5  #ifdef __cplusplus
       6  extern "C" {
       7  #endif
       8  
       9  
      10  /* Instruction opcodes for compiled code */
      11  #define CACHE                                    0
      12  #define POP_TOP                                  1
      13  #define PUSH_NULL                                2
      14  #define INTERPRETER_EXIT                         3
      15  #define END_FOR                                  4
      16  #define END_SEND                                 5
      17  #define NOP                                      9
      18  #define UNARY_NEGATIVE                          11
      19  #define UNARY_NOT                               12
      20  #define UNARY_INVERT                            15
      21  #define RESERVED                                17
      22  #define BINARY_SUBSCR                           25
      23  #define BINARY_SLICE                            26
      24  #define STORE_SLICE                             27
      25  #define GET_LEN                                 30
      26  #define MATCH_MAPPING                           31
      27  #define MATCH_SEQUENCE                          32
      28  #define MATCH_KEYS                              33
      29  #define PUSH_EXC_INFO                           35
      30  #define CHECK_EXC_MATCH                         36
      31  #define CHECK_EG_MATCH                          37
      32  #define WITH_EXCEPT_START                       49
      33  #define GET_AITER                               50
      34  #define GET_ANEXT                               51
      35  #define BEFORE_ASYNC_WITH                       52
      36  #define BEFORE_WITH                             53
      37  #define END_ASYNC_FOR                           54
      38  #define CLEANUP_THROW                           55
      39  #define STORE_SUBSCR                            60
      40  #define DELETE_SUBSCR                           61
      41  #define GET_ITER                                68
      42  #define GET_YIELD_FROM_ITER                     69
      43  #define LOAD_BUILD_CLASS                        71
      44  #define LOAD_ASSERTION_ERROR                    74
      45  #define RETURN_GENERATOR                        75
      46  #define RETURN_VALUE                            83
      47  #define SETUP_ANNOTATIONS                       85
      48  #define LOAD_LOCALS                             87
      49  #define POP_EXCEPT                              89
      50  #define HAVE_ARGUMENT                           90
      51  #define STORE_NAME                              90
      52  #define DELETE_NAME                             91
      53  #define UNPACK_SEQUENCE                         92
      54  #define FOR_ITER                                93
      55  #define UNPACK_EX                               94
      56  #define STORE_ATTR                              95
      57  #define DELETE_ATTR                             96
      58  #define STORE_GLOBAL                            97
      59  #define DELETE_GLOBAL                           98
      60  #define SWAP                                    99
      61  #define LOAD_CONST                             100
      62  #define LOAD_NAME                              101
      63  #define BUILD_TUPLE                            102
      64  #define BUILD_LIST                             103
      65  #define BUILD_SET                              104
      66  #define BUILD_MAP                              105
      67  #define LOAD_ATTR                              106
      68  #define COMPARE_OP                             107
      69  #define IMPORT_NAME                            108
      70  #define IMPORT_FROM                            109
      71  #define JUMP_FORWARD                           110
      72  #define POP_JUMP_IF_FALSE                      114
      73  #define POP_JUMP_IF_TRUE                       115
      74  #define LOAD_GLOBAL                            116
      75  #define IS_OP                                  117
      76  #define CONTAINS_OP                            118
      77  #define RERAISE                                119
      78  #define COPY                                   120
      79  #define RETURN_CONST                           121
      80  #define BINARY_OP                              122
      81  #define SEND                                   123
      82  #define LOAD_FAST                              124
      83  #define STORE_FAST                             125
      84  #define DELETE_FAST                            126
      85  #define LOAD_FAST_CHECK                        127
      86  #define POP_JUMP_IF_NOT_NONE                   128
      87  #define POP_JUMP_IF_NONE                       129
      88  #define RAISE_VARARGS                          130
      89  #define GET_AWAITABLE                          131
      90  #define MAKE_FUNCTION                          132
      91  #define BUILD_SLICE                            133
      92  #define JUMP_BACKWARD_NO_INTERRUPT             134
      93  #define MAKE_CELL                              135
      94  #define LOAD_CLOSURE                           136
      95  #define LOAD_DEREF                             137
      96  #define STORE_DEREF                            138
      97  #define DELETE_DEREF                           139
      98  #define JUMP_BACKWARD                          140
      99  #define LOAD_SUPER_ATTR                        141
     100  #define CALL_FUNCTION_EX                       142
     101  #define LOAD_FAST_AND_CLEAR                    143
     102  #define EXTENDED_ARG                           144
     103  #define LIST_APPEND                            145
     104  #define SET_ADD                                146
     105  #define MAP_ADD                                147
     106  #define COPY_FREE_VARS                         149
     107  #define YIELD_VALUE                            150
     108  #define RESUME                                 151
     109  #define MATCH_CLASS                            152
     110  #define FORMAT_VALUE                           155
     111  #define BUILD_CONST_KEY_MAP                    156
     112  #define BUILD_STRING                           157
     113  #define LIST_EXTEND                            162
     114  #define SET_UPDATE                             163
     115  #define DICT_MERGE                             164
     116  #define DICT_UPDATE                            165
     117  #define CALL                                   171
     118  #define KW_NAMES                               172
     119  #define CALL_INTRINSIC_1                       173
     120  #define CALL_INTRINSIC_2                       174
     121  #define LOAD_FROM_DICT_OR_GLOBALS              175
     122  #define LOAD_FROM_DICT_OR_DEREF                176
     123  #define MIN_INSTRUMENTED_OPCODE                237
     124  #define INSTRUMENTED_LOAD_SUPER_ATTR           237
     125  #define INSTRUMENTED_POP_JUMP_IF_NONE          238
     126  #define INSTRUMENTED_POP_JUMP_IF_NOT_NONE      239
     127  #define INSTRUMENTED_RESUME                    240
     128  #define INSTRUMENTED_CALL                      241
     129  #define INSTRUMENTED_RETURN_VALUE              242
     130  #define INSTRUMENTED_YIELD_VALUE               243
     131  #define INSTRUMENTED_CALL_FUNCTION_EX          244
     132  #define INSTRUMENTED_JUMP_FORWARD              245
     133  #define INSTRUMENTED_JUMP_BACKWARD             246
     134  #define INSTRUMENTED_RETURN_CONST              247
     135  #define INSTRUMENTED_FOR_ITER                  248
     136  #define INSTRUMENTED_POP_JUMP_IF_FALSE         249
     137  #define INSTRUMENTED_POP_JUMP_IF_TRUE          250
     138  #define INSTRUMENTED_END_FOR                   251
     139  #define INSTRUMENTED_END_SEND                  252
     140  #define INSTRUMENTED_INSTRUCTION               253
     141  #define INSTRUMENTED_LINE                      254
     142  #define MIN_PSEUDO_OPCODE                      256
     143  #define SETUP_FINALLY                          256
     144  #define SETUP_CLEANUP                          257
     145  #define SETUP_WITH                             258
     146  #define POP_BLOCK                              259
     147  #define JUMP                                   260
     148  #define JUMP_NO_INTERRUPT                      261
     149  #define LOAD_METHOD                            262
     150  #define LOAD_SUPER_METHOD                      263
     151  #define LOAD_ZERO_SUPER_METHOD                 264
     152  #define LOAD_ZERO_SUPER_ATTR                   265
     153  #define STORE_FAST_MAYBE_NULL                  266
     154  #define MAX_PSEUDO_OPCODE                      266
     155  #define BINARY_OP_ADD_FLOAT                      6
     156  #define BINARY_OP_ADD_INT                        7
     157  #define BINARY_OP_ADD_UNICODE                    8
     158  #define BINARY_OP_INPLACE_ADD_UNICODE           10
     159  #define BINARY_OP_MULTIPLY_FLOAT                13
     160  #define BINARY_OP_MULTIPLY_INT                  14
     161  #define BINARY_OP_SUBTRACT_FLOAT                16
     162  #define BINARY_OP_SUBTRACT_INT                  18
     163  #define BINARY_SUBSCR_DICT                      19
     164  #define BINARY_SUBSCR_GETITEM                   20
     165  #define BINARY_SUBSCR_LIST_INT                  21
     166  #define BINARY_SUBSCR_TUPLE_INT                 22
     167  #define CALL_PY_EXACT_ARGS                      23
     168  #define CALL_PY_WITH_DEFAULTS                   24
     169  #define CALL_BOUND_METHOD_EXACT_ARGS            28
     170  #define CALL_BUILTIN_CLASS                      29
     171  #define CALL_BUILTIN_FAST_WITH_KEYWORDS         34
     172  #define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS  38
     173  #define CALL_NO_KW_BUILTIN_FAST                 39
     174  #define CALL_NO_KW_BUILTIN_O                    40
     175  #define CALL_NO_KW_ISINSTANCE                   41
     176  #define CALL_NO_KW_LEN                          42
     177  #define CALL_NO_KW_LIST_APPEND                  43
     178  #define CALL_NO_KW_METHOD_DESCRIPTOR_FAST       44
     179  #define CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS     45
     180  #define CALL_NO_KW_METHOD_DESCRIPTOR_O          46
     181  #define CALL_NO_KW_STR_1                        47
     182  #define CALL_NO_KW_TUPLE_1                      48
     183  #define CALL_NO_KW_TYPE_1                       56
     184  #define COMPARE_OP_FLOAT                        57
     185  #define COMPARE_OP_INT                          58
     186  #define COMPARE_OP_STR                          59
     187  #define FOR_ITER_LIST                           62
     188  #define FOR_ITER_TUPLE                          63
     189  #define FOR_ITER_RANGE                          64
     190  #define FOR_ITER_GEN                            65
     191  #define LOAD_SUPER_ATTR_ATTR                    66
     192  #define LOAD_SUPER_ATTR_METHOD                  67
     193  #define LOAD_ATTR_CLASS                         70
     194  #define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN       72
     195  #define LOAD_ATTR_INSTANCE_VALUE                73
     196  #define LOAD_ATTR_MODULE                        76
     197  #define LOAD_ATTR_PROPERTY                      77
     198  #define LOAD_ATTR_SLOT                          78
     199  #define LOAD_ATTR_WITH_HINT                     79
     200  #define LOAD_ATTR_METHOD_LAZY_DICT              80
     201  #define LOAD_ATTR_METHOD_NO_DICT                81
     202  #define LOAD_ATTR_METHOD_WITH_VALUES            82
     203  #define LOAD_CONST__LOAD_FAST                   84
     204  #define LOAD_FAST__LOAD_CONST                   86
     205  #define LOAD_FAST__LOAD_FAST                    88
     206  #define LOAD_GLOBAL_BUILTIN                    111
     207  #define LOAD_GLOBAL_MODULE                     112
     208  #define STORE_ATTR_INSTANCE_VALUE              113
     209  #define STORE_ATTR_SLOT                        148
     210  #define STORE_ATTR_WITH_HINT                   153
     211  #define STORE_FAST__LOAD_FAST                  154
     212  #define STORE_FAST__STORE_FAST                 158
     213  #define STORE_SUBSCR_DICT                      159
     214  #define STORE_SUBSCR_LIST_INT                  160
     215  #define UNPACK_SEQUENCE_LIST                   161
     216  #define UNPACK_SEQUENCE_TUPLE                  166
     217  #define UNPACK_SEQUENCE_TWO_TUPLE              167
     218  #define SEND_GEN                               168
     219  
     220  #define HAS_ARG(op) ((((op) >= HAVE_ARGUMENT) && (!IS_PSEUDO_OPCODE(op)))\
     221      || ((op) == JUMP) \
     222      || ((op) == JUMP_NO_INTERRUPT) \
     223      || ((op) == LOAD_METHOD) \
     224      || ((op) == LOAD_SUPER_METHOD) \
     225      || ((op) == LOAD_ZERO_SUPER_METHOD) \
     226      || ((op) == LOAD_ZERO_SUPER_ATTR) \
     227      || ((op) == STORE_FAST_MAYBE_NULL) \
     228      )
     229  
     230  #define HAS_CONST(op) (false\
     231      || ((op) == LOAD_CONST) \
     232      || ((op) == RETURN_CONST) \
     233      || ((op) == KW_NAMES) \
     234      )
     235  
     236  #define NB_ADD                                   0
     237  #define NB_AND                                   1
     238  #define NB_FLOOR_DIVIDE                          2
     239  #define NB_LSHIFT                                3
     240  #define NB_MATRIX_MULTIPLY                       4
     241  #define NB_MULTIPLY                              5
     242  #define NB_REMAINDER                             6
     243  #define NB_OR                                    7
     244  #define NB_POWER                                 8
     245  #define NB_RSHIFT                                9
     246  #define NB_SUBTRACT                             10
     247  #define NB_TRUE_DIVIDE                          11
     248  #define NB_XOR                                  12
     249  #define NB_INPLACE_ADD                          13
     250  #define NB_INPLACE_AND                          14
     251  #define NB_INPLACE_FLOOR_DIVIDE                 15
     252  #define NB_INPLACE_LSHIFT                       16
     253  #define NB_INPLACE_MATRIX_MULTIPLY              17
     254  #define NB_INPLACE_MULTIPLY                     18
     255  #define NB_INPLACE_REMAINDER                    19
     256  #define NB_INPLACE_OR                           20
     257  #define NB_INPLACE_POWER                        21
     258  #define NB_INPLACE_RSHIFT                       22
     259  #define NB_INPLACE_SUBTRACT                     23
     260  #define NB_INPLACE_TRUE_DIVIDE                  24
     261  #define NB_INPLACE_XOR                          25
     262  
     263  /* Defined in Lib/opcode.py */
     264  #define ENABLE_SPECIALIZATION 1
     265  
     266  #define IS_PSEUDO_OPCODE(op) (((op) >= MIN_PSEUDO_OPCODE) && ((op) <= MAX_PSEUDO_OPCODE))
     267  
     268  #ifdef __cplusplus
     269  }
     270  #endif
     271  #endif /* !Py_OPCODE_H */