dalvikVM

register-based な VM は stack-based なソレと比較して

  • 移植性の確保は stack-based な方が用意
  • 命令サイズをより小さくすることができるのは stack-based なナニ

という特徴があるんですが、それでも dalvikVM は register-based な VM を採用してるのは一体何故かというあたりが以下なエントリにて記述されてました。

arm 狙い撃ちだったのか。たしかに dalvik/vm/mterp/out 配下なソレは

  • InterpAsm-allstubs.S
  • InterpAsm-asmv4t.S
  • InterpAsm-asmv5te.S
  • InterpAsm-asmv5te-vfp.S
  • InterpAsm-asmv7-a.S
  • InterpAsm-x86.S

という恐しい事になっております。

というヤツを見ておるのですが、あるオペレータに対してフォーマットが複数あり得るということは無いみたい。
ええと確か dexdump というツールを使えば .class なナニをデコンパイルできるとの事なんですが、bin/classes.dex を -d 付けて実行すれば良いみたいです。

$ dexdump -d bin/classes.dex

ちょっとこの classes.dex を掃き出すのは誰だろ、と言いつつ sdk なディレクトリを見てたら apkbuilder という shell script が tools の中にありますね。
末端で以下な命令があります。

exec java -Xmx128M $java_debug -classpath "$jarpath" com.android.sdklib.build.ApkBuilderMain "$@"

これが本体なのかな。

やれやれ

それにしても honeycomb のソースがなかなか公開されない件含め、自由なソフトウェアてきには微妙ッスね。(を