disassembler for jvm

disassembler for jvm
今天花了一点时间作了个x86上hotspot vm的disassembler,这样可以看出jvm生成的本地代码了。
代码比较简单,主要是用了udis86的库,这个可以在sf上下载到,它的接口还是比较简单的。

简单的例子,hotspot解析模式中iconst_0的对应汇编代码:
iconst_0  3 iconst_0  [0xb4d98120, 0xb4d98160]  64 bytes

  0xb4d98120: sub esp, 0x4
  0xb4d98123: fstp dword [esp]
  0xb4d98126: jmp 0x1e
  0xb4d9812b: sub esp, 0x8
  0xb4d9812e: fstp qword [esp]
  0xb4d98131: jmp 0x13
  0xb4d98136: push edx
  0xb4d98137: push eax
  0xb4d98138: jmp 0xc
  0xb4d9813d: push eax
  0xb4d9813e: jmp 0x6
  0xb4d98143: push eax
  0xb4d98144: xor eax, eax
  0xb4d98146: movzx ebx, byte [esi+0x1]
  0xb4d9814a: inc esi
  0xb4d9814b: jmp dword near [ebx*4+0x6900680]

你可能感兴趣的:(disassembler for jvm)