annotate paraspace/dalvik_opcodes.py @ 103:8a53e6f7f517

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