diff --git a/CMakeLists.txt b/CMakeLists.txt index c791399..83f0c71 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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}) diff --git a/PythonBytecode.txt b/PythonBytecode.txt index d040d0e..13d5418 100644 --- a/PythonBytecode.txt +++ b/PythonBytecode.txt @@ -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> . . . diff --git a/bytecode.cpp b/bytecode.cpp index e575684..2155901 100644 --- a/bytecode.cpp +++ b/bytecode.cpp @@ -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 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); } diff --git a/bytecode_ops.inl b/bytecode_ops.inl index fa1fdb3..2babb74 100644 --- a/bytecode_ops.inl +++ b/bytecode_ops.inl @@ -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) diff --git a/bytes/comp_map.py b/bytes/comp_map.py index 7a0b92a..c83a8df 100755 --- a/bytes/comp_map.py +++ b/bytes/comp_map.py @@ -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') diff --git a/bytes/python_39.map b/bytes/python_39.map new file mode 100644 index 0000000..1987a32 --- /dev/null +++ b/bytes/python_39.map @@ -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 diff --git a/pyc_module.cpp b/pyc_module.cpp index 0d76371..919e8ef 100644 --- a/pyc_module.cpp +++ b/pyc_module.cpp @@ -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; diff --git a/pyc_module.h b/pyc_module.h index 21846b6..6f38a20 100644 --- a/pyc_module.h +++ b/pyc_module.h @@ -31,6 +31,7 @@ enum PycMagic { MAGIC_3_6 = 0x0A0D0D33, MAGIC_3_7 = 0x0A0D0D42, MAGIC_3_8 = 0x0A0D0D55, + MAGIC_3_9 = 0x0A0D0D61, }; class PycModule {