annotate paraspace/dalvik_opcodes.py @ 73:6d56483b56cd

Round size of encoded Dalvik instructions to 2 times. - Append '\x00's to the tail of instructions
author Thinker K.F. Li <thinker@codemud.net>
date Sat, 02 Jul 2011 00:09:50 +0800
parents 6c2efdeffa7b
children 9a64fa2d78b7
rev   line source
69
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1 OP_NOP = 0x00
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
2 OP_MOVE = 0x01
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
3 OP_MOVE_FROM16 = 0x02
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
4 OP_MOVE_16 = 0x03
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
5 OP_MOVE_WIDE = 0x04
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
6 OP_MOVE_WIDE_FROM16 = 0x05
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
7 OP_MOVE_WIDE_16 = 0x06
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
8 OP_MOVE_OBJECT = 0x07
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
9 OP_MOVE_OBJECT_FROM16 = 0x08
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
10 OP_MOVE_OBJECT_16 = 0x09
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
11 OP_MOVE_RESULT = 0x0a
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
12 OP_MOVE_RESULT_WIDE = 0x0b
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
13 OP_MOVE_RESULT_OBJECT = 0x0c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
14 OP_MOVE_EXCEPTION = 0x0d
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
15 OP_RETURN_VOID = 0x0e
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
16 OP_RETURN = 0x0f
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
17 OP_RETURN_WIDE = 0x10
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
18 OP_RETURN_OBJECT = 0x11
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
19 OP_CONST_4 = 0x12
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
20 OP_CONST_16 = 0x13
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
21 OP_CONST = 0x14
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
22 OP_CONST_HIGH16 = 0x15
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
23 OP_CONST_WIDE_16 = 0x16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
24 OP_CONST_WIDE_32 = 0x17
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
25 OP_CONST_WIDE = 0x18
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
26 OP_CONST_WIDE_HIGH16 = 0x19
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
27 OP_CONST_STRING = 0x1a
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
28 OP_CONST_STRING_JUMBO = 0x1b
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
29 OP_CONST_CLASS = 0x1c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
30 OP_MONITOR_ENTER = 0x1d
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
31 OP_MONITOR_EXIT = 0x1e
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
32 OP_CHECK_CAST = 0x1f
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
33 OP_INSTANCE_OF = 0x20
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
34 OP_ARRAY_LENGTH = 0x21
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
35 OP_NEW_INSTANCE = 0x22
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
36 OP_NEW_ARRAY = 0x23
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
37 OP_FILLED_NEW_ARRAY = 0x24
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
38 OP_FILLED_NEW_ARRAY_RANGE = 0x25
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
39 OP_FILL_ARRAY_DATA = 0x26
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
40 OP_THROW = 0x27
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
41 OP_GOTO = 0x28
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
42 OP_GOTO_16 = 0x29
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
43 OP_GOTO_32 = 0x2a
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
44 OP_PACKED_SWITCH = 0x2b
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
45 OP_SPARSE_SWITCH = 0x2c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
46 OP_CMPL_FLOAT = 0x2d
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
47 OP_CMPG_FLOAT = 0x2e
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
48 OP_CMPL_DOUBLE = 0x2f
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
49 OP_CMPG_DOUBLE = 0x30
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
50 OP_CMP_LONG = 0x31
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
51 OP_IF_EQ = 0x32
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
52 OP_IF_NE = 0x33
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
53 OP_IF_LT = 0x34
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
54 OP_IF_GE = 0x35
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
55 OP_IF_GT = 0x36
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
56 OP_IF_LE = 0x37
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
57 OP_IF_EQZ = 0x38
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
58 OP_IF_NEZ = 0x39
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
59 OP_IF_LTZ = 0x3a
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
60 OP_IF_GEZ = 0x3b
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
61 OP_IF_GTZ = 0x3c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
62 OP_IF_LEZ = 0x3d
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
63 OP_UNUSED_3E = 0x3e
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
64 OP_UNUSED_3F = 0x3f
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
65 OP_UNUSED_40 = 0x40
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
66 OP_UNUSED_41 = 0x41
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
67 OP_UNUSED_42 = 0x42
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
68 OP_UNUSED_43 = 0x43
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
69 OP_AGET = 0x44
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
70 OP_AGET_WIDE = 0x45
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
71 OP_AGET_OBJECT = 0x46
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
72 OP_AGET_BOOLEAN = 0x47
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
73 OP_AGET_BYTE = 0x48
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
74 OP_AGET_CHAR = 0x49
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
75 OP_AGET_SHORT = 0x4a
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
76 OP_APUT = 0x4b
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
77 OP_APUT_WIDE = 0x4c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
78 OP_APUT_OBJECT = 0x4d
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
79 OP_APUT_BOOLEAN = 0x4e
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
80 OP_APUT_BYTE = 0x4f
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
81 OP_APUT_CHAR = 0x50
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
82 OP_APUT_SHORT = 0x51
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
83 OP_IGET = 0x52
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
84 OP_IGET_WIDE = 0x53
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
85 OP_IGET_OBJECT = 0x54
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
86 OP_IGET_BOOLEAN = 0x55
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
87 OP_IGET_BYTE = 0x56
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
88 OP_IGET_CHAR = 0x57
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
89 OP_IGET_SHORT = 0x58
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
90 OP_IPUT = 0x59
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
91 OP_IPUT_WIDE = 0x5a
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
92 OP_IPUT_OBJECT = 0x5b
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
93 OP_IPUT_BOOLEAN = 0x5c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
94 OP_IPUT_BYTE = 0x5d
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
95 OP_IPUT_CHAR = 0x5e
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
96 OP_IPUT_SHORT = 0x5f
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
97 OP_SGET = 0x60
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
98 OP_SGET_WIDE = 0x61
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
99 OP_SGET_OBJECT = 0x62
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
100 OP_SGET_BOOLEAN = 0x63
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
101 OP_SGET_BYTE = 0x64
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
102 OP_SGET_CHAR = 0x65
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
103 OP_SGET_SHORT = 0x66
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
104 OP_SPUT = 0x67
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
105 OP_SPUT_WIDE = 0x68
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
106 OP_SPUT_OBJECT = 0x69
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
107 OP_SPUT_BOOLEAN = 0x6a
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
108 OP_SPUT_BYTE = 0x6b
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
109 OP_SPUT_CHAR = 0x6c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
110 OP_SPUT_SHORT = 0x6d
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
111 OP_INVOKE_VIRTUAL = 0x6e
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
112 OP_INVOKE_SUPER = 0x6f
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
113 OP_INVOKE_DIRECT = 0x70
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
114 OP_INVOKE_STATIC = 0x71
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
115 OP_INVOKE_INTERFACE = 0x72
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
116 OP_UNUSED_73 = 0x73
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
117 OP_INVOKE_VIRTUAL_RANGE = 0x74
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
118 OP_INVOKE_SUPER_RANGE = 0x75
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
119 OP_INVOKE_DIRECT_RANGE = 0x76
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
120 OP_INVOKE_STATIC_RANGE = 0x77
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
121 OP_INVOKE_INTERFACE_RANGE = 0x78
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
122 OP_UNUSED_79 = 0x79
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
123 OP_UNUSED_7A = 0x7a
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
124 OP_NEG_INT = 0x7b
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
125 OP_NOT_INT = 0x7c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
126 OP_NEG_LONG = 0x7d
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
127 OP_NOT_LONG = 0x7e
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
128 OP_NEG_FLOAT = 0x7f
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
129 OP_NEG_DOUBLE = 0x80
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
130 OP_INT_TO_LONG = 0x81
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
131 OP_INT_TO_FLOAT = 0x82
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
132 OP_INT_TO_DOUBLE = 0x83
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
133 OP_LONG_TO_INT = 0x84
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
134 OP_LONG_TO_FLOAT = 0x85
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
135 OP_LONG_TO_DOUBLE = 0x86
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
136 OP_FLOAT_TO_INT = 0x87
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
137 OP_FLOAT_TO_LONG = 0x88
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
138 OP_FLOAT_TO_DOUBLE = 0x89
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
139 OP_DOUBLE_TO_INT = 0x8a
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
140 OP_DOUBLE_TO_LONG = 0x8b
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
141 OP_DOUBLE_TO_FLOAT = 0x8c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
142 OP_INT_TO_BYTE = 0x8d
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
143 OP_INT_TO_CHAR = 0x8e
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
144 OP_INT_TO_SHORT = 0x8f
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
145 OP_ADD_INT = 0x90
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
146 OP_SUB_INT = 0x91
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
147 OP_MUL_INT = 0x92
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
148 OP_DIV_INT = 0x93
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
149 OP_REM_INT = 0x94
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
150 OP_AND_INT = 0x95
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
151 OP_OR_INT = 0x96
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
152 OP_XOR_INT = 0x97
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
153 OP_SHL_INT = 0x98
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
154 OP_SHR_INT = 0x99
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
155 OP_USHR_INT = 0x9a
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
156 OP_ADD_LONG = 0x9b
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
157 OP_SUB_LONG = 0x9c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
158 OP_MUL_LONG = 0x9d
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
159 OP_DIV_LONG = 0x9e
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
160 OP_REM_LONG = 0x9f
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
161 OP_AND_LONG = 0xa0
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
162 OP_OR_LONG = 0xa1
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
163 OP_XOR_LONG = 0xa2
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
164 OP_SHL_LONG = 0xa3
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
165 OP_SHR_LONG = 0xa4
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
166 OP_USHR_LONG = 0xa5
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
167 OP_ADD_FLOAT = 0xa6
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
168 OP_SUB_FLOAT = 0xa7
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
169 OP_MUL_FLOAT = 0xa8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
170 OP_DIV_FLOAT = 0xa9
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
171 OP_REM_FLOAT = 0xaa
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
172 OP_ADD_DOUBLE = 0xab
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
173 OP_SUB_DOUBLE = 0xac
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
174 OP_MUL_DOUBLE = 0xad
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
175 OP_DIV_DOUBLE = 0xae
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
176 OP_REM_DOUBLE = 0xaf
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
177 OP_ADD_INT_2ADDR = 0xb0
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
178 OP_SUB_INT_2ADDR = 0xb1
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
179 OP_MUL_INT_2ADDR = 0xb2
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
180 OP_DIV_INT_2ADDR = 0xb3
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
181 OP_REM_INT_2ADDR = 0xb4
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
182 OP_AND_INT_2ADDR = 0xb5
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
183 OP_OR_INT_2ADDR = 0xb6
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
184 OP_XOR_INT_2ADDR = 0xb7
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
185 OP_SHL_INT_2ADDR = 0xb8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
186 OP_SHR_INT_2ADDR = 0xb9
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
187 OP_USHR_INT_2ADDR = 0xba
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
188 OP_ADD_LONG_2ADDR = 0xbb
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
189 OP_SUB_LONG_2ADDR = 0xbc
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
190 OP_MUL_LONG_2ADDR = 0xbd
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
191 OP_DIV_LONG_2ADDR = 0xbe
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
192 OP_REM_LONG_2ADDR = 0xbf
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
193 OP_AND_LONG_2ADDR = 0xc0
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
194 OP_OR_LONG_2ADDR = 0xc1
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
195 OP_XOR_LONG_2ADDR = 0xc2
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
196 OP_SHL_LONG_2ADDR = 0xc3
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
197 OP_SHR_LONG_2ADDR = 0xc4
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
198 OP_USHR_LONG_2ADDR = 0xc5
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
199 OP_ADD_FLOAT_2ADDR = 0xc6
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
200 OP_SUB_FLOAT_2ADDR = 0xc7
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
201 OP_MUL_FLOAT_2ADDR = 0xc8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
202 OP_DIV_FLOAT_2ADDR = 0xc9
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
203 OP_REM_FLOAT_2ADDR = 0xca
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
204 OP_ADD_DOUBLE_2ADDR = 0xcb
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
205 OP_SUB_DOUBLE_2ADDR = 0xcc
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
206 OP_MUL_DOUBLE_2ADDR = 0xcd
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
207 OP_DIV_DOUBLE_2ADDR = 0xce
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
208 OP_REM_DOUBLE_2ADDR = 0xcf
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
209 OP_ADD_INT_LIT16 = 0xd0
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
210 OP_RSUB_INT = 0xd1
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
211 OP_MUL_INT_LIT16 = 0xd2
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
212 OP_DIV_INT_LIT16 = 0xd3
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
213 OP_REM_INT_LIT16 = 0xd4
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
214 OP_AND_INT_LIT16 = 0xd5
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
215 OP_OR_INT_LIT16 = 0xd6
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
216 OP_XOR_INT_LIT16 = 0xd7
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
217 OP_ADD_INT_LIT8 = 0xd8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
218 OP_RSUB_INT_LIT8 = 0xd9
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
219 OP_MUL_INT_LIT8 = 0xda
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
220 OP_DIV_INT_LIT8 = 0xdb
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
221 OP_REM_INT_LIT8 = 0xdc
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
222 OP_AND_INT_LIT8 = 0xdd
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
223 OP_OR_INT_LIT8 = 0xde
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
224 OP_XOR_INT_LIT8 = 0xdf
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
225 OP_SHL_INT_LIT8 = 0xe0
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
226 OP_SHR_INT_LIT8 = 0xe1
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
227 OP_USHR_INT_LIT8 = 0xe2
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
228 OP_UNUSED_E3 = 0xe3
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
229 OP_UNUSED_E4 = 0xe4
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
230 OP_UNUSED_E5 = 0xe5
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
231 OP_UNUSED_E6 = 0xe6
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
232 OP_UNUSED_E7 = 0xe7
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
233 OP_UNUSED_E8 = 0xe8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
234 OP_UNUSED_E9 = 0xe9
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
235 OP_UNUSED_EA = 0xea
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
236 OP_UNUSED_EB = 0xeb
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
237 OP_UNUSED_EC = 0xec
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
238 OP_UNUSED_ED = 0xed
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
239 OP_EXECUTE_INLINE = 0xee
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
240 OP_UNUSED_EF = 0xef
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
241 OP_INVOKE_DIRECT_EMPTY = 0xf0
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
242 OP_UNUSED_F1 = 0xf1
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
243 OP_IGET_QUICK = 0xf2
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
244 OP_IGET_WIDE_QUICK = 0xf3
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
245 OP_IGET_OBJECT_QUICK = 0xf4
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
246 OP_IPUT_QUICK = 0xf5
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
247 OP_IPUT_WIDE_QUICK = 0xf6
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
248 OP_IPUT_OBJECT_QUICK = 0xf7
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
249 OP_INVOKE_VIRTUAL_QUICK = 0xf8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
250 OP_INVOKE_VIRTUAL_QUICK_RANGE = 0xf9
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
251 OP_INVOKE_SUPER_QUICK = 0xfa
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
252 OP_INVOKE_SUPER_QUICK_RANGE = 0xfb
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
253 OP_UNUSED_FC = 0xfc
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
254 OP_UNUSED_FD = 0xfd
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
255 OP_UNUSED_FE = 0xfe
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
256 OP_UNUSED_FF = 0xff
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
257
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
258 _g = dict(globals())
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
259 opcode_names = sorted([name for name in _g if name.startswith('OP_')],
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
260 key=lambda name: _g[name])
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
261 name_2_opcodes = dict([(name, code) for name, code in _g.items()])
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
262 del _g
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
263
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
264 opcode_widths = [0] * 256
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
265
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
266 w1_ops = '''OP_NOP
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
267 OP_MOVE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
268 OP_MOVE_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
269 OP_MOVE_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
270 OP_MOVE_RESULT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
271 OP_MOVE_RESULT_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
272 OP_MOVE_RESULT_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
273 OP_MOVE_EXCEPTION
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
274 OP_RETURN_VOID
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
275 OP_RETURN
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
276 OP_RETURN_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
277 OP_RETURN_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
278 OP_CONST_4
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
279 OP_MONITOR_ENTER
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
280 OP_MONITOR_EXIT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
281 OP_ARRAY_LENGTH
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
282 OP_THROW
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
283 OP_GOTO
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
284 OP_NEG_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
285 OP_NOT_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
286 OP_NEG_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
287 OP_NOT_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
288 OP_NEG_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
289 OP_NEG_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
290 OP_INT_TO_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
291 OP_INT_TO_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
292 OP_INT_TO_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
293 OP_LONG_TO_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
294 OP_LONG_TO_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
295 OP_LONG_TO_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
296 OP_FLOAT_TO_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
297 OP_FLOAT_TO_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
298 OP_FLOAT_TO_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
299 OP_DOUBLE_TO_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
300 OP_DOUBLE_TO_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
301 OP_DOUBLE_TO_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
302 OP_INT_TO_BYTE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
303 OP_INT_TO_CHAR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
304 OP_INT_TO_SHORT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
305 OP_ADD_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
306 OP_SUB_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
307 OP_MUL_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
308 OP_DIV_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
309 OP_REM_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
310 OP_AND_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
311 OP_OR_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
312 OP_XOR_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
313 OP_SHL_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
314 OP_SHR_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
315 OP_USHR_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
316 OP_ADD_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
317 OP_SUB_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
318 OP_MUL_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
319 OP_DIV_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
320 OP_REM_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
321 OP_AND_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
322 OP_OR_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
323 OP_XOR_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
324 OP_SHL_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
325 OP_SHR_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
326 OP_USHR_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
327 OP_ADD_FLOAT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
328 OP_SUB_FLOAT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
329 OP_MUL_FLOAT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
330 OP_DIV_FLOAT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
331 OP_REM_FLOAT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
332 OP_ADD_DOUBLE_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
333 OP_SUB_DOUBLE_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
334 OP_MUL_DOUBLE_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
335 OP_DIV_DOUBLE_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
336 OP_REM_DOUBLE_2ADDR'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
337
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
338 for name in w1_ops:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
339 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
340 opcode_widths[opcode] = 1
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
341 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
342
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
343
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
344 w2_ops = '''OP_MOVE_FROM16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
345 OP_MOVE_WIDE_FROM16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
346 OP_MOVE_OBJECT_FROM16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
347 OP_CONST_16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
348 OP_CONST_HIGH16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
349 OP_CONST_WIDE_16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
350 OP_CONST_WIDE_HIGH16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
351 OP_CONST_STRING
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
352 OP_CONST_CLASS
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
353 OP_CHECK_CAST
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
354 OP_INSTANCE_OF
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
355 OP_NEW_INSTANCE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
356 OP_NEW_ARRAY
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
357 OP_CMPL_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
358 OP_CMPG_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
359 OP_CMPL_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
360 OP_CMPG_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
361 OP_CMP_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
362 OP_GOTO_16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
363 OP_IF_EQ
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
364 OP_IF_NE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
365 OP_IF_LT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
366 OP_IF_GE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
367 OP_IF_GT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
368 OP_IF_LE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
369 OP_IF_EQZ
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
370 OP_IF_NEZ
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
371 OP_IF_LTZ
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
372 OP_IF_GEZ
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
373 OP_IF_GTZ
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
374 OP_IF_LEZ
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
375 OP_AGET
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
376 OP_AGET_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
377 OP_AGET_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
378 OP_AGET_BOOLEAN
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
379 OP_AGET_BYTE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
380 OP_AGET_CHAR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
381 OP_AGET_SHORT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
382 OP_APUT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
383 OP_APUT_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
384 OP_APUT_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
385 OP_APUT_BOOLEAN
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
386 OP_APUT_BYTE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
387 OP_APUT_CHAR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
388 OP_APUT_SHORT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
389 OP_IGET
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
390 OP_IGET_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
391 OP_IGET_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
392 OP_IGET_BOOLEAN
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
393 OP_IGET_BYTE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
394 OP_IGET_CHAR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
395 OP_IGET_SHORT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
396 OP_IPUT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
397 OP_IPUT_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
398 OP_IPUT_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
399 OP_IPUT_BOOLEAN
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
400 OP_IPUT_BYTE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
401 OP_IPUT_CHAR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
402 OP_IPUT_SHORT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
403 OP_SGET
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
404 OP_SGET_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
405 OP_SGET_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
406 OP_SGET_BOOLEAN
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
407 OP_SGET_BYTE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
408 OP_SGET_CHAR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
409 OP_SGET_SHORT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
410 OP_SPUT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
411 OP_SPUT_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
412 OP_SPUT_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
413 OP_SPUT_BOOLEAN
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
414 OP_SPUT_BYTE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
415 OP_SPUT_CHAR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
416 OP_SPUT_SHORT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
417 OP_ADD_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
418 OP_SUB_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
419 OP_MUL_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
420 OP_DIV_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
421 OP_REM_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
422 OP_AND_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
423 OP_OR_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
424 OP_XOR_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
425 OP_SHL_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
426 OP_SHR_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
427 OP_USHR_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
428 OP_ADD_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
429 OP_SUB_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
430 OP_MUL_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
431 OP_DIV_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
432 OP_REM_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
433 OP_AND_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
434 OP_OR_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
435 OP_XOR_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
436 OP_SHL_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
437 OP_SHR_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
438 OP_USHR_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
439 OP_ADD_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
440 OP_SUB_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
441 OP_MUL_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
442 OP_DIV_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
443 OP_REM_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
444 OP_ADD_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
445 OP_SUB_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
446 OP_MUL_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
447 OP_DIV_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
448 OP_REM_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
449 OP_ADD_INT_LIT16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
450 OP_RSUB_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
451 OP_MUL_INT_LIT16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
452 OP_DIV_INT_LIT16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
453 OP_REM_INT_LIT16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
454 OP_AND_INT_LIT16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
455 OP_OR_INT_LIT16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
456 OP_XOR_INT_LIT16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
457 OP_ADD_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
458 OP_RSUB_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
459 OP_MUL_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
460 OP_DIV_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
461 OP_REM_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
462 OP_AND_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
463 OP_OR_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
464 OP_XOR_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
465 OP_SHL_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
466 OP_SHR_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
467 OP_USHR_INT_LIT8'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
468
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
469 for name in w2_ops:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
470 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
471 opcode_widths[opcode] = 2
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
472 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
473
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
474
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
475 w3_ops = '''OP_MOVE_16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
476 OP_MOVE_WIDE_16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
477 OP_MOVE_OBJECT_16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
478 OP_CONST
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
479 OP_CONST_WIDE_32
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
480 OP_CONST_STRING_JUMBO
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
481 OP_GOTO_32
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
482 OP_FILLED_NEW_ARRAY
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
483 OP_FILLED_NEW_ARRAY_RANGE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
484 OP_FILL_ARRAY_DATA
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
485 OP_PACKED_SWITCH
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
486 OP_SPARSE_SWITCH
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
487 OP_INVOKE_VIRTUAL
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
488 OP_INVOKE_SUPER
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
489 OP_INVOKE_DIRECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
490 OP_INVOKE_STATIC
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
491 OP_INVOKE_INTERFACE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
492 OP_INVOKE_VIRTUAL_RANGE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
493 OP_INVOKE_SUPER_RANGE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
494 OP_INVOKE_DIRECT_RANGE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
495 OP_INVOKE_STATIC_RANGE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
496 OP_INVOKE_INTERFACE_RANGE'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
497
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
498 for name in w3_ops:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
499 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
500 opcode_widths[opcode] = 3
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
501 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
502
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
503 opcode_widths[OP_CONST_WIDE] = 5
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
504
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
505 #
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
506 # Optimized instructions. We return negative size values for these
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
507 # to distinguish them.
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
508 #
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
509 w_2_ops = '''OP_IGET_QUICK
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
510 OP_IGET_WIDE_QUICK
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
511 OP_IGET_OBJECT_QUICK
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
512 OP_IPUT_QUICK
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
513 OP_IPUT_WIDE_QUICK
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
514 OP_IPUT_OBJECT_QUICK'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
515
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
516 for name in w_2_ops:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
517 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
518 opcode_widths[opcode] = -2
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
519 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
520
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
521
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
522 w_3_ops = '''OP_INVOKE_VIRTUAL_QUICK
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
523 OP_INVOKE_VIRTUAL_QUICK_RANGE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
524 OP_INVOKE_SUPER_QUICK
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
525 OP_INVOKE_SUPER_QUICK_RANGE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
526 OP_EXECUTE_INLINE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
527 OP_INVOKE_DIRECT_EMPTY'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
528
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
529 for name in w_3_ops:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
530 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
531 opcode_widths[opcode] = -3
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
532 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
533
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
534 w0_ops = '''OP_UNUSED_3E
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
535 OP_UNUSED_3F
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
536 OP_UNUSED_40
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
537 OP_UNUSED_41
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
538 OP_UNUSED_42
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
539 OP_UNUSED_43
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
540 OP_UNUSED_73
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
541 OP_UNUSED_79
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
542 OP_UNUSED_7A
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
543 OP_UNUSED_E3
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
544 OP_UNUSED_E4
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
545 OP_UNUSED_E5
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
546 OP_UNUSED_E6
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
547 OP_UNUSED_E7
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
548 OP_UNUSED_E8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
549 OP_UNUSED_E9
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
550 OP_UNUSED_EA
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
551 OP_UNUSED_EB
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
552 OP_UNUSED_EC
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
553 OP_UNUSED_ED
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
554 OP_UNUSED_EF
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
555 OP_UNUSED_F1
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
556 OP_UNUSED_FC
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
557 OP_UNUSED_FD
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
558 OP_UNUSED_FE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
559 OP_UNUSED_FF'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
560
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
561
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
562 kFmtUnknown = 0
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
563 kFmt10x = 1
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
564 kFmt12x = 2
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
565 kFmt11n = 3
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
566 kFmt11x = 4
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
567 kFmt10t = 5
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
568 kFmt20t = 6
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
569 kFmt22x = 7
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
570 kFmt21t = 8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
571 kFmt21s = 9
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
572 kFmt21h = 10
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
573 kFmt21c = 11
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
574 kFmt23x = 12
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
575 kFmt22b = 13
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
576 kFmt22t = 14
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
577 kFmt22s = 15
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
578 kFmt22c = 16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
579 kFmt22cs = 17
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
580 kFmt32x = 18
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
581 kFmt30t = 19
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
582 kFmt31t = 20
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
583 kFmt31i = 21
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
584 kFmt31c = 22
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
585 kFmt35c = 23
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
586 kFmt35ms = 24
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
587 kFmt35fs = 25
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
588 kFmt3rc = 26
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
589 kFmt3rms = 27
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
590 kFmt3rfs = 28
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
591 kFmt3inline = 29
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
592 kFmt51l = 30
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
593
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
594 fmt_names = '''kFmtUnknown
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
595 kFmt10x
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
596 kFmt12x
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
597 kFmt11n
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
598 kFmt11x
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
599 kFmt10t
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
600 kFmt20t
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
601 kFmt22x
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
602 kFmt21t
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
603 kFmt21s
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
604 kFmt21h
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
605 kFmt21c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
606 kFmt23x
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
607 kFmt22b
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
608 kFmt22t
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
609 kFmt22s
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
610 kFmt22c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
611 kFmt22cs
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
612 kFmt32x
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
613 kFmt30t
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
614 kFmt31t
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
615 kFmt31i
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
616 kFmt31c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
617 kFmt35c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
618 kFmt35ms
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
619 kFmt35fs
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
620 kFmt3rc
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
621 kFmt3rms
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
622 kFmt3rfs
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
623 kFmt3inline
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
624 kFmt51l
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
625 '''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
626
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
627 opcode_fmts = [0] * 256
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
628
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
629 opcode_fmts[OP_GOTO] = kFmt10t
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
630
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
631 names = '''OP_NOP
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
632 OP_RETURN_VOID'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
633 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
634 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
635 opcode_fmts[opcode] = kFmt10x
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
636 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
637
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
638
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
639 opcode_fmts[OP_CONST_4] = kFmt11n
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
640
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
641
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
642 names = '''OP_CONST_HIGH16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
643 OP_CONST_WIDE_HIGH16'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
644 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
645 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
646 opcode_fmts[opcode] = kFmt21h
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
647 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
648
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
649
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
650 names = '''OP_MOVE_RESULT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
651 OP_MOVE_RESULT_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
652 OP_MOVE_RESULT_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
653 OP_MOVE_EXCEPTION
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
654 OP_RETURN
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
655 OP_RETURN_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
656 OP_RETURN_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
657 OP_MONITOR_ENTER
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
658 OP_MONITOR_EXIT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
659 OP_THROW'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
660 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
661 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
662 opcode_fmts[opcode] = kFmt11x
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
663 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
664
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
665
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
666 names = '''OP_MOVE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
667 OP_MOVE_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
668 OP_MOVE_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
669 OP_ARRAY_LENGTH
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
670 OP_NEG_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
671 OP_NOT_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
672 OP_NEG_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
673 OP_NOT_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
674 OP_NEG_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
675 OP_NEG_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
676 OP_INT_TO_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
677 OP_INT_TO_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
678 OP_INT_TO_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
679 OP_LONG_TO_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
680 OP_LONG_TO_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
681 OP_LONG_TO_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
682 OP_FLOAT_TO_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
683 OP_FLOAT_TO_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
684 OP_FLOAT_TO_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
685 OP_DOUBLE_TO_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
686 OP_DOUBLE_TO_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
687 OP_DOUBLE_TO_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
688 OP_INT_TO_BYTE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
689 OP_INT_TO_CHAR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
690 OP_INT_TO_SHORT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
691 OP_ADD_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
692 OP_SUB_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
693 OP_MUL_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
694 OP_DIV_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
695 OP_REM_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
696 OP_AND_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
697 OP_OR_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
698 OP_XOR_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
699 OP_SHL_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
700 OP_SHR_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
701 OP_USHR_INT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
702 OP_ADD_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
703 OP_SUB_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
704 OP_MUL_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
705 OP_DIV_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
706 OP_REM_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
707 OP_AND_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
708 OP_OR_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
709 OP_XOR_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
710 OP_SHL_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
711 OP_SHR_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
712 OP_USHR_LONG_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
713 OP_ADD_FLOAT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
714 OP_SUB_FLOAT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
715 OP_MUL_FLOAT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
716 OP_DIV_FLOAT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
717 OP_REM_FLOAT_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
718 OP_ADD_DOUBLE_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
719 OP_SUB_DOUBLE_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
720 OP_MUL_DOUBLE_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
721 OP_DIV_DOUBLE_2ADDR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
722 OP_REM_DOUBLE_2ADDR'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
723 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
724 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
725 opcode_fmts[opcode] = kFmt12x
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
726 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
727
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
728
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
729 opcode_fmts[OP_GOTO_16] = kFmt20t
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
730 opcode_fmts[OP_GOTO_32] = kFmt30t
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
731
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
732
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
733 names = '''OP_CONST_STRING
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
734 OP_CONST_CLASS
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
735 OP_CHECK_CAST
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
736 OP_NEW_INSTANCE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
737 OP_SGET
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
738 OP_SGET_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
739 OP_SGET_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
740 OP_SGET_BOOLEAN
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
741 OP_SGET_BYTE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
742 OP_SGET_CHAR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
743 OP_SGET_SHORT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
744 OP_SPUT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
745 OP_SPUT_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
746 OP_SPUT_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
747 OP_SPUT_BOOLEAN
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
748 OP_SPUT_BYTE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
749 OP_SPUT_CHAR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
750 OP_SPUT_SHORT'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
751 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
752 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
753 opcode_fmts[opcode] = kFmt21c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
754 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
755
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
756 names = '''OP_CONST_16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
757 OP_CONST_WIDE_16'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
758 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
759 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
760 opcode_fmts[opcode] = kFmt21s
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
761 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
762
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
763
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
764 names = '''OP_IF_EQZ
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
765 OP_IF_NEZ
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
766 OP_IF_LTZ
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
767 OP_IF_GEZ
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
768 OP_IF_GTZ
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
769 OP_IF_LEZ'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
770 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
771 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
772 opcode_fmts[opcode] = kFmt21t
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
773 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
774
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
775
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
776 names = '''OP_FILL_ARRAY_DATA
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
777 OP_PACKED_SWITCH
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
778 OP_SPARSE_SWITCH'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
779 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
780 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
781 opcode_fmts[opcode] = kFmt31t
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
782 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
783
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
784
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
785 names = '''OP_ADD_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
786 OP_RSUB_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
787 OP_MUL_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
788 OP_DIV_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
789 OP_REM_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
790 OP_AND_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
791 OP_OR_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
792 OP_XOR_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
793 OP_SHL_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
794 OP_SHR_INT_LIT8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
795 OP_USHR_INT_LIT8'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
796 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
797 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
798 opcode_fmts[opcode] = kFmt22b
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
799 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
800
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
801
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
802 names = '''OP_INSTANCE_OF
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
803 OP_NEW_ARRAY
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
804 OP_IGET
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
805 OP_IGET_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
806 OP_IGET_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
807 OP_IGET_BOOLEAN
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
808 OP_IGET_BYTE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
809 OP_IGET_CHAR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
810 OP_IGET_SHORT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
811 OP_IPUT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
812 OP_IPUT_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
813 OP_IPUT_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
814 OP_IPUT_BOOLEAN
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
815 OP_IPUT_BYTE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
816 OP_IPUT_CHAR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
817 OP_IPUT_SHORT'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
818 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
819 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
820 opcode_fmts[opcode] = kFmt22c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
821 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
822
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
823
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
824 names = '''OP_ADD_INT_LIT16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
825 OP_RSUB_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
826 OP_MUL_INT_LIT16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
827 OP_DIV_INT_LIT16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
828 OP_REM_INT_LIT16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
829 OP_AND_INT_LIT16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
830 OP_OR_INT_LIT16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
831 OP_XOR_INT_LIT16'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
832 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
833 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
834 opcode_fmts[opcode] = kFmt22s
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
835 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
836
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
837
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
838 names = '''OP_IF_EQ
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
839 OP_IF_NE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
840 OP_IF_LT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
841 OP_IF_GE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
842 OP_IF_GT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
843 OP_IF_LE'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
844 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
845 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
846 opcode_fmts[opcode] = kFmt22t
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
847 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
848
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
849
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
850 names = '''OP_MOVE_FROM16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
851 OP_MOVE_WIDE_FROM16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
852 OP_MOVE_OBJECT_FROM16'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
853 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
854 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
855 opcode_fmts[opcode] = kFmt22x
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
856 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
857
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
858
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
859 names = '''OP_CMPL_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
860 OP_CMPG_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
861 OP_CMPL_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
862 OP_CMPG_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
863 OP_CMP_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
864 OP_AGET
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
865 OP_AGET_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
866 OP_AGET_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
867 OP_AGET_BOOLEAN
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
868 OP_AGET_BYTE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
869 OP_AGET_CHAR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
870 OP_AGET_SHORT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
871 OP_APUT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
872 OP_APUT_WIDE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
873 OP_APUT_OBJECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
874 OP_APUT_BOOLEAN
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
875 OP_APUT_BYTE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
876 OP_APUT_CHAR
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
877 OP_APUT_SHORT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
878 OP_ADD_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
879 OP_SUB_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
880 OP_MUL_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
881 OP_DIV_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
882 OP_REM_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
883 OP_AND_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
884 OP_OR_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
885 OP_XOR_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
886 OP_SHL_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
887 OP_SHR_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
888 OP_USHR_INT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
889 OP_ADD_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
890 OP_SUB_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
891 OP_MUL_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
892 OP_DIV_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
893 OP_REM_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
894 OP_AND_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
895 OP_OR_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
896 OP_XOR_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
897 OP_SHL_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
898 OP_SHR_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
899 OP_USHR_LONG
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
900 OP_ADD_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
901 OP_SUB_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
902 OP_MUL_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
903 OP_DIV_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
904 OP_REM_FLOAT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
905 OP_ADD_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
906 OP_SUB_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
907 OP_MUL_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
908 OP_DIV_DOUBLE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
909 OP_REM_DOUBLE'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
910 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
911 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
912 opcode_fmts[opcode] = kFmt23x
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
913 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
914
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
915
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
916 names = '''OP_CONST
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
917 OP_CONST_WIDE_32'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
918 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
919 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
920 opcode_fmts[opcode] = kFmt31i
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
921 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
922
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
923
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
924 opcode_fmts[OP_CONST_STRING_JUMBO] = kFmt31c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
925
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
926
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
927 names = '''OP_MOVE_16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
928 OP_MOVE_WIDE_16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
929 OP_MOVE_OBJECT_16'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
930 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
931 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
932 opcode_fmts[opcode] = kFmt32x
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
933 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
934
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
935
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
936 names = '''OP_FILLED_NEW_ARRAY
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
937 OP_INVOKE_VIRTUAL
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
938 OP_INVOKE_SUPER
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
939 OP_INVOKE_DIRECT
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
940 OP_INVOKE_STATIC
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
941 OP_INVOKE_INTERFACE'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
942 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
943 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
944 opcode_fmts[opcode] = kFmt35c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
945 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
946
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
947
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
948 names = '''OP_FILLED_NEW_ARRAY_RANGE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
949 OP_INVOKE_VIRTUAL_RANGE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
950 OP_INVOKE_SUPER_RANGE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
951 OP_INVOKE_DIRECT_RANGE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
952 OP_INVOKE_STATIC_RANGE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
953 OP_INVOKE_INTERFACE_RANGE'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
954 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
955 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
956 opcode_fmts[opcode] = kFmt3rc
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
957 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
958
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
959
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
960 opcode_fmts[OP_CONST_WIDE] = kFmt51l
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
961
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
962
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
963 names = '''OP_IGET_QUICK
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
964 OP_IGET_WIDE_QUICK
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
965 OP_IGET_OBJECT_QUICK
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
966 OP_IPUT_QUICK
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
967 OP_IPUT_WIDE_QUICK
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
968 OP_IPUT_OBJECT_QUICK'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
969 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
970 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
971 opcode_fmts[opcode] = kFmt22cs
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
972 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
973
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
974
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
975 names = '''OP_INVOKE_VIRTUAL_QUICK
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
976 OP_INVOKE_SUPER_QUICK'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
977 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
978 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
979 opcode_fmts[opcode] = kFmt35ms
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
980 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
981
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
982
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
983 names = '''OP_INVOKE_VIRTUAL_QUICK_RANGE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
984 OP_INVOKE_SUPER_QUICK_RANGE'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
985 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
986 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
987 opcode_fmts[opcode] = kFmt3rms
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
988 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
989
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
990
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
991 opcode_fmts[OP_EXECUTE_INLINE] = kFmt3inline
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
992
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
993 opcode_fmts[OP_INVOKE_DIRECT_EMPTY] = kFmt35c
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
994
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
995
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
996 names = '''OP_UNUSED_3E
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
997 OP_UNUSED_3F
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
998 OP_UNUSED_40
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
999 OP_UNUSED_41
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1000 OP_UNUSED_42
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1001 OP_UNUSED_43
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1002 OP_UNUSED_73
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1003 OP_UNUSED_79
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1004 OP_UNUSED_7A
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1005 OP_UNUSED_E3
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1006 OP_UNUSED_E4
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1007 OP_UNUSED_E5
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1008 OP_UNUSED_E6
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1009 OP_UNUSED_E7
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1010 OP_UNUSED_E8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1011 OP_UNUSED_E9
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1012 OP_UNUSED_EA
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1013 OP_UNUSED_EB
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1014 OP_UNUSED_EC
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1015 OP_UNUSED_ED
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1016 OP_UNUSED_EF
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1017 OP_UNUSED_F1
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1018 OP_UNUSED_FC
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1019 OP_UNUSED_FD
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1020 OP_UNUSED_FE
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1021 OP_UNUSED_FF'''.split()
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1022 for name in names:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1023 opcode = name_2_opcodes[name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1024 opcode_fmts[opcode] = kFmtUnknown
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1025 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1026
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1027
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1028 fmt_fmtstr = {
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1029 'kFmtUnknown': '',
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1030 'kFmt10x': '',
70
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1031 'kFmt12x': 'v{0}, v{1}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1032 'kFmt11n': 'v{0}, #+{1}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1033 'kFmt11x': 'v{0}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1034 'kFmt10t': '+{0}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1035 'kFmt20t': '+{0}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1036 'kFmt22x': 'v{0}, {1:04x}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1037 'kFmt21t': 'v{0}, +{1:04x}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1038 'kFmt21s': 'v{0}, #+{1:04x}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1039 'kFmt21h': 'v{0}, #+{1:04x}00000[00000000]',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1040 'kFmt21c': 'v{0}, thing@{:04x}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1041 'kFmt23x': 'v{0}, v{1}, v{2}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1042 'kFmt22b': 'v{0}, v{1}, #+{2:02x}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1043 'kFmt22t': 'v{0}, v{1}, +{2:04x}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1044 'kFmt22s': 'v{0}, v{1}, #+{2:04x}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1045 'kFmt22c': 'v{0}, v{1}, thing@{2:04x}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1046 'kFmt22cs': 'v0{}, v{1}, field offset {2:04x}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1047 'kFmt32x': 'v{0:04x}, v{1:04x}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1048 'kFmt30t': '+{0:08x}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1049 'kFmt31t': 'v{0}, +{1:08x}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1050 'kFmt31i': 'v{0}, #+{1:08x}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1051 'kFmt31c': 'v{0}, thing@{1:08x}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1052 'kFmt35c': '{{v{3}, v{4}, v{5}, v{6}, v{0}}}, thing@{2:04x} ({1}: count, A: vG)',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1053 'kFmt35ms': '{{v{3}, v{4}, v{5}, v{6}, v{0}}}, thing@{2:04x} ({1}: count, A: vG)',
69
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1054 'kFmt35fs': 'invoke-interface',
70
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1055 'kFmt3rc': '{{v{2:04x} .. v({2:04x}+{0:02x}-1)}}, meth@{1:04x}',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1056 'kFmt3rms': '{{v{2:04x} .. v({2:04x}+{0:02x}-1)}}, meth@{1:04x}',
69
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1057 'kFmt3rfs': 'invoke-interface/range',
70
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1058 'kFmt3inline': '{{v{3}, v{4}, v{5}, v{6}}} thing@{2:04x} ({1}: count)',
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1059 'kFmt51l': 'v{0}, #+{1:016x}'
69
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1060 }
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1061
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1062 fmt_parse_cfgs = {
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1063 'kFmtUnknown': (), # ''
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1064 'kFmt10x': (), # ''
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1065 'kFmt12x': (1, 1), # 'vA, vB'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1066 'kFmt11n': (1, 2), # 'vA, #+B'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1067 'kFmt11x': (2,), # 'vAA'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1068 'kFmt10t': (2,), # '+AA'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1069 'kFmt20t': (4,), # '+AAAA'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1070 'kFmt22x': (2, 4), # 'vAA, vBBBB'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1071 'kFmt21t': (2, 4), # 'vAA, +BBBB'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1072 'kFmt21s': (2, 4), # 'vAA, #+BBBB'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1073 'kFmt21h': (2, 4), # 'vAA, #+BBBB00000[00000000]'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1074 'kFmt21c': (2, 4), # 'vAA, thing@BBBB'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1075 'kFmt23x': (2, 2, 2), # 'vAA, vBB, vCC'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1076 'kFmt22b': (2, 2, 2), # 'vAA, vBB, #+CC'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1077 'kFmt22t': (1, 1, 4), # 'vA, vB, +CCCC'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1078 'kFmt22s': (1, 1, 4), # 'vA, vB, #+CCCC'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1079 'kFmt22c': (1, 1, 4), # 'vA, vB, thing@CCCC'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1080 'kFmt22cs': (1, 1, 4), # 'vA, vB, field offset CCCC'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1081 'kFmt32x': (4, 4), # 'vAAAA, vBBBB'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1082 'kFmt30t': (8,), # '+AAAAAAAA'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1083 'kFmt31t': (2, 8), # 'vAA, +BBBBBBBB'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1084 'kFmt31i': (2, 8), # 'vAA, #+BBBBBBBB'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1085 'kFmt31c': (2, 8), # 'vAA, thing@BBBBBBBB'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1086 # '{vC, vD, vE, vF, vG}, thing@BBBB (B: count, A: vG)'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1087 'kFmt35c': (1, 1, 4, 1, 1, 1, 1),
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1088 'kFmt35ms': (1, 1, 4, 1, 1, 1, 1), # 'invoke-virtual+super'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1089 'kFmt35fs': (), # 'invoke-interface'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1090 'kFmt3rc': (2, 4, 4), # '{vCCCC .. v(CCCC+AA-1)}, meth@BBBB'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1091 'kFmt3rms': (2, 4, 4), # 'invoke-virtual+super/range'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1092 'kFmt3rfs': (), # 'invoke-interface/range'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1093 'kFmt3inline': (1, 1, 4, 1, 1, 1, 1), # 'inline invoke'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1094 'kFmt51l': (2, 16) # 'vAA, #+BBBBBBBBBBBBBBBB'
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1095 }
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1096
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1097 def decode_inst(insn):
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1098 def build_arg(sz):
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1099 if sz == 1:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1100 if build_arg.off & 0x1:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1101 arg = ord(insn[build_arg.off / 2]) >> 4
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1102 else:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1103 arg = ord(insn[build_arg.off / 2]) & 0xf
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1104 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1105 build_arg.off = build_arg.off + 1
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1106 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1107 elif sz == 2:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1108 build_arg.off = (build_arg.off + 1) & ~0x1
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1109 arg = ord(insn[build_arg.off / 2])
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1110 build_arg.off = build_arg.off + 2
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1111 elif sz == 4:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1112 build_arg.off = (build_arg.off + 3) & ~0x3
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1113 arg = ord(insn[build_arg.off / 2]) | \
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1114 (ord(insn[build_arg.off / 2 + 1]) << 8)
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1115 build_arg.off = build_arg.off + 4
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1116 elif sz == 8:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1117 build_arg.off = (build_arg.off + 3) & ~0x3
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1118 arg = ord(insn[build_arg.off / 2]) | \
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1119 (ord(insn[build_arg.off / 2 + 1]) << 8) | \
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1120 (ord(insn[build_arg.off / 2 + 2]) << 16)| \
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1121 (ord(insn[build_arg.off / 2 + 3]) << 24)
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1122 build_arg.off = build_arg.off + 8
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1123 elif sz == 16:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1124 build_arg.off = (build_arg.off + 3) & ~0x3
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1125 arg = ord(insn[build_arg.off / 2]) | \
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1126 (ord(insn[build_arg.off / 2 + 1]) << 8) | \
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1127 (ord(insn[build_arg.off / 2 + 2]) << 16)| \
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1128 (ord(insn[build_arg.off / 2 + 3]) << 24)| \
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1129 (ord(insn[build_arg.off / 2 + 4]) << 32)| \
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1130 (ord(insn[build_arg.off / 2 + 5]) << 40)| \
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1131 (ord(insn[build_arg.off / 2 + 6]) << 48)| \
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1132 (ord(insn[build_arg.off / 2 + 7]) << 52)
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1133 build_arg.off = build_arg.off + 16
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1134 else:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1135 raise ValueError, 'Invalid argument size %d' % (sz)
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1136
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1137 return arg
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1138
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1139 build_arg.off = 2
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1140
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1141 opcode = ord(insn[0])
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1142
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1143 fmt = opcode_fmts[opcode]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1144 fmt_name = fmt_names[fmt]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1145 fmt_parse_cfg = fmt_parse_cfgs[fmt_name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1146
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1147 args = tuple([build_arg(sz) for sz in fmt_parse_cfg])
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1148 op_vector = (opcode, args)
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1149 return op_vector
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1150
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1151
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1152 def encode_inst(op_vector):
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1153 def encode_arg(arg, sz):
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1154 if sz == 1:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1155 if encode_arg.off & 0x1:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1156 arg_txt = chr((arg << 4) | encode_arg.value)
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1157 else:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1158 arg_txt = ''
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1159 encode_arg.value = arg
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1160 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1161 encode_arg.off = encode_arg.off + 1
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1162 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1163 elif sz in (2, 4, 8, 16):
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1164 if encode_arg.off & 0x1:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1165 arg_txt = chr(encode_arg.value)
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1166 encode_arg.off = encode_arg.off + 1
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1167 else:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1168 arg_txt = ''
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1169 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1170 if sz == 2:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1171 arg_txt = arg_txt + chr(arg)
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1172 encode_arg.off = encode_arg.off + 2
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1173 elif sz in (4, 8, 16):
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1174 while encode_arg.off % 4:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1175 encode_arg.off = encoe_arg.off + 1
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1176 arg_txt = arg_txt + chr(0)
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1177 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1178 for i in range(sz / 4):
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1179 arg_txt = arg_txt + \
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1180 chr(arg & 0xff) + chr((arg >> 8) & 0xff)
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1181 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1182 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1183 pass
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1184 else:
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1185 raise ValueError, 'invalid argument size %d' % (sz)
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1186
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1187 return arg_txt
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1188 encode_arg.off = 2
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1189 encode_arg.value = 0
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1190
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1191 opcode, args = op_vector
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1192
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1193 fmt = opcode_fmts[opcode]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1194 fmt_name = fmt_names[fmt]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1195 fmt_parse_cfg = fmt_parse_cfgs[fmt_name]
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1196 arg_part = ''.join([encode_arg(arg, sz)
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1197 for arg, sz in map(None, args, fmt_parse_cfg)])
72
6c2efdeffa7b Strip instruction string for opcode with no any argument.
Thinker K.F. Li <thinker@codemud.net>
parents: 70
diff changeset
1198
73
6d56483b56cd Round size of encoded Dalvik instructions to 2 times.
Thinker K.F. Li <thinker@codemud.net>
parents: 72
diff changeset
1199 while encode_arg.off % 4:
6d56483b56cd Round size of encoded Dalvik instructions to 2 times.
Thinker K.F. Li <thinker@codemud.net>
parents: 72
diff changeset
1200 arg_part = arg_part + encode_arg(0, 1)
6d56483b56cd Round size of encoded Dalvik instructions to 2 times.
Thinker K.F. Li <thinker@codemud.net>
parents: 72
diff changeset
1201 pass
6d56483b56cd Round size of encoded Dalvik instructions to 2 times.
Thinker K.F. Li <thinker@codemud.net>
parents: 72
diff changeset
1202
72
6c2efdeffa7b Strip instruction string for opcode with no any argument.
Thinker K.F. Li <thinker@codemud.net>
parents: 70
diff changeset
1203 inst = chr(opcode) + arg_part
6c2efdeffa7b Strip instruction string for opcode with no any argument.
Thinker K.F. Li <thinker@codemud.net>
parents: 70
diff changeset
1204
69
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1205 return inst
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1206
70
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1207
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1208 def format_inst(op_vector):
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1209 opcode, args = op_vector
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1210
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1211 opname = opcode_names[opcode]
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1212
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1213 fmt = opcode_fmts[opcode]
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1214 fmt_name = fmt_names[fmt]
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1215 fmt_str = fmt_fmtstr[fmt_name]
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1216
72
6c2efdeffa7b Strip instruction string for opcode with no any argument.
Thinker K.F. Li <thinker@codemud.net>
parents: 70
diff changeset
1217 if fmt_str:
6c2efdeffa7b Strip instruction string for opcode with no any argument.
Thinker K.F. Li <thinker@codemud.net>
parents: 70
diff changeset
1218 line = opname + ' ' + fmt_str.format(*args)
6c2efdeffa7b Strip instruction string for opcode with no any argument.
Thinker K.F. Li <thinker@codemud.net>
parents: 70
diff changeset
1219 else:
6c2efdeffa7b Strip instruction string for opcode with no any argument.
Thinker K.F. Li <thinker@codemud.net>
parents: 70
diff changeset
1220 line = opname
6c2efdeffa7b Strip instruction string for opcode with no any argument.
Thinker K.F. Li <thinker@codemud.net>
parents: 70
diff changeset
1221 pass
70
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1222 return line
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1223
16a5a8eb1831 Add format_inst() in dalvik_opcodes.py
Thinker K.F. Li <thinker@codemud.net>
parents: 69
diff changeset
1224
69
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1225 del name
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1226 del names
d07fd67e2b08 Add dalvik_opcode.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1227 del opcode