Add Python 3.2 support

This commit is contained in:
Michael Hansen
2011-01-06 17:15:48 -08:00
parent c0d7bc9515
commit be6ea32619
9 changed files with 270 additions and 152 deletions

View File

@@ -8,4 +8,4 @@ bin/pycdas
bin/pycdc
bin/.*\.py
bin/.*\.pyc
^test/
bytes/.*\.cpp

View File

@@ -29,7 +29,8 @@ BYTES = \
out/python_26.o \
out/python_27.o \
out/python_30.o \
out/python_31.o
out/python_31.o \
out/python_32.o
ALL = \
bin/pycdas \

View File

@@ -1,7 +1,7 @@
Python MAGIC Python MAGIC Python MAGIC
1.0 0x00999902 2.0 0x0A0DC687 3.0 0x0A0D0C3A
1.1 0x00999903 2.1 0x0A0DEB2A 3.1 0x0A0D0C4E
1.2 0x00999903 2.2 0x0A0DED2D
1.2 0x00999903 2.2 0x0A0DED2D 3.2 0x0A0D0C6C
1.3 0x0A0D2E89 2.3 0x0A0DF23B
1.4 0x0A0D1704 2.4 0x0A0DF26D
1.5 0x0A0D4E99 2.5 0x0A0DF2B3
@@ -347,36 +347,37 @@ MAP_ADD [ ] [ ] [ ] [ ] [ ] [ ] [ ]
3.0 3.1 3.2
STOP_CODE [X] [X] [ ]
POP_TOP [X] [X] [ ]
ROT_TWO [X] [X] [ ]
ROT_THREE [X] [X] [ ]
DUP_TOP [X] [X] [ ]
ROT_FOUR [X] [X] [ ]
STOP_CODE [X] [X] [X]
POP_TOP [X] [X] [X]
ROT_TWO [X] [X] [X]
ROT_THREE [X] [X] [X]
DUP_TOP [X] [X] [X]
ROT_FOUR ! [X] [X]
DUP_TOP_TWO ! [X]
<6> [ ] [ ] [ ]
<7> [ ] [ ] [ ]
<8> [ ] [ ] [ ]
NOP [X] [X] [ ]
UNARY_POSITIVE [X] [X] [ ]
UNARY_NEGATIVE [X] [X] [ ]
UNARY_NOT [X] [X] [ ]
NOP [X] [X] [X]
UNARY_POSITIVE [X] [X] [X]
UNARY_NEGATIVE [X] [X] [X]
UNARY_NOT [X] [X] [X]
<13> [ ] [ ] [ ]
<14> [ ] [ ] [ ]
UNARY_INVERT [X] [X] [ ]
UNARY_INVERT [X] [X] [X]
<16> [ ] [ ] [ ]
SET_ADD [X] [ ] [ ]
LIST_APPEND [X] [ ] [ ]
BINARY_POWER [X] [X] [ ]
BINARY_MULTIPLY [X] [X] [ ]
BINARY_POWER [X] [X] [X]
BINARY_MULTIPLY [X] [X] [X]
<21> [ ] [ ] [ ]
BINARY_MODULO [X] [X] [ ]
BINARY_ADD [X] [X] [ ]
BINARY_SUBTRACT [X] [X] [ ]
BINARY_SUBSCR [X] [X] [ ]
BINARY_FLOOR_DIVIDE [X] [X] [ ]
BINARY_TRUE_DIVIDE [X] [X] [ ]
INPLACE_FLOOR_DIVIDE [X] [X] [ ]
INPLACE_TRUE_DIVIDE [X] [X] [ ]
BINARY_MODULO [X] [X] [X]
BINARY_ADD [X] [X] [X]
BINARY_SUBTRACT [X] [X] [X]
BINARY_SUBSCR [X] [X] [X]
BINARY_FLOOR_DIVIDE [X] [X] [X]
BINARY_TRUE_DIVIDE [X] [X] [X]
INPLACE_FLOOR_DIVIDE [X] [X] [X]
INPLACE_TRUE_DIVIDE [X] [X] [X]
<30> [ ] [ ] [ ]
<31> [ ] [ ] [ ]
<32> [ ] [ ] [ ]
@@ -401,100 +402,102 @@ INPLACE_TRUE_DIVIDE [X] [X] [ ]
<51> [ ] [ ] [ ]
<52> [ ] [ ] [ ]
<53> [ ] [ ] [ ]
STORE_MAP [X] [X] [ ]
INPLACE_ADD [X] [X] [ ]
INPLACE_SUBTRACT [X] [X] [ ]
INPLACE_MULTIPLY [X] [X] [ ]
STORE_MAP [X] [X] [X]
INPLACE_ADD [X] [X] [X]
INPLACE_SUBTRACT [X] [X] [X]
INPLACE_MULTIPLY [X] [X] [X]
<58> [ ] [ ] [ ]
INPLACE_MODULO [X] [X] [ ]
STORE_SUBSCR [X] [X] [ ]
DELETE_SUBSCR [X] [X] [ ]
BINARY_LSHIFT [X] [X] [ ]
BINARY_RSHIFT [X] [X] [ ]
BINARY_AND [X] [X] [ ]
BINARY_XOR [X] [X] [ ]
BINARY_OR [X] [X] [ ]
INPLACE_POWER [X] [X] [ ]
GET_ITER [X] [X] [ ]
STORE_LOCALS [X] [X] [ ]
PRINT_EXPR [X] [X] [ ]
LOAD_BUILD_CLASS [X] [X] [ ]
INPLACE_MODULO [X] [X] [X]
STORE_SUBSCR [X] [X] [X]
DELETE_SUBSCR [X] [X] [X]
BINARY_LSHIFT [X] [X] [X]
BINARY_RSHIFT [X] [X] [X]
BINARY_AND [X] [X] [X]
BINARY_XOR [X] [X] [X]
BINARY_OR [X] [X] [X]
INPLACE_POWER [X] [X] [X]
GET_ITER [X] [X] [X]
STORE_LOCALS [X] [X] [X]
PRINT_EXPR [X] [X] [X]
LOAD_BUILD_CLASS [X] [X] [X]
<72> [ ] [ ] [ ]
<73> [ ] [ ] [ ]
<74> [ ] [ ] [ ]
INPLACE_LSHIFT [X] [X] [ ]
INPLACE_RSHIFT [X] [X] [ ]
INPLACE_AND [X] [X] [ ]
INPLACE_XOR [X] [X] [ ]
INPLACE_OR [X] [X] [ ]
BREAK_LOOP [X] [X] [ ]
WITH_CLEANUP [X] [X] [ ]
INPLACE_LSHIFT [X] [X] [X]
INPLACE_RSHIFT [X] [X] [X]
INPLACE_AND [X] [X] [X]
INPLACE_XOR [X] [X] [X]
INPLACE_OR [X] [X] [X]
BREAK_LOOP [X] [X] [X]
WITH_CLEANUP [X] [X] [X]
<82> [ ] [ ] [ ]
RETURN_VALUE [X] [X] [ ]
IMPORT_STAR [X] [X] [ ]
RETURN_VALUE [X] [X] [X]
IMPORT_STAR [X] [X] [X]
<85> [ ] [ ] [ ]
YIELD_VALUE [X] [X] [ ]
POP_BLOCK [X] [X] [ ]
END_FINALLY [X] [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] [ ]
YIELD_VALUE [X] [X] [X]
POP_BLOCK [X] [X] [X]
END_FINALLY [X] [X] [X]
POP_EXCEPT [X] [X] [X]
STORE_NAME [X] [X] [X]
DELETE_NAME [X] [X] [X]
UNPACK_SEQUENCE [X] [X] [X]
FOR_ITER [X] [X] [X]
UNPACK_EX [X] [X] [X]
STORE_ATTR [X] [X] [X]
DELETE_ATTR [X] [X] [X]
STORE_GLOBAL [X] [X] [X]
DELETE_GLOBAL [X] [X] [X]
DUP_TOPX [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 [X] [X] [ ]
JUMP_IF_TRUE [X] [X] [ ]
JUMP_ABSOLUTE [X] [X] [ ]
POP_JUMP_IF_FALSE [ ] [X] [ ]
POP_JUMP_IF_TRUE [ ] [X] [ ]
LOAD_GLOBAL [X] [X] [ ]
LOAD_CONST [X] [X] [X]
LOAD_NAME [X] [X] [X]
BUILD_TUPLE [X] [X] [X]
BUILD_LIST [X] [X] [X]
BUILD_SET [X] [X] [X]
BUILD_MAP [X] [X] [X]
LOAD_ATTR [X] [X] [X]
COMPARE_OP [X] [X] [X]
IMPORT_NAME [X] [X] [X]
IMPORT_FROM [X] [X] [X]
JUMP_FORWARD [X] [X] [X]
JUMP_IF_FALSE (_OR_POP) [X] [X] [+]
JUMP_IF_TRUE (_OR_POP) [X] [X] [+]
JUMP_ABSOLUTE [X] [X] [X]
POP_JUMP_IF_FALSE [ ] [X] [X]
POP_JUMP_IF_TRUE [ ] [X] [X]
LOAD_GLOBAL [X] [X] [X]
<117> [ ] [ ] [ ]
<118> [ ] [ ] [ ]
CONTINUE_LOOP [X] [X] [ ]
SETUP_LOOP [X] [X] [ ]
SETUP_EXCEPT [X] [X] [ ]
SETUP_FINALLY [X] [X] [ ]
CONTINUE_LOOP [X] [X] [X]
SETUP_LOOP [X] [X] [X]
SETUP_EXCEPT [X] [X] [X]
SETUP_FINALLY [X] [X] [X]
<123> [ ] [ ] [ ]
LOAD_FAST [X] [X] [ ]
STORE_FAST [X] [X] [ ]
DELETE_FAST [X] [X] [ ]
LOAD_FAST [X] [X] [X]
STORE_FAST [X] [X] [X]
DELETE_FAST [X] [X] [X]
<127> [ ] [ ] [ ]
<128> [ ] [ ] [ ]
<129> [ ] [ ] [ ]
RAISE_VARARGS [X] [X] [ ]
CALL_FUNCTION [X] [X] [ ]
MAKE_FUNCTION [X] [X] [ ]
BUILD_SLICE [X] [X] [ ]
MAKE_CLOSURE [X] [X] [ ]
LOAD_CLOSURE [X] [X] [ ]
LOAD_DEREF [X] [X] [ ]
STORE_DEREF [X] [X] [ ]
<138> [ ] [ ] [ ]
RAISE_VARARGS [X] [X] [X]
CALL_FUNCTION [X] [X] [X]
MAKE_FUNCTION [X] [X] [X]
BUILD_SLICE [X] [X] [X]
MAKE_CLOSURE [X] [X] [X]
LOAD_CLOSURE [X] [X] [X]
LOAD_DEREF [X] [X] [X]
STORE_DEREF [X] [X] [X]
DELETE_DEREF [ ] [ ] [X]
<139> [ ] [ ] [ ]
CALL_FUNCTION_VAR [X] [X] [ ]
CALL_FUNCTION_KW [X] [X] [ ]
CALL_FUNCTION_VAR_KW [X] [X] [ ]
EXTENDED_ARG [X] [X] [ ]
<144> [ ] [ ] [ ]
LIST_APPEND [ ] [X] [ ]
SET_ADD [ ] [X] [ ]
MAP_ADD [ ] [X] [ ]
CALL_FUNCTION_VAR [X] [X] [X]
CALL_FUNCTION_KW [X] [X] [X]
CALL_FUNCTION_VAR_KW [X] [X] [X]
EXTENDED_ARG ! [X] [X]
SETUP_WITH ! [X]
<144> ! [ ] [ ]
EXTENDED_ARG ! [X]
LIST_APPEND [ ] [X] [X]
SET_ADD [ ] [X] [X]
MAP_ADD [ ] [X] [X]
<148> [ ] [ ] [ ]
<149> [ ] [ ] [ ]
<150> [ ] [ ] [ ]
@@ -558,28 +561,28 @@ TYPE_FROZENSET '>' '>'
3.0 3.1 3.2
TYPE_NULL '0' '0'
TYPE_NONE 'N' 'N'
TYPE_FALSE 'F' 'F'
TYPE_TRUE 'T' 'T'
TYPE_STOPITER 'S' 'S'
TYPE_ELLIPSIS '.' '.'
TYPE_INT 'i' 'i'
TYPE_INT64 'I' 'I'
TYPE_FLOAT 'f' 'f'
TYPE_BINARY_FLOAT 'g' 'g'
TYPE_COMPLEX 'x' 'x'
TYPE_BINARY_COMPLEX 'y' 'y'
TYPE_LONG 'l' 'l'
TYPE_STRING 's' 's'
TYPE_TUPLE '(' '('
TYPE_LIST '[' '['
TYPE_DICT '{' '{'
TYPE_CODE 'c' 'c'
TYPE_UNICODE 'u' 'u'
TYPE_UNKNOWN '?' '?'
TYPE_SET '<' '<'
TYPE_FROZENSET '>' '>'
TYPE_NULL '0' '0' '0'
TYPE_NONE 'N' 'N' 'N'
TYPE_FALSE 'F' 'F' 'F'
TYPE_TRUE 'T' 'T' 'T'
TYPE_STOPITER 'S' 'S' 'S'
TYPE_ELLIPSIS '.' '.' '.'
TYPE_INT 'i' 'i' 'i'
TYPE_INT64 'I' 'I' 'I'
TYPE_FLOAT 'f' 'f' 'f'
TYPE_BINARY_FLOAT 'g' 'g' 'g'
TYPE_COMPLEX 'x' 'x' 'x'
TYPE_BINARY_COMPLEX 'y' 'y' 'y'
TYPE_LONG 'l' 'l' 'l'
TYPE_STRING 's' 's' 's'
TYPE_TUPLE '(' '(' '('
TYPE_LIST '[' '[' '['
TYPE_DICT '{' '{' '{'
TYPE_CODE 'c' 'c' 'c'
TYPE_UNICODE 'u' 'u' 'u'
TYPE_UNKNOWN '?' '?' '?'
TYPE_SET '<' '<' '<'
TYPE_FROZENSET '>' '>' '>'
[TYPE_CODE] 1.0 1.3 1.5 2.1 2.3 3.0

View File

@@ -25,28 +25,30 @@ DECLARE_PYTHON(2, 6)
DECLARE_PYTHON(2, 7)
DECLARE_PYTHON(3, 0)
DECLARE_PYTHON(3, 1)
DECLARE_PYTHON(3, 2)
const char* Pyc::OpcodeName(int opcode)
{
static const char* opcode_names[] = {
"STOP_CODE", "POP_TOP", "ROT_TWO", "ROT_THREE", "DUP_TOP", "UNARY_POSITIVE",
"UNARY_NEGATIVE", "UNARY_NOT", "UNARY_CONVERT", "UNARY_CALL",
"UNARY_INVERT", "BINARY_POWER", "BINARY_MULTIPLY", "BINARY_DIVIDE",
"BINARY_MODULO", "BINARY_ADD", "BINARY_SUBTRACT", "BINARY_SUBSCR",
"BINARY_CALL", "SLICE_0", "SLICE_1", "SLICE_2", "SLICE_3", "STORE_SLICE_0",
"STORE_SLICE_1", "STORE_SLICE_2", "STORE_SLICE_3", "DELETE_SLICE_0",
"DELETE_SLICE_1", "DELETE_SLICE_2", "DELETE_SLICE_3", "STORE_SUBSCR",
"DELETE_SUBSCR", "BINARY_LSHIFT", "BINARY_RSHIFT", "BINARY_AND",
"BINARY_XOR", "BINARY_OR", "PRINT_EXPR", "PRINT_ITEM", "PRINT_NEWLINE",
"BREAK_LOOP", "RAISE_EXCEPTION", "LOAD_LOCALS", "RETURN_VALUE",
"LOAD_GLOBALS", "EXEC_STMT", "BUILD_FUNCTION", "POP_BLOCK", "END_FINALLY",
"BUILD_CLASS", "ROT_FOUR", "NOP", "LIST_APPEND", "BINARY_FLOOR_DIVIDE",
"BINARY_TRUE_DIVIDE", "INPLACE_FLOOR_DIVIDE", "INPLACE_TRUE_DIVIDE",
"STORE_MAP", "INPLACE_ADD", "INPLACE_SUBTRACT", "INPLACE_MULTIPLY",
"INPLACE_DIVIDE", "INPLACE_MODULO", "INPLACE_POWER", "GET_ITER",
"PRINT_ITEM_TO", "PRINT_NEWLINE_TO", "INPLACE_LSHIFT", "INPLACE_RSHIFT",
"INPLACE_AND", "INPLACE_XOR", "INPLACE_OR", "WITH_CLEANUP", "IMPORT_STAR",
"YIELD_VALUE", "LOAD_BUILD_CLASS", "STORE_LOCALS", "POP_EXCEPT", "SET_ADD",
"STOP_CODE", "POP_TOP", "ROT_TWO", "ROT_THREE", "DUP_TOP", "DUP_TOP_TWO",
"UNARY_POSITIVE", "UNARY_NEGATIVE", "UNARY_NOT", "UNARY_CONVERT",
"UNARY_CALL", "UNARY_INVERT", "BINARY_POWER", "BINARY_MULTIPLY",
"BINARY_DIVIDE", "BINARY_MODULO", "BINARY_ADD", "BINARY_SUBTRACT",
"BINARY_SUBSCR", "BINARY_CALL", "SLICE_0", "SLICE_1", "SLICE_2", "SLICE_3",
"STORE_SLICE_0", "STORE_SLICE_1", "STORE_SLICE_2", "STORE_SLICE_3",
"DELETE_SLICE_0", "DELETE_SLICE_1", "DELETE_SLICE_2", "DELETE_SLICE_3",
"STORE_SUBSCR", "DELETE_SUBSCR", "BINARY_LSHIFT", "BINARY_RSHIFT",
"BINARY_AND", "BINARY_XOR", "BINARY_OR", "PRINT_EXPR", "PRINT_ITEM",
"PRINT_NEWLINE", "BREAK_LOOP", "RAISE_EXCEPTION", "LOAD_LOCALS",
"RETURN_VALUE", "LOAD_GLOBALS", "EXEC_STMT", "BUILD_FUNCTION", "POP_BLOCK",
"END_FINALLY", "BUILD_CLASS", "ROT_FOUR", "NOP", "LIST_APPEND",
"BINARY_FLOOR_DIVIDE", "BINARY_TRUE_DIVIDE", "INPLACE_FLOOR_DIVIDE",
"INPLACE_TRUE_DIVIDE", "STORE_MAP", "INPLACE_ADD", "INPLACE_SUBTRACT",
"INPLACE_MULTIPLY", "INPLACE_DIVIDE", "INPLACE_MODULO", "INPLACE_POWER",
"GET_ITER", "PRINT_ITEM_TO", "PRINT_NEWLINE_TO", "INPLACE_LSHIFT",
"INPLACE_RSHIFT", "INPLACE_AND", "INPLACE_XOR", "INPLACE_OR",
"WITH_CLEANUP", "IMPORT_STAR", "YIELD_VALUE", "LOAD_BUILD_CLASS",
"STORE_LOCALS", "POP_EXCEPT", "SET_ADD",
"STORE_NAME", "DELETE_NAME", "UNPACK_TUPLE", "UNPACK_LIST", "UNPACK_ARG",
"STORE_ATTR", "DELETE_ATTR", "STORE_GLOBAL", "DELETE_GLOBAL",
@@ -60,8 +62,9 @@ const char* Pyc::OpcodeName(int opcode)
"CALL_FUNCTION_KW", "CALL_FUNCTION_VAR_KW", "UNPACK_SEQUENCE", "FOR_ITER",
"DUP_TOPX", "BUILD_SET", "JUMP_IF_FALSE_OR_POP", "JUMP_IF_TRUE_OR_POP",
"POP_JUMP_IF_FALSE", "POP_JUMP_IF_TRUE", "CONTINUE_LOOP", "MAKE_CLOSURE",
"LOAD_CLOSURE", "LOAD_DEREF", "STORE_DEREF", "EXTENDED_ARG", "SETUP_WITH",
"SET_ADD", "MAP_ADD", "UNPACK_EX", "LIST_APPEND"
"LOAD_CLOSURE", "LOAD_DEREF", "STORE_DEREF", "DELETE_DEREF",
"EXTENDED_ARG", "SETUP_WITH", "SET_ADD", "MAP_ADD", "UNPACK_EX",
"LIST_APPEND"
};
if (opcode < 0)
@@ -104,6 +107,7 @@ int Pyc::ByteToOpcode(int maj, int min, int opcode)
switch (min) {
case 0: return python_30_map(opcode);
case 1: return python_31_map(opcode);
case 2: return python_32_map(opcode);
}
break;
}

View File

@@ -6,9 +6,9 @@ namespace Pyc {
enum Opcode {
/* No parameter word */
STOP_CODE, POP_TOP, ROT_TWO, ROT_THREE, DUP_TOP, UNARY_POSITIVE,
UNARY_NEGATIVE, UNARY_NOT, UNARY_CONVERT, UNARY_CALL, UNARY_INVERT,
BINARY_POWER, BINARY_MULTIPLY, BINARY_DIVIDE, BINARY_MODULO,
STOP_CODE, POP_TOP, ROT_TWO, ROT_THREE, DUP_TOP, DUP_TOP_TWO,
UNARY_POSITIVE, UNARY_NEGATIVE, UNARY_NOT, UNARY_CONVERT, UNARY_CALL,
UNARY_INVERT, BINARY_POWER, BINARY_MULTIPLY, BINARY_DIVIDE, BINARY_MODULO,
BINARY_ADD, BINARY_SUBTRACT, BINARY_SUBSCR, BINARY_CALL,
SLICE_0, SLICE_1, SLICE_2, SLICE_3, STORE_SLICE_0, STORE_SLICE_1,
STORE_SLICE_2, STORE_SLICE_3, DELETE_SLICE_0, DELETE_SLICE_1,
@@ -40,8 +40,9 @@ enum Opcode {
CALL_FUNCTION_KW_A, CALL_FUNCTION_VAR_KW_A, UNPACK_SEQUENCE_A, FOR_ITER_A,
DUP_TOPX_A, BUILD_SET_A, JUMP_IF_FALSE_OR_POP_A, JUMP_IF_TRUE_OR_POP_A,
POP_JUMP_IF_FALSE_A, POP_JUMP_IF_TRUE_A, CONTINUE_LOOP_A, MAKE_CLOSURE_A,
LOAD_CLOSURE_A, LOAD_DEREF_A, STORE_DEREF_A, EXTENDED_ARG_A, SETUP_WITH_A,
SET_ADD_A, MAP_ADD_A, UNPACK_EX_A, LIST_APPEND_A,
LOAD_CLOSURE_A, LOAD_DEREF_A, STORE_DEREF_A, DELETE_DEREF_A,
EXTENDED_ARG_A, SETUP_WITH_A, SET_ADD_A, MAP_ADD_A, UNPACK_EX_A,
LIST_APPEND_A,
PYC_LAST_OPCODE,
PYC_INVALID_OPCODE = -1,

View File

@@ -18,7 +18,7 @@
maplist = [ 'python_10', 'python_11', 'python_13', 'python_14', 'python_15',
'python_16', 'python_20', 'python_21', 'python_22', 'python_23',
'python_24', 'python_25', 'python_26', 'python_27', 'python_30',
'python_31' ]
'python_31', 'python_32' ]
for mapfile in maplist:
infile = open(mapfile + '.map', 'rt')

101
bytes/python_32.map Normal file
View File

@@ -0,0 +1,101 @@
0 STOP_CODE
1 POP_TOP
2 ROT_TWO
3 ROT_THREE
4 DUP_TOP
5 DUP_TOP_TWO
9 NOP
10 UNARY_POSITIVE
11 UNARY_NEGATIVE
12 UNARY_NOT
15 UNARY_INVERT
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
54 STORE_MAP
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 STORE_LOCALS
70 PRINT_EXPR
71 LOAD_BUILD_CLASS
75 INPLACE_LSHIFT
76 INPLACE_RSHIFT
77 INPLACE_AND
78 INPLACE_XOR
79 INPLACE_OR
80 BREAK_LOOP
81 WITH_CLEANUP
83 RETURN_VALUE
84 IMPORT_STAR
86 YIELD_VALUE
87 POP_BLOCK
88 END_FINALLY
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
119 CONTINUE_LOOP_A
120 SETUP_LOOP_A
121 SETUP_EXCEPT_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
134 MAKE_CLOSURE_A
135 LOAD_CLOSURE_A
136 LOAD_DEREF_A
137 STORE_DEREF_A
138 DELETE_DEREF_A
140 CALL_FUNCTION_VAR_A
141 CALL_FUNCTION_KW_A
142 CALL_FUNCTION_VAR_KW_A
143 SETUP_WITH_A
144 EXTENDED_ARG_A
145 LIST_APPEND_A
146 SET_ADD_A
147 MAP_ADD_A

View File

@@ -109,6 +109,13 @@ void PycModule::setVersion(unsigned int magic)
m_unicode = true;
break;
/* 3.2 stops using the unicode increment */
case MAGIC_3_2:
m_maj = 3;
m_min = 2;
m_unicode = true;
break;
/* Bad Magic detected */
default:
m_maj = -1;

View File

@@ -23,6 +23,7 @@ enum PycMagic {
MAGIC_3_0 = 0x0A0D0C3A,
MAGIC_3_1 = 0x0A0D0C4E,
MAGIC_3_2 = 0x0A0D0C6C,
};
#define PYC_VERSION(maj, min) MAGIC_##maj##_##min