windows下idea查看java編譯後的彙編代碼

第一步:下載hsdis

第二步:將hsdis-amd64.dll存放到..\jdk1.8.0_171\jre\bin\server目錄下

              將hsdis-amd65.dll和hsdis-i386.dll存放到\jre1.8.0_171\bin\server目錄下

第三步:打開IDEA,run>>Edit Configurations

第四步:在VM options裏輸入下面的指令

-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -XX:+PrintCompilation

 

第五步: 運行程序。下面只貼出了部分代碼。

    164    1       4       java.lang.String::hashCode (55 bytes)
Loaded disassembler from C:\Program Files\Java\jdk1.8.0_171\jre\bin\server\hsdis-amd64.dll
Decoding compiled method 0x00000000038c07d0:
Code:
[Disassembling for mach='i386:x86-64']
[Entry Point]
[Constants]
  # {method} {0x000000001c5e4fc0} 'hashCode' '()I' in 'java/lang/String'
  #           [sp+0x30]  (sp of caller)
  0x00000000038c0900: mov    0x8(%rdx),%r10d
  0x00000000038c0904: shl    $0x3,%r10
  0x00000000038c0908: cmp    %r10,%rax
  0x00000000038c090b: jne    0x0000000003895f60  ;   {runtime_call}
  0x00000000038c0911: data16 xchg %ax,%ax
  0x00000000038c0914: nopl   0x0(%rax,%rax,1)
  0x00000000038c091c: data16 data16 xchg %ax,%ax
[Verified Entry Point]
  0x00000000038c0920: mov    %eax,-0x6000(%rsp)
  0x00000000038c0927: push   %rbp
  0x00000000038c0928: sub    $0x20,%rsp         ;*synchronization entry
                                                ; - java.lang.String::hashCode@-1 (line 1466)

  0x00000000038c092c: mov    %rdx,%rbx
  0x00000000038c092f: mov    0x10(%rdx),%eax    ;*getfield hash
                                                ; - java.lang.String::hashCode@1 (line 1466)

  0x00000000038c0932: test   %eax,%eax
  0x00000000038c0934: jne    0x00000000038c0a25  ;*ifne
                                                ; - java.lang.String::hashCode@6 (line 1467)

這樣就能看到java文件編譯後的彙編代碼。

發佈了33 篇原創文章 · 獲贊 0 · 訪問量 6182
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章