Add bytecode support for Python 3.9 rc2

This commit is contained in:
Michael Hansen
2020-09-29 09:28:15 -07:00
parent 045b624f55
commit 8460d119fd
8 changed files with 326 additions and 170 deletions

View File

@@ -15,9 +15,9 @@ elseif(MSVC)
endif()
set(PYTHON_VERSIONS
10 11 13 14 15 16 # Python 1.1 and 1.2 are marshal-identical
10 11 13 14 15 16 # Python 1.1 and 1.2 are marshal-identical
20 21 22 23 24 25 26 27
30 31 32 33 34 35 36 37 38
30 31 32 33 34 35 36 37 38 39
)
foreach(ver ${PYTHON_VERSIONS})

View File

@@ -9,6 +9,7 @@ Python MAGIC Python MAGIC Python MAGIC
2.7 0x0A0DF303 3.6 0x0A0D0D33
3.7 0x0A0D0D42
3.8 0x0A0D0D55
3.9 0x0A0D0D61
1.0 1.1 1.2 1.3 1.4 1.5 1.6
@@ -348,181 +349,189 @@ MAP_ADD [ ] [ ] [ ] [ ] [ ] [ ] [ ]
.
3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8
STOP_CODE [X] [X] [X] [ ] [ ] [ ] [ ] [ ] [ ]
POP_TOP [X] [X] [X] [X] [X] [X] [X] [X] [X]
ROT_TWO [X] [X] [X] [X] [X] [X] [X] [X] [X]
ROT_THREE [X] [X] [X] [X] [X] [X] [X] [X] [X]
DUP_TOP [X] [X] [X] [X] [X] [X] [X] [X] [X]
3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9
STOP_CODE [X] [X] [X] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
POP_TOP [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
ROT_TWO [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
ROT_THREE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
DUP_TOP [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
ROT_FOUR ! [X] [X]
DUP_TOP_TWO ! [X] [X] [X] [X] [X] [X] [X]
ROT_FOUR [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
<7> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<8> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
NOP [X] [X] [X] [X] [X] [X] [X] [X] [X]
UNARY_POSITIVE [X] [X] [X] [X] [X] [X] [X] [X] [X]
UNARY_NEGATIVE [X] [X] [X] [X] [X] [X] [X] [X] [X]
UNARY_NOT [X] [X] [X] [X] [X] [X] [X] [X] [X]
<13> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<14> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
UNARY_INVERT [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_MATRIX_MULTIPLY [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
DUP_TOP_TWO ! [X] [X] [X] [X] [X] [X] [X] [X]
ROT_FOUR [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X]
<7> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<8> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
NOP [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
UNARY_POSITIVE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
UNARY_NEGATIVE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
UNARY_NOT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
<13> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<14> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
UNARY_INVERT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_MATRIX_MULTIPLY [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X]
SET_ADD ! [X] [ ] [ ] [ ] [ ]
INPLACE_MATRIX_MULTIPLY ! [X] [X] [X] [X]
LIST_APPEND [X] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
BINARY_POWER [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_MULTIPLY [X] [X] [X] [X] [X] [X] [X] [X] [X]
<21> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
BINARY_MODULO [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_ADD [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_SUBTRACT [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_FLOOR_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_TRUE_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_FLOOR_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_TRUE_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X]
<30> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<31> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<32> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<33> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<34> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<35> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<36> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<37> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<38> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<39> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<40> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<41> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<42> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<43> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<44> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<45> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<46> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<47> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<48> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<49> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
GET_AITER [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
GET_ANEXT [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
BEFORE_ASYNC_WITH [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
BEGIN_FINALLY [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
INPLACE_MATRIX_MULTIPLY ! [X] [X] [X] [X] [X]
LIST_APPEND [X] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
BINARY_POWER [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_MULTIPLY [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
<21> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
BINARY_MODULO [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_ADD [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_SUBTRACT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_FLOOR_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_TRUE_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_FLOOR_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_TRUE_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
<30> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<31> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<32> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<33> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<34> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<35> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<36> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<37> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<38> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<39> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<40> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<41> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<42> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<43> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<44> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<45> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<46> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<47> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
RERAISE [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
WITH_EXCEPT_START [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
GET_AITER [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X]
GET_ANEXT [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X]
BEFORE_ASYNC_WITH [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X]
BEGIN_FINALLY [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [ ]
STORE_MAP ! [X] [X] [X] [X] [X] [ ] [ ] [ ]
END_ASYNC_FOR ! [X]
INPLACE_ADD [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_SUBTRACT [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_MULTIPLY [X] [X] [X] [X] [X] [X] [X] [X] [X]
<58> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
INPLACE_MODULO [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_LSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_RSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_AND [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_XOR [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_OR [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_POWER [X] [X] [X] [X] [X] [X] [X] [X] [X]
GET_ITER [X] [X] [X] [X] [X] [X] [X] [X] [X]
END_ASYNC_FOR ! [X] [X]
INPLACE_ADD [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_SUBTRACT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_MULTIPLY [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
<58> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
INPLACE_MODULO [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_LSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_RSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_AND [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_XOR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_OR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_POWER [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
GET_ITER [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_LOCALS ! [X] [X] [X] [X] [ ]
GET_YIELD_FROM_ITER ! [X] [X] [X] [X]
PRINT_EXPR [X] [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_BUILD_CLASS [X] [X] [X] [X] [X] [X] [X] [X] [X]
YIELD_FROM [ ] [ ] [ ] [X] [X] [X] [X] [X] [X]
GET_AWAITABLE [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
<74> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
INPLACE_LSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_RSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_AND [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_XOR [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_OR [X] [X] [X] [X] [X] [X] [X] [X] [X]
BREAK_LOOP [X] [X] [X] [X] [X] [X] [X] [X] [ ]
GET_YIELD_FROM_ITER ! [X] [X] [X] [X] [X]
PRINT_EXPR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_BUILD_CLASS [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
YIELD_FROM [ ] [ ] [ ] [X] [X] [X] [X] [X] [X] [X]
GET_AWAITABLE [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X]
LOAD_ASSERTION_ERROR [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
INPLACE_LSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_RSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_AND [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_XOR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_OR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BREAK_LOOP [X] [X] [X] [X] [X] [X] [X] [X] [ ] [ ]
WITH_CLEANUP ! [X] [X] [X] [X] [X]
WITH_CLEANUP_START ! [X] [X] [X] [X]
WITH_CLEANUP_FINISH [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
RETURN_VALUE [X] [X] [X] [X] [X] [X] [X] [X] [X]
IMPORT_STAR [X] [X] [X] [X] [X] [X] [X] [X] [X]
SETUP_ANNOTATIONS [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
YIELD_VALUE [X] [X] [X] [X] [X] [X] [X] [X] [X]
POP_BLOCK [X] [X] [X] [X] [X] [X] [X] [X] [X]
END_FINALLY [X] [X] [X] [X] [X] [X] [X] [X] [X]
POP_EXCEPT [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X]
UNPACK_SEQUENCE [X] [X] [X] [X] [X] [X] [X] [X] [X]
FOR_ITER [X] [X] [X] [X] [X] [X] [X] [X] [X]
UNPACK_EX [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_ATTR [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_ATTR [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X] [X]
DUP_TOPX [X] [X] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
LOAD_CONST [X] [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_TUPLE [X] [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_LIST [X] [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_SET [X] [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_MAP [X] [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_ATTR [X] [X] [X] [X] [X] [X] [X] [X] [X]
COMPARE_OP [X] [X] [X] [X] [X] [X] [X] [X] [X]
IMPORT_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X]
IMPORT_FROM [X] [X] [X] [X] [X] [X] [X] [X] [X]
JUMP_FORWARD [X] [X] [X] [X] [X] [X] [X] [X] [X]
JUMP_IF_FALSE (_OR_POP) [X] [X] [+] [+] [+] [+] [+] [+] [+]
JUMP_IF_TRUE (_OR_POP) [X] [X] [+] [+] [+] [+] [+] [+] [+]
JUMP_ABSOLUTE [X] [X] [X] [X] [X] [X] [X] [X] [X]
POP_JUMP_IF_FALSE [ ] [X] [X] [X] [X] [X] [X] [X] [X]
POP_JUMP_IF_TRUE [ ] [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X] [X]
<117> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<118> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
CONTINUE_LOOP [X] [X] [X] [X] [X] [X] [X] [X] [ ]
SETUP_LOOP [X] [X] [X] [X] [X] [X] [X] [X] [ ]
SETUP_EXCEPT [X] [X] [X] [X] [X] [X] [X] [X] [ ]
SETUP_FINALLY [X] [X] [X] [X] [X] [X] [X] [X] [X]
<123> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
LOAD_FAST [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_FAST [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_FAST [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_ANNOTATION [ ] [ ] [ ] [ ] [ ] [ ] [X] [ ] [ ]
<128> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<129> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
RAISE_VARARGS [X] [X] [X] [X] [X] [X] [X] [X] [X]
CALL_FUNCTION [X] [X] [X] [X] [X] [X] [X] [X] [X]
MAKE_FUNCTION [X] [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_SLICE [X] [X] [X] [X] [X] [X] [X] [X] [X]
MAKE_CLOSURE [X] [X] [X] [X] [X] [X] [ ] [ ] [ ]
LOAD_CLOSURE [X] [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_DEREF [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_DEREF [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_DEREF [ ] [ ] [X] [X] [X] [X] [X] [X] [X]
<139> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
CALL_FUNCTION_VAR [X] [X] [X] [X] [X] [X] [ ] [ ] [ ]
CALL_FUNCTION_KW [X] [X] [X] [X] [X] [X] [X] [X] [X]
WITH_CLEANUP_START ! [X] [X] [X] [X] [ ]
WITH_CLEANUP_FINISH ! [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
LIST_TO_TUPLE ! [X]
RETURN_VALUE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
IMPORT_STAR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
SETUP_ANNOTATIONS [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
YIELD_VALUE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
POP_BLOCK [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
END_FINALLY [X] [X] [X] [X] [X] [X] [X] [X] [X] [ ]
POP_EXCEPT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
UNPACK_SEQUENCE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
FOR_ITER [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
UNPACK_EX [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_ATTR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_ATTR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
DUP_TOPX [X] [X] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
LOAD_CONST [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_TUPLE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_LIST [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_SET [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_MAP [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_ATTR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
COMPARE_OP [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
IMPORT_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
IMPORT_FROM [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
JUMP_FORWARD [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
JUMP_IF_FALSE (_OR_POP) [X] [X] [+] [+] [+] [+] [+] [+] [+] [+]
JUMP_IF_TRUE (_OR_POP) [X] [X] [+] [+] [+] [+] [+] [+] [+] [+]
JUMP_ABSOLUTE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
POP_JUMP_IF_FALSE [ ] [X] [X] [X] [X] [X] [X] [X] [X] [X]
POP_JUMP_IF_TRUE [ ] [X] [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
IS_OP [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
CONTAINS_OP [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
CONTINUE_LOOP [X] [X] [X] [X] [X] [X] [X] [X] [ ] [ ]
SETUP_LOOP [X] [X] [X] [X] [X] [X] [X] [X] [ ] [ ]
SETUP_EXCEPT ! [X] [X] [X] [X] [X] [X] [X] [X] [ ]
JUMP_IF_NOT_EXC_MATCH ! [X]
SETUP_FINALLY [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
<123> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
LOAD_FAST [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_FAST [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_FAST [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_ANNOTATION [ ] [ ] [ ] [ ] [ ] [ ] [X] [ ] [ ] [ ]
<128> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<129> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
RAISE_VARARGS [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
CALL_FUNCTION [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
MAKE_FUNCTION [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_SLICE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
MAKE_CLOSURE [X] [X] [X] [X] [X] [X] [ ] [ ] [ ] [ ]
LOAD_CLOSURE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_DEREF [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_DEREF [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_DEREF [ ] [ ] [X] [X] [X] [X] [X] [X] [X] [X]
<139> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
CALL_FUNCTION_VAR [X] [X] [X] [X] [X] [X] [ ] [ ] [ ] [ ]
CALL_FUNCTION_KW [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]
CALL_FUNCTION_VAR_KW ! [X] [X] [X] [X] [X] [X]
CALL_FUNCTION_EX ! [X] [X] [X]
CALL_FUNCTION_EX ! [X] [X] [X] [X]
EXTENDED_ARG ! [X] [X]
SETUP_WITH ! [X] [X] [X] [X] [X] [X] [X]
SETUP_WITH ! [X] [X] [X] [X] [X] [X] [X] [X]
<144> ! [ ] [ ]
EXTENDED_ARG ! [X] [X] [X] [X] [X] [X] [X]
LIST_APPEND [ ] [X] [X] [X] [X] [X] [X] [X] [X]
SET_ADD [ ] [X] [X] [X] [X] [X] [X] [X] [X]
MAP_ADD [ ] [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_CLASSDEREF [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X]
BUILD_LIST_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
BUILD_MAP_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
BUILD_MAP_UNPACK_WITH_CALL [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
BUILD_TUPLE_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
BUILD_SET_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
SETUP_ASYNC_WITH [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
FORMAT_VALUE [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
BUILD_CONST_KEY_MAP [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
BUILD_STRING [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
BUILD_TUPLE_UNPACK_WITH_CALL[ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
<159> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
LOAD_METHOD [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X]
CALL_METHOD [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X]
CALL_FINALLY [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
POP_FINALLY [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
<164> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<165> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
EXTENDED_ARG ! [X] [X] [X] [X] [X] [X] [X] [X]
LIST_APPEND [ ] [X] [X] [X] [X] [X] [X] [X] [X] [X]
SET_ADD [ ] [X] [X] [X] [X] [X] [X] [X] [X] [X]
MAP_ADD [ ] [X] [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_CLASSDEREF [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] [X]
BUILD_LIST_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [ ]
BUILD_MAP_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [ ]
BUILD_MAP_UNPACK_WITH_CALL [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [ ]
BUILD_TUPLE_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [ ]
BUILD_SET_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [ ]
SETUP_ASYNC_WITH [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X]
FORMAT_VALUE [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
BUILD_CONST_KEY_MAP [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
BUILD_STRING [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
BUILD_TUPLE_UNPACK_WITH_CALL[ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [ ]
<159> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
LOAD_METHOD [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
CALL_METHOD [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
CALL_FINALLY ! [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
LIST_EXTEND ! [X]
POP_FINALLY ! [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
SET_UPDATE ! [X]
DICT_MERGE [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
DICT_UPDATE [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
<166>
<167>
<168>
<169>
.
.
.

View File

@@ -32,6 +32,7 @@ DECLARE_PYTHON(3, 5)
DECLARE_PYTHON(3, 6)
DECLARE_PYTHON(3, 7)
DECLARE_PYTHON(3, 8)
DECLARE_PYTHON(3, 9)
const char* Pyc::OpcodeName(int opcode)
{
@@ -97,6 +98,7 @@ int Pyc::ByteToOpcode(int maj, int min, int opcode)
case 6: return python_36_map(opcode);
case 7: return python_37_map(opcode);
case 8: return python_38_map(opcode);
case 9: return python_39_map(opcode);
}
break;
}
@@ -346,6 +348,14 @@ void bc_disasm(PycRef<PycCode> code, PycModule* mod, int indent)
fprintf(pyc_output, "%d (%s)", operand, cmp_strings[operand]);
else
fprintf(pyc_output, "%d (UNKNOWN)", operand);
} else if (opcode == Pyc::IS_OP_A) {
fprintf(pyc_output, "%d (%s)", operand, (operand == 0) ? "is"
: (operand == 1) ? "is not"
: "UNKNOWN");
} else if (opcode == Pyc::CONTAINS_OP_A) {
fprintf(pyc_output, "%d (%s)", operand, (operand == 0) ? "in"
: (operand == 1) ? "not in"
: "UNKNOWN");
} else {
fprintf(pyc_output, "%d", operand);
}

View File

@@ -93,6 +93,10 @@ 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)
/* Has parameter word */
OPCODE_A_FIRST(STORE_NAME)
@@ -174,3 +178,10 @@ 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(JUMP_IF_NOT_EXC_MATCH)
OPCODE_A(LIST_EXTEND)
OPCODE_A(SET_UPDATE)
OPCODE_A(DICT_MERGE)
OPCODE_A(DICT_UPDATE)

View File

@@ -27,7 +27,7 @@ if not os.path.exists(sys.argv[2]):
maplist = [ 10, 11, 13, 14, 15, 16,
20, 21, 22, 23, 24, 25, 26, 27,
30, 31, 32, 33, 34, 35, 36, 37, 38 ]
30, 31, 32, 33, 34, 35, 36, 37, 38, 39 ]
for mapver in maplist:
infile = open(os.path.join(sys.argv[1], 'python_%d.map' % mapver), 'rt')

119
bytes/python_39.map Normal file
View File

@@ -0,0 +1,119 @@
1 POP_TOP
2 ROT_TWO
3 ROT_THREE
4 DUP_TOP
5 DUP_TOP_TWO
6 ROT_FOUR
9 NOP
10 UNARY_POSITIVE
11 UNARY_NEGATIVE
12 UNARY_NOT
15 UNARY_INVERT
16 BINARY_MATRIX_MULTIPLY
17 INPLACE_MATRIX_MULTIPLY
19 BINARY_POWER
20 BINARY_MULTIPLY
22 BINARY_MODULO
23 BINARY_ADD
24 BINARY_SUBTRACT
25 BINARY_SUBSCR
26 BINARY_FLOOR_DIVIDE
27 BINARY_TRUE_DIVIDE
28 INPLACE_FLOOR_DIVIDE
29 INPLACE_TRUE_DIVIDE
48 RERAISE
49 WITH_EXCEPT_START
50 GET_AITER
51 GET_ANEXT
52 BEFORE_ASYNC_WITH
54 END_ASYNC_FOR
55 INPLACE_ADD
56 INPLACE_SUBTRACT
57 INPLACE_MULTIPLY
59 INPLACE_MODULO
60 STORE_SUBSCR
61 DELETE_SUBSCR
62 BINARY_LSHIFT
63 BINARY_RSHIFT
64 BINARY_AND
65 BINARY_XOR
66 BINARY_OR
67 INPLACE_POWER
68 GET_ITER
69 GET_YIELD_FROM_ITER
70 PRINT_EXPR
71 LOAD_BUILD_CLASS
72 YIELD_FROM
73 GET_AWAITABLE
74 LOAD_ASSERTION_ERROR
75 INPLACE_LSHIFT
76 INPLACE_RSHIFT
77 INPLACE_AND
78 INPLACE_XOR
79 INPLACE_OR
82 LIST_TO_TUPLE
83 RETURN_VALUE
84 IMPORT_STAR
85 SETUP_ANNOTATIONS
86 YIELD_VALUE
87 POP_BLOCK
89 POP_EXCEPT
90 STORE_NAME_A
91 DELETE_NAME_A
92 UNPACK_SEQUENCE_A
93 FOR_ITER_A
94 UNPACK_EX_A
95 STORE_ATTR_A
96 DELETE_ATTR_A
97 STORE_GLOBAL_A
98 DELETE_GLOBAL_A
100 LOAD_CONST_A
101 LOAD_NAME_A
102 BUILD_TUPLE_A
103 BUILD_LIST_A
104 BUILD_SET_A
105 BUILD_MAP_A
106 LOAD_ATTR_A
107 COMPARE_OP_A
108 IMPORT_NAME_A
109 IMPORT_FROM_A
110 JUMP_FORWARD_A
111 JUMP_IF_FALSE_OR_POP_A
112 JUMP_IF_TRUE_OR_POP_A
113 JUMP_ABSOLUTE_A
114 POP_JUMP_IF_FALSE_A
115 POP_JUMP_IF_TRUE_A
116 LOAD_GLOBAL_A
117 IS_OP_A
118 CONTAINS_OP_A
121 JUMP_IF_NOT_EXC_MATCH_A
122 SETUP_FINALLY_A
124 LOAD_FAST_A
125 STORE_FAST_A
126 DELETE_FAST_A
130 RAISE_VARARGS_A
131 CALL_FUNCTION_A
132 MAKE_FUNCTION_A
133 BUILD_SLICE_A
135 LOAD_CLOSURE_A
136 LOAD_DEREF_A
137 STORE_DEREF_A
138 DELETE_DEREF_A
141 CALL_FUNCTION_KW_A
142 CALL_FUNCTION_EX_A
143 SETUP_WITH_A
144 EXTENDED_ARG_A
145 LIST_APPEND_A
146 SET_ADD_A
147 MAP_ADD_A
148 LOAD_CLASSDEREF_A
154 SETUP_ASYNC_WITH_A
155 FORMAT_VALUE_A
156 BUILD_CONST_KEY_MAP_A
157 BUILD_STRING_A
160 LOAD_METHOD_A
161 CALL_METHOD_A
162 LIST_EXTEND_A
163 SET_UPDATE_A
164 DICT_MERGE_A
165 DICT_UPDATE_A

View File

@@ -152,6 +152,12 @@ void PycModule::setVersion(unsigned int magic)
m_unicode = true;
break;
case MAGIC_3_9:
m_maj = 3;
m_min = 9;
m_unicode = true;
break;
/* Bad Magic detected */
default:
m_maj = -1;

View File

@@ -31,6 +31,7 @@ enum PycMagic {
MAGIC_3_6 = 0x0A0D0D33,
MAGIC_3_7 = 0x0A0D0D42,
MAGIC_3_8 = 0x0A0D0D55,
MAGIC_3_9 = 0x0A0D0D61,
};
class PycModule {