Add basic bytecode and disassembly support for Python 3.12

This commit is contained in:
Michael Hansen 2023-11-09 11:11:37 -08:00
commit 9b384ad1fa
12 changed files with 456 additions and 189 deletions

View file

@ -12,6 +12,7 @@ Python MAGIC Python MAGIC Python MAGIC
3.9 0x0A0D0D61
3.10 0x0A0D0D6F
3.11 0x0A0D0DA7
3.12 0x0A0D0DCB
1.0 1.1 1.2 1.3 1.4 1.5 1.6
@ -542,190 +543,244 @@ DICT_UPDATE [ ] [ ] [ ] [ ] [ ] [ ] [ ]
.
3.11
CACHE [X]
POP_TOP [X]
PUSH_NULL [X]
<3> [ ]
<4> [ ]
<5> [ ]
<6> [ ]
<7> [ ]
<8> [ ]
NOP [X]
UNARY_POSITIVE [X]
UNARY_NEGATIVE [X]
UNARY_NOT [X]
<13> [ ]
<14> [ ]
UNARY_INVERT [X]
<16> [ ]
<17> [ ]
<18> [ ]
<19> [ ]
<20> [ ]
<21> [ ]
<22> [ ]
<23> [ ]
<24> [ ]
BINARY_SUBSCR [X]
<26> [ ]
<27> [ ]
<28> [ ]
<29> [ ]
GET_LEN [X]
MATCH_MAPPING [X]
MATCH_SEQUENCE [X]
MATCH_KEYS [X]
<34> [ ]
PUSH_EXC_INFO [X]
CHECK_EXC_MATCH [X]
CHECK_EG_MATCH [X]
<38> [ ]
<39> [ ]
<40> [ ]
<41> [ ]
<42> [ ]
<43> [ ]
<44> [ ]
<45> [ ]
<46> [ ]
<47> [ ]
<48> [ ]
WITH_EXCEPT_START [X]
GET_AITER [X]
GET_ANEXT [X]
BEFORE_ASYNC_WITH [X]
BEFORE_WITH [X]
END_ASYNC_FOR [X]
<55> [ ]
<56> [ ]
<57> [ ]
<58> [ ]
<59> [ ]
STORE_SUBSCR [X]
DELETE_SUBSCR [X]
<62> [ ]
<63> [ ]
<64> [ ]
<65> [ ]
<66> [ ]
<67> [ ]
GET_ITER [X]
GET_YIELD_FROM_ITER [X]
PRINT_EXPR [X]
LOAD_BUILD_CLASS [X]
<72> [ ]
<73> [ ]
LOAD_ASSERTION_ERROR [X]
RETURN_GENERATOR [X]
<76> [ ]
<77> [ ]
<78> [ ]
<79> [ ]
<80> [ ]
<81> [ ]
LIST_TO_TUPLE [X]
RETURN_VALUE [X]
IMPORT_STAR [X]
SETUP_ANNOTATIONS [X]
YIELD_VALUE [X]
ASYNC_GEN_WRAP [X]
PREP_RERAISE_STAR [X]
POP_EXCEPT [X]
STORE_NAME [X]
DELETE_NAME [X]
UNPACK_SEQUENCE [X]
FOR_ITER [X]
UNPACK_EX [X]
STORE_ATTR [X]
DELETE_ATTR [X]
STORE_GLOBAL [X]
DELETE_GLOBAL [X]
SWAP [X]
LOAD_CONST [X]
LOAD_NAME [X]
BUILD_TUPLE [X]
BUILD_LIST [X]
BUILD_SET [X]
BUILD_MAP [X]
LOAD_ATTR [X]
COMPARE_OP [X]
IMPORT_NAME [X]
IMPORT_FROM [X]
JUMP_FORWARD [X]
JUMP_IF_FALSE_OR_POP [X]
JUMP_IF_TRUE_OR_POP [X]
<113> [ ]
POP_JUMP_FORWARD_IF_FALSE [X]
POP_JUMP_FORWARD_IF_TRUE [X]
LOAD_GLOBAL [X]
IS_OP [X]
CONTAINS_OP [X]
RERAISE [X]
COPY [X]
<121> [ ]
BINARY_OP [X]
SEND [X]
LOAD_FAST [X]
STORE_FAST [X]
DELETE_FAST [X]
<127> [ ]
POP_JUMP_FORWARD_IF_NOT_NONE [X]
POP_JUMP_FORWARD_IF_NONE [X]
RAISE_VARARGS [X]
GET_AWAITABLE [X]
MAKE_FUNCTION [X]
BUILD_SLICE [X]
JUMP_BACKWARD_NO_INTERRUPT [X]
MAKE_CELL [X]
LOAD_CLOSURE [X]
LOAD_DEREF [X]
STORE_DEREF [X]
DELETE_DEREF [X]
JUMP_BACKWARD [X]
<141> [ ]
CALL_FUNCTION_EX [X]
<143> [ ]
EXTENDED_ARG [X]
LIST_APPEND [X]
SET_ADD [X]
MAP_ADD [X]
LOAD_CLASSDEREF [X]
COPY_FREE_VARS [X]
<150> [ ]
RESUME [X]
MATCH_CLASS [X]
<153> [ ]
<154> [ ]
FORMAT_VALUE [X]
BUILD_CONST_KEY_MAP [X]
BUILD_STRING [X]
<158> [ ]
<159> [ ]
LOAD_METHOD [X]
<161> [ ]
LIST_EXTEND [X]
SET_UPDATE [X]
DICT_MERGE [X]
DICT_UPDATE [X]
PRECALL [X]
<167> [ ]
<168> [ ]
<169> [ ]
<170> [ ]
CALL [X]
KW_NAMES [X]
POP_JUMP_BACKWARD_IF_NOT_NONE [X]
POP_JUMP_BACKWARD_IF_NONE [X]
POP_JUMP_BACKWARD_IF_FALSE [X]
POP_JUMP_BACKWARD_IF_TRUE [X]
3.11 3.12
CACHE [X] [X]
POP_TOP [X] [X]
PUSH_NULL [X] [X]
INTERPRETER_EXIT [ ] [X]
END_FOR [ ] [X]
END_SEND [ ] [X]
<6> [ ] [ ]
<7> [ ] [ ]
<8> [ ] [ ]
NOP [X] [X]
UNARY_POSITIVE [X] [ ]
UNARY_NEGATIVE [X] [X]
UNARY_NOT [X] [X]
<13> [ ] [ ]
<14> [ ] [ ]
UNARY_INVERT [X] [X]
<16> [ ] [ ]
RESERVED [ ] [X]
<18> [ ] [ ]
<19> [ ] [ ]
<20> [ ] [ ]
<21> [ ] [ ]
<22> [ ] [ ]
<23> [ ] [ ]
<24> [ ] [ ]
BINARY_SUBSCR [X] [X]
BINARY_SLICE [ ] [X]
STORE_SLICE [ ] [X]
<28> [ ] [ ]
<29> [ ] [ ]
GET_LEN [X] [X]
MATCH_MAPPING [X] [X]
MATCH_SEQUENCE [X] [X]
MATCH_KEYS [X] [X]
<34> [ ] [ ]
PUSH_EXC_INFO [X] [X]
CHECK_EXC_MATCH [X] [X]
CHECK_EG_MATCH [X] [X]
<38> [ ] [ ]
<39> [ ] [ ]
<40> [ ] [ ]
<41> [ ] [ ]
<42> [ ] [ ]
<43> [ ] [ ]
<44> [ ] [ ]
<45> [ ] [ ]
<46> [ ] [ ]
<47> [ ] [ ]
<48> [ ] [ ]
WITH_EXCEPT_START [X] [X]
GET_AITER [X] [X]
GET_ANEXT [X] [X]
BEFORE_ASYNC_WITH [X] [X]
BEFORE_WITH [X] [X]
END_ASYNC_FOR [X] [X]
CLEANUP_THROW [ ] [X]
<56> [ ] [ ]
<57> [ ] [ ]
<58> [ ] [ ]
<59> [ ] [ ]
STORE_SUBSCR [X] [X]
DELETE_SUBSCR [X] [X]
<62> [ ] [ ]
<63> [ ] [ ]
<64> [ ] [ ]
<65> [ ] [ ]
<66> [ ] [ ]
<67> [ ] [ ]
GET_ITER [X] [X]
GET_YIELD_FROM_ITER [X] [X]
PRINT_EXPR [X] [ ]
LOAD_BUILD_CLASS [X] [X]
<72> [ ] [ ]
<73> [ ] [ ]
LOAD_ASSERTION_ERROR [X] [X]
RETURN_GENERATOR [X] [X]
<76> [ ] [ ]
<77> [ ] [ ]
<78> [ ] [ ]
<79> [ ] [ ]
<80> [ ] [ ]
<81> [ ] [ ]
LIST_TO_TUPLE [X] [ ]
RETURN_VALUE [X] [X]
IMPORT_STAR [X] [ ]
SETUP_ANNOTATIONS [X] [X]
YIELD_VALUE [X] [ ]
ASYNC_GEN_WRAP ! [X]
LOAD_LOCALS ! [X]
PREP_RERAISE_STAR [X] [ ]
POP_EXCEPT [X] [X]
STORE_NAME [X] [X]
DELETE_NAME [X] [X]
UNPACK_SEQUENCE [X] [X]
FOR_ITER [X] [X]
UNPACK_EX [X] [X]
STORE_ATTR [X] [X]
DELETE_ATTR [X] [X]
STORE_GLOBAL [X] [X]
DELETE_GLOBAL [X] [X]
SWAP [X] [X]
LOAD_CONST [X] [X]
LOAD_NAME [X] [X]
BUILD_TUPLE [X] [X]
BUILD_LIST [X] [X]
BUILD_SET [X] [X]
BUILD_MAP [X] [X]
LOAD_ATTR [X] [X]
COMPARE_OP [X] [X]
IMPORT_NAME [X] [X]
IMPORT_FROM [X] [X]
JUMP_FORWARD [X] [X]
JUMP_IF_FALSE_OR_POP [X] [ ]
JUMP_IF_TRUE_OR_POP [X] [ ]
<113> [ ] [ ]
POP_JUMP_FORWARD_IF_FALSE ! [X]
POP_JUMP_IF_FALSE ! [X]
POP_JUMP_FORWARD_IF_TRUE ! [X]
POP_JUMP_IF_TRUE ! [X]
LOAD_GLOBAL [X] [X]
IS_OP [X] [X]
CONTAINS_OP [X] [X]
RERAISE [X] [X]
COPY [X] [X]
RETURN_CONST [ ] [X]
BINARY_OP [X] [X]
SEND [X] [X]
LOAD_FAST [X] [X]
STORE_FAST [X] [X]
DELETE_FAST [X] [X]
LOAD_FAST_CHECK [ ] [X]
POP_JUMP_FORWARD_IF_NOT_NONE ! [X]
POP_JUMP_IF_NOT_NONE ! [X]
POP_JUMP_FORWARD_IF_NONE ! [X]
POP_JUMP_IF_NONE ! [X]
RAISE_VARARGS [X] [X]
GET_AWAITABLE [X] [X]
MAKE_FUNCTION [X] [X]
BUILD_SLICE [X] [X]
JUMP_BACKWARD_NO_INTERRUPT [X] [X]
MAKE_CELL [X] [X]
LOAD_CLOSURE [X] [X]
LOAD_DEREF [X] [X]
STORE_DEREF [X] [X]
DELETE_DEREF [X] [X]
JUMP_BACKWARD [X] [X]
LOAD_SUPER_ATTR [ ] [X]
CALL_FUNCTION_EX [X] [X]
LOAD_FAST_AND_CLEAR [ ] [X]
EXTENDED_ARG [X] [X]
LIST_APPEND [X] [X]
SET_ADD [X] [X]
MAP_ADD [X] [X]
LOAD_CLASSDEREF [X] [ ]
COPY_FREE_VARS [X] [X]
YIELD_VALUE [ ] [X]
RESUME [X] [X]
MATCH_CLASS [X] [X]
<153> [ ] [ ]
<154> [ ] [ ]
FORMAT_VALUE [X] [X]
BUILD_CONST_KEY_MAP [X] [X]
BUILD_STRING [X] [X]
<158> [ ] [ ]
<159> [ ] [ ]
LOAD_METHOD [X] [ ]
<161> [ ] [ ]
LIST_EXTEND [X] [X]
SET_UPDATE [X] [X]
DICT_MERGE [X] [X]
DICT_UPDATE [X] [X]
PRECALL [X] [ ]
<167> [ ] [ ]
<168> [ ] [ ]
<169> [ ] [ ]
<170> [ ] [ ]
CALL [X] [X]
KW_NAMES [X] [X]
POP_JUMP_BACKWARD_IF_NOT_NONE ! [X]
CALL_INTRINSIC_1 ! [X]
POP_JUMP_BACKWARD_IF_NONE ! [X]
CALL_INTRINSIC_2 ! [X]
POP_JUMP_BACKWARD_IF_FALSE ! [X]
LOAD_FROM_DICT_OR_GLOBALS ! [X]
POP_JUMP_BACKWARD_IF_TRUE ! [X]
LOAD_FROM_DICT_OR_DEREF ! [X]
<177>
<178>
<179>
.
.
.
<234>
<235>
<236>
INSTRUMENTED_LOAD_SUPER_ATTR [ ] [X]
INSTRUMENTED_POP_JUMP_IF_NONE [ ] [X]
INSTRUMENTED_POP_JUMP_IF_NOT_NONE [ ] [X]
INSTRUMENTED_RESUME [ ] [X]
INSTRUMENTED_CALL [ ] [X]
INSTRUMENTED_RETURN_VALUE [ ] [X]
INSTRUMENTED_YIELD_VALUE [ ] [X]
INSTRUMENTED_CALL_FUNCTION_EX [ ] [X]
INSTRUMENTED_JUMP_FORWARD [ ] [X]
INSTRUMENTED_JUMP_BACKWARD [ ] [X]
INSTRUMENTED_RETURN_CONST [ ] [X]
INSTRUMENTED_FOR_ITER [ ] [X]
INSTRUMENTED_POP_JUMP_IF_FALSE [ ] [X]
INSTRUMENTED_POP_JUMP_IF_TRUE [ ] [X]
INSTRUMENTED_END_FOR [ ] [X]
INSTRUMENTED_END_SEND [ ] [X]
INSTRUMENTED_INSTRUCTION [ ] [X]
INSTRUMENTED_LINE [ ] [X]
<255>
[Intrinsic 1] 3.12
INVALID [X]
PRINT [X]
IMPORT_STAR [X]
STOPITERATION_ERROR [X]
ASYNC_GEN_WRAP [X]
UNARY_POSITIVE [X]
LIST_TO_TUPLE [X]
TYPEVAR [X]
PARAMSPEC [X]
TYPEVARTUPLE [X]
SUBSCRIPT_GENERIC [X]
TYPEALIAS [X]
[Intrinsic 2] 3.12
INVALID [X]
PREP_RERAISE_STAR [X]
TYPEVAR_WITH_BOUND [X]
TYPEVAR_WITH_CONSTRAINTS [X]
SET_FUNCTION_TYPE_PARAMS [X]
1.0 1.3 1.4 1.5 1.6