posts - 12,comments - 1,trackbacks - 0
          今天花了一點時間作了個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]

          posted on 2008-08-24 00:28 白色天堂 閱讀(183) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 博乐市| 巴东县| 西乡县| 荣成市| 尉犁县| 霍林郭勒市| 茂名市| 韶山市| 招远市| 浙江省| 柳林县| 大英县| 逊克县| 锡林浩特市| 临汾市| 盐源县| 南和县| 宣恩县| 航空| 沂源县| 股票| 阳信县| 台东县| 屏南县| 龙山县| 雷山县| 大石桥市| 合肥市| 遵义县| 邻水| 岑巩县| 东方市| 马龙县| 贵阳市| 武汉市| 庆云县| 奉新县| 阿巴嘎旗| 阜城县| 蒲江县| 上杭县|