有一陣子沒碰Google Android,不過自從上次聽完Google Developer Day之後,對於Dalvik virtual machine內部的設計以及不同於JVM所客製化設計的「Shared Constant Pool」就一直抱持著想一探究竟的興趣~ 所以今天簡單的試了一下~ 想看看這樣以Register-based VM在opcode上面的執行情況是如何~
我用Google Android SDK所提供的小工具「dx」來看看「.dex」(Dalvik Executable)的檔案格式~
dx --verbose-dump --dex --dump-to=FirstAndroid.dump FirstAndroid.class
不過為何那一個個opcode都被「code-address」所取代掉了...?
.................... |codes: 0001c8: 0400 0000 |[1c8] tw.idv.ring.FirstAndroid.<init>:()V |0000: code-address |0000: code-address |0000: code-address |0000: code-address |0000: code-address |0000: code-address 0001cc: 7001 0000 0000 |0000: invoke-direct {v0}, android.app.Activity.<init>:()V // method@0000 |0003: code-address |0003: code-address 0001d2: 0e00 |0003: return-void |0004: code-address |debug info @ [2f9] |line starts at 7 |00000000: prologue end |00000000: line 7 |End Sequence ....................
有人知道怎麼dump出這些「.dex」格式所對應的opcode嗎?
我不是很了解整個Android~ 希望有人可以分享~ ^^
相關資源