Add version and parameter info to bytecode_ops.inl

This commit is contained in:
Michael Hansen
2023-12-05 13:24:00 -08:00
parent 795ad1861d
commit 0c0e3597bd

View File

@@ -1,264 +1,274 @@
/* No parameter word */
OPCODE(STOP_CODE)
OPCODE(POP_TOP)
OPCODE(ROT_TWO)
OPCODE(ROT_THREE)
OPCODE(DUP_TOP)
OPCODE(DUP_TOP_TWO)
OPCODE(UNARY_POSITIVE)
OPCODE(UNARY_NEGATIVE)
OPCODE(UNARY_NOT)
OPCODE(UNARY_CONVERT)
OPCODE(UNARY_CALL)
OPCODE(UNARY_INVERT)
OPCODE(BINARY_POWER)
OPCODE(BINARY_MULTIPLY)
OPCODE(BINARY_DIVIDE)
OPCODE(BINARY_MODULO)
OPCODE(BINARY_ADD)
OPCODE(BINARY_SUBTRACT)
OPCODE(BINARY_SUBSCR)
OPCODE(BINARY_CALL)
OPCODE(SLICE_0)
OPCODE(SLICE_1)
OPCODE(SLICE_2)
OPCODE(SLICE_3)
OPCODE(STORE_SLICE_0)
OPCODE(STORE_SLICE_1)
OPCODE(STORE_SLICE_2)
OPCODE(STORE_SLICE_3)
OPCODE(DELETE_SLICE_0)
OPCODE(DELETE_SLICE_1)
OPCODE(DELETE_SLICE_2)
OPCODE(DELETE_SLICE_3)
OPCODE(STORE_SUBSCR)
OPCODE(DELETE_SUBSCR)
OPCODE(BINARY_LSHIFT)
OPCODE(BINARY_RSHIFT)
OPCODE(BINARY_AND)
OPCODE(BINARY_XOR)
OPCODE(BINARY_OR)
OPCODE(PRINT_EXPR)
OPCODE(PRINT_ITEM)
OPCODE(PRINT_NEWLINE)
OPCODE(BREAK_LOOP)
OPCODE(RAISE_EXCEPTION)
OPCODE(LOAD_LOCALS)
OPCODE(RETURN_VALUE)
OPCODE(LOAD_GLOBALS)
OPCODE(EXEC_STMT)
OPCODE(BUILD_FUNCTION)
OPCODE(POP_BLOCK)
OPCODE(END_FINALLY)
OPCODE(BUILD_CLASS)
OPCODE(ROT_FOUR)
OPCODE(NOP)
OPCODE(LIST_APPEND)
OPCODE(BINARY_FLOOR_DIVIDE)
OPCODE(BINARY_TRUE_DIVIDE)
OPCODE(INPLACE_FLOOR_DIVIDE)
OPCODE(INPLACE_TRUE_DIVIDE)
OPCODE(GET_LEN)
OPCODE(MATCH_MAPPING)
OPCODE(MATCH_SEQUENCE)
OPCODE(MATCH_KEYS)
OPCODE(COPY_DICT_WITHOUT_KEYS)
OPCODE(STORE_MAP)
OPCODE(INPLACE_ADD)
OPCODE(INPLACE_SUBTRACT)
OPCODE(INPLACE_MULTIPLY)
OPCODE(INPLACE_DIVIDE)
OPCODE(INPLACE_MODULO)
OPCODE(INPLACE_POWER)
OPCODE(GET_ITER)
OPCODE(PRINT_ITEM_TO)
OPCODE(PRINT_NEWLINE_TO)
OPCODE(INPLACE_LSHIFT)
OPCODE(INPLACE_RSHIFT)
OPCODE(INPLACE_AND)
OPCODE(INPLACE_XOR)
OPCODE(INPLACE_OR)
OPCODE(WITH_CLEANUP)
OPCODE(WITH_CLEANUP_START)
OPCODE(WITH_CLEANUP_FINISH)
OPCODE(IMPORT_STAR)
OPCODE(SETUP_ANNOTATIONS)
OPCODE(YIELD_VALUE)
OPCODE(LOAD_BUILD_CLASS)
OPCODE(STORE_LOCALS)
OPCODE(POP_EXCEPT)
OPCODE(SET_ADD)
OPCODE(YIELD_FROM)
OPCODE(BINARY_MATRIX_MULTIPLY)
OPCODE(INPLACE_MATRIX_MULTIPLY)
OPCODE(GET_AITER)
OPCODE(GET_ANEXT)
OPCODE(BEFORE_ASYNC_WITH)
OPCODE(GET_YIELD_FROM_ITER)
OPCODE(GET_AWAITABLE)
OPCODE(BEGIN_FINALLY)
OPCODE(END_ASYNC_FOR)
OPCODE(RERAISE)
OPCODE(WITH_EXCEPT_START)
OPCODE(LOAD_ASSERTION_ERROR)
OPCODE(LIST_TO_TUPLE)
OPCODE(CACHE)
OPCODE(PUSH_NULL)
OPCODE(PUSH_EXC_INFO)
OPCODE(CHECK_EXC_MATCH)
OPCODE(CHECK_EG_MATCH)
OPCODE(BEFORE_WITH)
OPCODE(RETURN_GENERATOR)
OPCODE(ASYNC_GEN_WRAP)
OPCODE(PREP_RERAISE_STAR)
OPCODE(INTERPRETER_EXIT)
OPCODE(END_FOR)
OPCODE(END_SEND)
OPCODE(RESERVED)
OPCODE(BINARY_SLICE)
OPCODE(STORE_SLICE)
OPCODE(CLEANUP_THROW)
OPCODE(STOP_CODE) // Python 1.0 - 3.2
OPCODE(POP_TOP) // Python 1.0 ->
OPCODE(ROT_TWO) // Python 1.0 - 3.10
OPCODE(ROT_THREE) // Python 1.0 - 3.10
OPCODE(DUP_TOP) // Python 1.0 - 3.10
OPCODE(DUP_TOP_TWO) // Python 3.2 - 3.10
OPCODE(UNARY_POSITIVE) // Python 1.0 - 3.11
OPCODE(UNARY_NEGATIVE) // Python 1.0 ->
OPCODE(UNARY_NOT) // Python 1.0 ->
OPCODE(UNARY_CONVERT) // Python 1.0 - 2.7
OPCODE(UNARY_CALL) // Python 1.0 - 1.2
OPCODE(UNARY_INVERT) // Python 1.0 ->
OPCODE(BINARY_POWER) // Python 1.4 - 3.10
OPCODE(BINARY_MULTIPLY) // Python 1.0 - 3.10
OPCODE(BINARY_DIVIDE) // Python 1.0 - 2.7
OPCODE(BINARY_MODULO) // Python 1.0 - 3.10
OPCODE(BINARY_ADD) // Python 1.0 - 3.10
OPCODE(BINARY_SUBTRACT) // Python 1.0 - 3.10
OPCODE(BINARY_SUBSCR) // Python 1.0 ->
OPCODE(BINARY_CALL) // Python 1.0 - 1.2
OPCODE(SLICE_0) // Python 1.0 - 2.7
OPCODE(SLICE_1) // Python 1.0 - 2.7
OPCODE(SLICE_2) // Python 1.0 - 2.7
OPCODE(SLICE_3) // Python 1.0 - 2.7
OPCODE(STORE_SLICE_0) // Python 1.0 - 2.7
OPCODE(STORE_SLICE_1) // Python 1.0 - 2.7
OPCODE(STORE_SLICE_2) // Python 1.0 - 2.7
OPCODE(STORE_SLICE_3) // Python 1.0 - 2.7
OPCODE(DELETE_SLICE_0) // Python 1.0 - 2.7
OPCODE(DELETE_SLICE_1) // Python 1.0 - 2.7
OPCODE(DELETE_SLICE_2) // Python 1.0 - 2.7
OPCODE(DELETE_SLICE_3) // Python 1.0 - 2.7
OPCODE(STORE_SUBSCR) // Python 1.0 ->
OPCODE(DELETE_SUBSCR) // Python 1.0 ->
OPCODE(BINARY_LSHIFT) // Python 1.0 - 3.10
OPCODE(BINARY_RSHIFT) // Python 1.0 - 3.10
OPCODE(BINARY_AND) // Python 1.0 - 3.10
OPCODE(BINARY_XOR) // Python 1.0 - 3.10
OPCODE(BINARY_OR) // Python 1.0 - 3.10
OPCODE(PRINT_EXPR) // Python 1.0 - 3.11
OPCODE(PRINT_ITEM) // Python 1.0 - 2.7
OPCODE(PRINT_NEWLINE) // Python 1.0 - 2.7
OPCODE(BREAK_LOOP) // Python 1.0 - 3.7
OPCODE(RAISE_EXCEPTION) // Python 1.0 - 1.2
OPCODE(LOAD_LOCALS) // Python 1.0 - 2.7, 3.12 ->
OPCODE(RETURN_VALUE) // Python 1.0 ->
OPCODE(LOAD_GLOBALS) // Python 1.0 - 1.2
OPCODE(EXEC_STMT) // Python 1.0 - 2.7
OPCODE(BUILD_FUNCTION) // Python 1.0 - 1.2
OPCODE(POP_BLOCK) // Python 1.0 - 3.10
OPCODE(END_FINALLY) // Python 1.0 - 3.8
OPCODE(BUILD_CLASS) // Python 1.0 - 2.7
OPCODE(ROT_FOUR) // Python 2.0 - 3.1, 3.8 - 3.10
OPCODE(NOP) // Python 2.4 ->
OPCODE(LIST_APPEND) // Python 2.4 - 2.6, 3.0
OPCODE(BINARY_FLOOR_DIVIDE) // Python 2.2 - 3.10
OPCODE(BINARY_TRUE_DIVIDE) // Python 2.2 - 3.10
OPCODE(INPLACE_FLOOR_DIVIDE) // Python 2.2 - 3.10
OPCODE(INPLACE_TRUE_DIVIDE) // Python 2.2 - 3.10
OPCODE(GET_LEN) // Python 3.10 ->
OPCODE(MATCH_MAPPING) // Python 3.10 ->
OPCODE(MATCH_SEQUENCE) // Python 3.10 ->
OPCODE(MATCH_KEYS) // Python 3.10 ->
OPCODE(COPY_DICT_WITHOUT_KEYS) // Python 3.10
OPCODE(STORE_MAP) // Python 2.6 - 3.4
OPCODE(INPLACE_ADD) // Python 2.0 - 3.10
OPCODE(INPLACE_SUBTRACT) // Python 2.0 - 3.10
OPCODE(INPLACE_MULTIPLY) // Python 2.0 - 3.10
OPCODE(INPLACE_DIVIDE) // Python 2.0 - 2.7
OPCODE(INPLACE_MODULO) // Python 2.0 - 3.10
OPCODE(INPLACE_POWER) // Python 2.0 - 3.10
OPCODE(GET_ITER) // Python 2.2 ->
OPCODE(PRINT_ITEM_TO) // Python 2.0 - 2.7
OPCODE(PRINT_NEWLINE_TO) // Python 2.0 - 2.7
OPCODE(INPLACE_LSHIFT) // Python 2.0 - 3.10
OPCODE(INPLACE_RSHIFT) // Python 2.0 - 3.10
OPCODE(INPLACE_AND) // Python 2.0 - 3.10
OPCODE(INPLACE_XOR) // Python 2.0 - 3.10
OPCODE(INPLACE_OR) // Python 2.0 - 3.10
OPCODE(WITH_CLEANUP) // Python 2.5 - 3.4
OPCODE(WITH_CLEANUP_START) // Python 3.5 - 3.8
OPCODE(WITH_CLEANUP_FINISH) // Python 3.5 - 3.8
OPCODE(IMPORT_STAR) // Python 2.0 - 3.11
OPCODE(SETUP_ANNOTATIONS) // Python 3.6 ->
OPCODE(YIELD_VALUE) // Python 2.2 - 3.11
OPCODE(LOAD_BUILD_CLASS) // Python 3.0 ->
OPCODE(STORE_LOCALS) // Python 3.0 - 3.3
OPCODE(POP_EXCEPT) // Python 3.0 ->
OPCODE(SET_ADD) // Python 3.0
OPCODE(YIELD_FROM) // Python 3.3 - 3.10
OPCODE(BINARY_MATRIX_MULTIPLY) // Python 3.5 - 3.10
OPCODE(INPLACE_MATRIX_MULTIPLY) // Python 3.5 - 3.10
OPCODE(GET_AITER) // Python 3.5 ->
OPCODE(GET_ANEXT) // Python 3.5 ->
OPCODE(BEFORE_ASYNC_WITH) // Python 3.5 ->
OPCODE(GET_YIELD_FROM_ITER) // Python 3.5 ->
OPCODE(GET_AWAITABLE) // Python 3.5 - 3.10
OPCODE(BEGIN_FINALLY) // Python 3.8
OPCODE(END_ASYNC_FOR) // Python 3.8 ->
OPCODE(RERAISE) // Python 3.9
OPCODE(WITH_EXCEPT_START) // Python 3.9 ->
OPCODE(LOAD_ASSERTION_ERROR) // Python 3.9 ->
OPCODE(LIST_TO_TUPLE) // Python 3.9 - 3.11
OPCODE(CACHE) // Python 3.11 ->
OPCODE(PUSH_NULL) // Python 3.11 ->
OPCODE(PUSH_EXC_INFO) // Python 3.11 ->
OPCODE(CHECK_EXC_MATCH) // Python 3.11 ->
OPCODE(CHECK_EG_MATCH) // Python 3.11 ->
OPCODE(BEFORE_WITH) // Python 3.11 ->
OPCODE(RETURN_GENERATOR) // Python 3.11 ->
OPCODE(ASYNC_GEN_WRAP) // Python 3.11
OPCODE(PREP_RERAISE_STAR) // Python 3.11
OPCODE(INTERPRETER_EXIT) // Python 3.12 ->
OPCODE(END_FOR) // Python 3.12 ->
OPCODE(END_SEND) // Python 3.12 ->
OPCODE(RESERVED) // Python 3.12 ->
OPCODE(BINARY_SLICE) // Python 3.12 ->
OPCODE(STORE_SLICE) // Python 3.12 ->
OPCODE(CLEANUP_THROW) // Python 3.12 ->
/* Has parameter word */
OPCODE_A_FIRST(STORE_NAME)
OPCODE_A(DELETE_NAME)
OPCODE_A(UNPACK_TUPLE)
OPCODE_A(UNPACK_LIST)
OPCODE_A(UNPACK_ARG)
OPCODE_A(STORE_ATTR)
OPCODE_A(DELETE_ATTR)
OPCODE_A(STORE_GLOBAL)
OPCODE_A(DELETE_GLOBAL)
OPCODE_A(ROT_N)
OPCODE_A(UNPACK_VARARG)
OPCODE_A(LOAD_CONST)
OPCODE_A(LOAD_NAME)
OPCODE_A(BUILD_TUPLE)
OPCODE_A(BUILD_LIST)
OPCODE_A(BUILD_MAP)
OPCODE_A(LOAD_ATTR)
OPCODE_A(COMPARE_OP)
OPCODE_A(IMPORT_NAME)
OPCODE_A(IMPORT_FROM)
OPCODE_A(ACCESS_MODE)
OPCODE_A(JUMP_FORWARD)
OPCODE_A(JUMP_IF_FALSE)
OPCODE_A(JUMP_IF_TRUE)
OPCODE_A(JUMP_ABSOLUTE)
OPCODE_A(FOR_LOOP)
OPCODE_A(LOAD_LOCAL)
OPCODE_A(LOAD_GLOBAL)
OPCODE_A(SET_FUNC_ARGS)
OPCODE_A(SETUP_LOOP)
OPCODE_A(SETUP_EXCEPT)
OPCODE_A(SETUP_FINALLY)
OPCODE_A(RESERVE_FAST)
OPCODE_A(LOAD_FAST)
OPCODE_A(STORE_FAST)
OPCODE_A(DELETE_FAST)
OPCODE_A(GEN_START)
OPCODE_A(SET_LINENO)
OPCODE_A(STORE_ANNOTATION)
OPCODE_A(RAISE_VARARGS)
OPCODE_A(CALL_FUNCTION)
OPCODE_A(MAKE_FUNCTION)
OPCODE_A(BUILD_SLICE)
OPCODE_A(CALL_FUNCTION_VAR)
OPCODE_A(CALL_FUNCTION_KW)
OPCODE_A(CALL_FUNCTION_VAR_KW)
OPCODE_A(CALL_FUNCTION_EX)
OPCODE_A(UNPACK_SEQUENCE)
OPCODE_A(FOR_ITER)
OPCODE_A(DUP_TOPX)
OPCODE_A(BUILD_SET)
OPCODE_A(JUMP_IF_FALSE_OR_POP)
OPCODE_A(JUMP_IF_TRUE_OR_POP)
OPCODE_A(POP_JUMP_IF_FALSE)
OPCODE_A(POP_JUMP_IF_TRUE)
OPCODE_A(CONTINUE_LOOP)
OPCODE_A(MAKE_CLOSURE)
OPCODE_A(LOAD_CLOSURE)
OPCODE_A(LOAD_DEREF)
OPCODE_A(STORE_DEREF)
OPCODE_A(DELETE_DEREF)
OPCODE_A(EXTENDED_ARG)
OPCODE_A(SETUP_WITH)
OPCODE_A(SET_ADD)
OPCODE_A(MAP_ADD)
OPCODE_A(UNPACK_EX)
OPCODE_A(LIST_APPEND)
OPCODE_A(LOAD_CLASSDEREF)
OPCODE_A(MATCH_CLASS)
OPCODE_A(BUILD_LIST_UNPACK)
OPCODE_A(BUILD_MAP_UNPACK)
OPCODE_A(BUILD_MAP_UNPACK_WITH_CALL)
OPCODE_A(BUILD_TUPLE_UNPACK)
OPCODE_A(BUILD_SET_UNPACK)
OPCODE_A(SETUP_ASYNC_WITH)
OPCODE_A(FORMAT_VALUE)
OPCODE_A(BUILD_CONST_KEY_MAP)
OPCODE_A(BUILD_STRING)
OPCODE_A(BUILD_TUPLE_UNPACK_WITH_CALL)
OPCODE_A(LOAD_METHOD)
OPCODE_A(CALL_METHOD)
OPCODE_A(CALL_FINALLY)
OPCODE_A(POP_FINALLY)
OPCODE_A(IS_OP)
OPCODE_A(CONTAINS_OP)
OPCODE_A(RERAISE)
OPCODE_A(JUMP_IF_NOT_EXC_MATCH)
OPCODE_A(LIST_EXTEND)
OPCODE_A(SET_UPDATE)
OPCODE_A(DICT_MERGE)
OPCODE_A(DICT_UPDATE)
OPCODE_A(SWAP)
OPCODE_A(POP_JUMP_FORWARD_IF_FALSE)
OPCODE_A(POP_JUMP_FORWARD_IF_TRUE)
OPCODE_A(COPY)
OPCODE_A(BINARY_OP)
OPCODE_A(SEND)
OPCODE_A(POP_JUMP_FORWARD_IF_NOT_NONE)
OPCODE_A(POP_JUMP_FORWARD_IF_NONE)
OPCODE_A(GET_AWAITABLE)
OPCODE_A(JUMP_BACKWARD_NO_INTERRUPT)
OPCODE_A(MAKE_CELL)
OPCODE_A(JUMP_BACKWARD)
OPCODE_A(COPY_FREE_VARS)
OPCODE_A(RESUME)
OPCODE_A(PRECALL)
OPCODE_A(CALL)
OPCODE_A(KW_NAMES)
OPCODE_A(POP_JUMP_BACKWARD_IF_NOT_NONE)
OPCODE_A(POP_JUMP_BACKWARD_IF_NONE)
OPCODE_A(POP_JUMP_BACKWARD_IF_FALSE)
OPCODE_A(POP_JUMP_BACKWARD_IF_TRUE)
OPCODE_A(RETURN_CONST)
OPCODE_A(LOAD_FAST_CHECK)
OPCODE_A(POP_JUMP_IF_NOT_NONE)
OPCODE_A(POP_JUMP_IF_NONE)
OPCODE_A(LOAD_SUPER_ATTR)
OPCODE_A(LOAD_FAST_AND_CLEAR)
OPCODE_A(YIELD_VALUE)
OPCODE_A(CALL_INTRINSIC_1)
OPCODE_A(CALL_INTRINSIC_2)
OPCODE_A(LOAD_FROM_DICT_OR_GLOBALS)
OPCODE_A(LOAD_FROM_DICT_OR_DEREF)
OPCODE_A_FIRST(STORE_NAME) // Python 1.0 -> names[A]
OPCODE_A(DELETE_NAME) // Python 1.0 -> names[A]
OPCODE_A(UNPACK_TUPLE) // Python 1.0 - 1.6 A=count
OPCODE_A(UNPACK_LIST) // Python 1.0 - 1.6 A=count
OPCODE_A(UNPACK_ARG) // Python 1.0 - 1.4 A=count
OPCODE_A(STORE_ATTR) // Python 1.0 -> names[A]
OPCODE_A(DELETE_ATTR) // Python 1.0 -> names[A]
OPCODE_A(STORE_GLOBAL) // Python 1.0 -> names[A]
OPCODE_A(DELETE_GLOBAL) // Python 1.0 -> names[A]
OPCODE_A(ROT_N) // Python 3.10 A=count
OPCODE_A(UNPACK_VARARG) // Python 1.0 - 1.4 A=count
OPCODE_A(LOAD_CONST) // Python 1.0 -> consts[A]
OPCODE_A(LOAD_NAME) // Python 1.0 -> names[A]
OPCODE_A(BUILD_TUPLE) // Python 1.0 -> A=size
OPCODE_A(BUILD_LIST) // Python 1.0 -> A=size
OPCODE_A(BUILD_MAP) // Python 1.0 -> A=size
OPCODE_A(LOAD_ATTR) // Python 1.0 -> names[A]
OPCODE_A(COMPARE_OP) // Python 1.0 -> cmp_ops[A]
OPCODE_A(IMPORT_NAME) // Python 1.0 -> names[A]
OPCODE_A(IMPORT_FROM) // Python 1.0 -> names[A]
OPCODE_A(ACCESS_MODE) // Python 1.0 - 1.4 names[A]
OPCODE_A(JUMP_FORWARD) // Python 1.0 -> rel jmp +A
OPCODE_A(JUMP_IF_FALSE) // Python 1.0 - 2.6, 3.0 rel jmp +A
OPCODE_A(JUMP_IF_TRUE) // Python 1.0 - 2.6, 3.0 rel jmp +A
OPCODE_A(JUMP_ABSOLUTE) // Python 1.0 - 3.10 abs jmp A
OPCODE_A(FOR_LOOP) // Python 1.0 - 2.2 rel jmp +A
OPCODE_A(LOAD_LOCAL) // Python 1.0 - 1.4 names[A]
OPCODE_A(LOAD_GLOBAL) // Python 1.0 -> names[A]
OPCODE_A(SET_FUNC_ARGS) // Python 1.1 - 1.4 A=count
OPCODE_A(SETUP_LOOP) // Python 1.0 - 3.7 rel jmp +A
OPCODE_A(SETUP_EXCEPT) // Python 1.0 - 3.7 rel jmp +A
OPCODE_A(SETUP_FINALLY) // Python 1.0 - 3.10 rel jmp +A
OPCODE_A(RESERVE_FAST) // Python 1.0 - 1.2 A=count
OPCODE_A(LOAD_FAST) // Python 1.0 -> locals[A]
OPCODE_A(STORE_FAST) // Python 1.0 -> locals[A]
OPCODE_A(DELETE_FAST) // Python 1.0 -> locals[A]
OPCODE_A(GEN_START) // Python 3.10 ???
OPCODE_A(SET_LINENO) // Python 1.0 - 2.2 A=line
OPCODE_A(STORE_ANNOTATION) // Python 3.6 names[A]
OPCODE_A(RAISE_VARARGS) // Python 1.3 -> A=count
OPCODE_A(CALL_FUNCTION) // Python 1.3 - 3.5 A=(#args)+(#kwargs<<8)
// Python 3.6 - 3.10 A=#args
OPCODE_A(MAKE_FUNCTION) // Python 1.3 - 2.7 A=#defaults
// Python 3.0 - 3.5 A=(#defaults)+(#kwdefaults<<8)+(#annotations<<16)
// Python 3.6 -> A=flags
OPCODE_A(BUILD_SLICE) // Python 1.4 -> A=count
OPCODE_A(CALL_FUNCTION_VAR) // Python 1.6 - 3.5 A=(#args)+(#kwargs<<8)
OPCODE_A(CALL_FUNCTION_KW) // Python 1.6 - 3.5 A=(#args)+(#kwargs<<8)
// Python 3.6 - 3.10 A=#args
OPCODE_A(CALL_FUNCTION_VAR_KW) // Python 1.6 - 3.5 A=(#args)+(#kwargs<<8)
OPCODE_A(CALL_FUNCTION_EX) // Python 3.6 -> A=flags
OPCODE_A(UNPACK_SEQUENCE) // Python 2.0 -> A=count
OPCODE_A(FOR_ITER) // Python 2.0 -> rel jmp +A
OPCODE_A(DUP_TOPX) // Python 2.0 - 3.1 A=count
OPCODE_A(BUILD_SET) // Python 2.7 -> A=size
OPCODE_A(JUMP_IF_FALSE_OR_POP) // Python 2.7, 3.1 - 3.11 abs jmp A
OPCODE_A(JUMP_IF_TRUE_OR_POP) // Python 2.7, 3.1 - 3.11 abs jmp A
OPCODE_A(POP_JUMP_IF_FALSE) // Python 2.7, 3.1 - 3.10 abs jmp A
// Python 3.12 -> rel jmp +A
OPCODE_A(POP_JUMP_IF_TRUE) // Python 2.7, 3.1 - 3.10 abs jmp A
// Python 3.12 -> rel jmp +A
OPCODE_A(CONTINUE_LOOP) // Python 2.1 - 3.7 abs jmp A
OPCODE_A(MAKE_CLOSURE) // Python 2.1 - 2.7 A=#defaults
// Python 3.0 - 3.5 A=(#defaults)+(#kwdefaults<<8)+(#annotations<<16)
OPCODE_A(LOAD_CLOSURE) // Python 2.1 -> freevars[A]
OPCODE_A(LOAD_DEREF) // Python 2.1 -> freevars[A]
OPCODE_A(STORE_DEREF) // Python 2.1 -> freevars[A]
OPCODE_A(DELETE_DEREF) // Python 3.2 -> freevars[A]
OPCODE_A(EXTENDED_ARG) // Python 2.0 -> A=extended_arg
OPCODE_A(SETUP_WITH) // Python 2.7, 3.2 - 3.10 rel jmp +A
OPCODE_A(SET_ADD) // Python 2.7, 3.1 -> stack[A]
OPCODE_A(MAP_ADD) // Python 2.7, 3.1 -> stack[A]
OPCODE_A(UNPACK_EX) // Python 3.0 -> A=(before)+(after<<8)
OPCODE_A(LIST_APPEND) // Python 2.7, 3.1 -> stack[A]
OPCODE_A(LOAD_CLASSDEREF) // Python 3.4 - 3.10 (cellvars+freevars)[A]
// Python 3.11 localsplusnames[A]
OPCODE_A(MATCH_CLASS) // Python 3.10 -> A=#args
OPCODE_A(BUILD_LIST_UNPACK) // Python 3.5 - 3.8 A=count
OPCODE_A(BUILD_MAP_UNPACK) // Python 3.5 - 3.8 A=count
OPCODE_A(BUILD_MAP_UNPACK_WITH_CALL) // Python 3.5 A=(count)+(fnloc<<8)
// Python 3.6 - 3.8 A=count
OPCODE_A(BUILD_TUPLE_UNPACK) // Python 3.5 - 3.8 A=count
OPCODE_A(BUILD_SET_UNPACK) // Python 3.5 - 3.8 A=count
OPCODE_A(SETUP_ASYNC_WITH) // Python 3.5 - 3.10 rel jmp +A
OPCODE_A(FORMAT_VALUE) // Python 3.6 -> A=conversion_type
OPCODE_A(BUILD_CONST_KEY_MAP) // Python 3.6 -> A=count
OPCODE_A(BUILD_STRING) // Python 3.6 -> A=count
OPCODE_A(BUILD_TUPLE_UNPACK_WITH_CALL) // Python 3.6 - 3.8 A=count
OPCODE_A(LOAD_METHOD) // Python 3.7 - 3.11 names[A]
OPCODE_A(CALL_METHOD) // Python 3.7 - 3.10 A=#args
OPCODE_A(CALL_FINALLY) // Python 3.8 rel jmp +A
OPCODE_A(POP_FINALLY) // Python 3.8 A=flags
OPCODE_A(IS_OP) // Python 3.9 -> A=inverted
OPCODE_A(CONTAINS_OP) // Python 3.9 -> A=inverted
OPCODE_A(RERAISE) // Python 3.10 -> A=flag
OPCODE_A(JUMP_IF_NOT_EXC_MATCH) // Python 3.9 - 3.10 abs jmp A
OPCODE_A(LIST_EXTEND) // Python 3.9 -> stack[A]
OPCODE_A(SET_UPDATE) // Python 3.9 -> stack[A]
OPCODE_A(DICT_MERGE) // Python 3.9 -> stack[A]
OPCODE_A(DICT_UPDATE) // Python 3.9 -> stack[A]
OPCODE_A(SWAP) // Python 3.11 -> stack[A]
OPCODE_A(POP_JUMP_FORWARD_IF_FALSE) // Python 3.11 rel jmp +A
OPCODE_A(POP_JUMP_FORWARD_IF_TRUE) // Python 3.11 rel jmp +A
OPCODE_A(COPY) // Python 3.11 -> stack[A]
OPCODE_A(BINARY_OP) // Python 3.11 -> bin_ops[A]
OPCODE_A(SEND) // Python 3.11 -> rel jmp +A
OPCODE_A(POP_JUMP_FORWARD_IF_NOT_NONE) // Python 3.11 rel jmp +A
OPCODE_A(POP_JUMP_FORWARD_IF_NONE) // Python 3.11 rel jmp +A
OPCODE_A(GET_AWAITABLE) // Python 3.11 -> A=awaitable_type
OPCODE_A(JUMP_BACKWARD_NO_INTERRUPT) // Python 3.11 -> rel jmp -A
OPCODE_A(MAKE_CELL) // Python 3.11 -> locals[A]
OPCODE_A(JUMP_BACKWARD) // Python 3.11 -> rel jmp -A
OPCODE_A(COPY_FREE_VARS) // Python 3.11 -> A=count
OPCODE_A(RESUME) // Python 3.11 -> ???
OPCODE_A(PRECALL) // Python 3.11 A=#args
OPCODE_A(CALL) // Python 3.11 -> A=#args
OPCODE_A(KW_NAMES) // Python 3.11 -> consts[A]
OPCODE_A(POP_JUMP_BACKWARD_IF_NOT_NONE) // Python 3.11 jmp rel -A
OPCODE_A(POP_JUMP_BACKWARD_IF_NONE) // Python 3.11 jmp rel -A
OPCODE_A(POP_JUMP_BACKWARD_IF_FALSE) // Python 3.11 jmp rel -A
OPCODE_A(POP_JUMP_BACKWARD_IF_TRUE) // Python 3.11 jmp rel -A
OPCODE_A(RETURN_CONST) // Python 3.12 -> consts[A]
OPCODE_A(LOAD_FAST_CHECK) // Python 3.12 -> locals[A]
OPCODE_A(POP_JUMP_IF_NOT_NONE) // Python 3.12 -> rel jmp +A
OPCODE_A(POP_JUMP_IF_NONE) // Python 3.12 -> rel jmp +A
OPCODE_A(LOAD_SUPER_ATTR) // Python 3.12 -> A=(flags&0x3)+names[A<<2]
OPCODE_A(LOAD_FAST_AND_CLEAR) // Python 3.12 -> locals[A]
OPCODE_A(YIELD_VALUE) // Python 3.12 -> ???
OPCODE_A(CALL_INTRINSIC_1) // Python 3.12 -> intrinsics_1[A]
OPCODE_A(CALL_INTRINSIC_2) // Python 3.12 -> intrinsics_2[A]
OPCODE_A(LOAD_FROM_DICT_OR_GLOBALS) // Python 3.12 -> names[A]
OPCODE_A(LOAD_FROM_DICT_OR_DEREF) // Python 3.12 -> localsplusnames[A]
OPCODE_A(INSTRUMENTED_LOAD_SUPER_ATTR)
OPCODE_A(INSTRUMENTED_POP_JUMP_IF_NONE)
OPCODE_A(INSTRUMENTED_POP_JUMP_IF_NOT_NONE)
OPCODE_A(INSTRUMENTED_RESUME)
OPCODE_A(INSTRUMENTED_CALL)
OPCODE_A(INSTRUMENTED_RETURN_VALUE)
OPCODE_A(INSTRUMENTED_YIELD_VALUE)
OPCODE_A(INSTRUMENTED_CALL_FUNCTION_EX)
OPCODE_A(INSTRUMENTED_JUMP_FORWARD)
OPCODE_A(INSTRUMENTED_JUMP_BACKWARD)
OPCODE_A(INSTRUMENTED_RETURN_CONST)
OPCODE_A(INSTRUMENTED_FOR_ITER)
OPCODE_A(INSTRUMENTED_POP_JUMP_IF_FALSE)
OPCODE_A(INSTRUMENTED_POP_JUMP_IF_TRUE)
OPCODE_A(INSTRUMENTED_END_FOR)
OPCODE_A(INSTRUMENTED_END_SEND)
OPCODE_A(INSTRUMENTED_INSTRUCTION)
OPCODE_A(INSTRUMENTED_LINE)
/* Instrumented opcodes */
OPCODE_A(INSTRUMENTED_LOAD_SUPER_ATTR) // Python 3.12 -> (see LOAD_SUPER_ATTR)
OPCODE_A(INSTRUMENTED_POP_JUMP_IF_NONE) // Python 3.12 -> (see POP_JUMP_IF_NONE)
OPCODE_A(INSTRUMENTED_POP_JUMP_IF_NOT_NONE) // Python 3.12 -> (see POP_JUMP_IF_NOT_NONE)
OPCODE_A(INSTRUMENTED_RESUME) // Python 3.12 -> (see RESUME)
OPCODE_A(INSTRUMENTED_CALL) // Python 3.12 -> (see CALL)
OPCODE_A(INSTRUMENTED_RETURN_VALUE) // Python 3.12 -> (see RETURN_VALUE)
OPCODE_A(INSTRUMENTED_YIELD_VALUE) // Python 3.12 -> (see YIELD_VALUE)
OPCODE_A(INSTRUMENTED_CALL_FUNCTION_EX) // Python 3.12 -> (see CALL_FUNCTION_EX)
OPCODE_A(INSTRUMENTED_JUMP_FORWARD) // Python 3.12 -> (see JUMP_FORWARD)
OPCODE_A(INSTRUMENTED_JUMP_BACKWARD) // Python 3.12 -> (see JUMP_BACKWARD)
OPCODE_A(INSTRUMENTED_RETURN_CONST) // Python 3.12 -> (see RETURN_CONST)
OPCODE_A(INSTRUMENTED_FOR_ITER) // Python 3.12 -> (see FOR_ITER)
OPCODE_A(INSTRUMENTED_POP_JUMP_IF_FALSE) // Python 3.12 -> (see POP_JUMP_IF_FALSE)
OPCODE_A(INSTRUMENTED_POP_JUMP_IF_TRUE) // Python 3.12 -> (see POP_JUMP_IF_TRUE)
OPCODE_A(INSTRUMENTED_END_FOR) // Python 3.12 -> (see END_FOR)
OPCODE_A(INSTRUMENTED_END_SEND) // Python 3.12 -> (see END_SEND)
OPCODE_A(INSTRUMENTED_INSTRUCTION) // Python 3.12 -> ???
OPCODE_A(INSTRUMENTED_LINE) // Python 3.12 -> ???