Mercurial > paraspace
annotate paraspace/dump_code.py @ 141:90690a001172
Fixing back to back association and encoding issue.
- Fix problem of _deoptimize_classdata() and _optimize_classdata()
- They don't deoptimize or optimize field indices for _DEX_ClassData.
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Sun, 14 Aug 2011 21:18:48 +0800 |
parents | 8a53e6f7f517 |
children |
rev | line source |
---|---|
84 | 1 from paraspace.dexfile import DEXFile |
103
8a53e6f7f517
Provide convinience API to convert str block into opcode vectors
Thinker K.F. Li <thinker@codemud.net>
parents:
84
diff
changeset
|
2 from paraspace.dalvik_opcodes import decode_insn_blk, format_inst |
84 | 3 |
4 | |
5 def dump_code_item(item, dex): | |
6 print 'registersSize: %d' % (item.registersSize) | |
7 print 'insSize: %d' % (item.insSize) | |
8 print 'outsSize: %d' % (item.outsSize) | |
9 print 'triesSize: %d' % (item.triesSize) | |
10 print 'debugInfoOff: 0x%x' % (item.debugInfoOff) | |
11 print 'insnsSize: %d' % (item.insnsSize) | |
12 block = item.insns.data | |
103
8a53e6f7f517
Provide convinience API to convert str block into opcode vectors
Thinker K.F. Li <thinker@codemud.net>
parents:
84
diff
changeset
|
13 op_vectors = decode_insn_blk(block) |
84 | 14 for op_vector in op_vectors: |
15 op_str = format_inst(op_vector) | |
16 print '\t%s' % (op_str) | |
17 pass | |
18 pass | |
19 | |
20 | |
21 def dump_code_items_filename(fn): | |
22 dex = DEXFile.open(fn) | |
23 items = dex.codeItems.items | |
24 for item in items: | |
25 dump_code_item(item, dex) | |
26 pass | |
27 pass | |
28 | |
29 | |
30 if __name__ == '__main__': | |
31 import sys | |
32 | |
33 if len(sys.argv) != 2: | |
34 print >> sys.stderr, 'Usage: %s <dex file>' % (sys.argv[0]) | |
35 sys.exit(1) | |
36 pass | |
37 | |
38 fn = sys.argv[1] | |
39 dump_code_items_filename(fn) | |
40 pass |