• 查看Java的汇编指令


    在IDEA配置VM options,打印汇编指令

    -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly

    windows系统 下载插件 hsdis-amd64.dll  链接: https://pan.baidu.com/s/1gltHHQQRqjb2dspJXkUekw 提取码: xc2w 

    放在目录 jdk1.8.0_121jreinserver 下

    执行main函数即可

    "C:Program FilesJavajdk1.8.0_121injava" -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly "-javaagent:C:Program FilesJetBrainsIntelliJ IDEA 2017.1.3libidea_rt.jar=65255:C:Program FilesJetBrainsIntelliJ IDEA 2017.1.3in" -Dfile.encoding=UTF-8 -classpath "C:Program FilesJavajdk1.8.0_121jrelibcharsets.jar;C:Program FilesJavajdk1.8.0_121jrelibdeploy.jar;C:Program FilesJavajdk1.8.0_121jrelibextaccess-bridge-64.jar;C:Program FilesJavajdk1.8.0_121jrelibextcldrdata.jar;C:Program FilesJavajdk1.8.0_121jrelibextdnsns.jar;C:Program FilesJavajdk1.8.0_121jrelibextjaccess.jar;C:Program FilesJavajdk1.8.0_121jrelibextjfxrt.jar;C:Program FilesJavajdk1.8.0_121jrelibextlocaledata.jar;C:Program FilesJavajdk1.8.0_121jrelibext
    ashorn.jar;C:Program FilesJavajdk1.8.0_121jrelibextsunec.jar;C:Program FilesJavajdk1.8.0_121jrelibextsunjce_provider.jar;C:Program FilesJavajdk1.8.0_121jrelibextsunmscapi.jar;C:Program FilesJavajdk1.8.0_121jrelibextsunpkcs11.jar;C:Program FilesJavajdk1.8.0_121jrelibextzipfs.jar;C:Program FilesJavajdk1.8.0_121jrelibjavaws.jar;C:Program FilesJavajdk1.8.0_121jrelibjce.jar;C:Program FilesJavajdk1.8.0_121jrelibjfr.jar;C:Program FilesJavajdk1.8.0_121jrelibjfxswt.jar;C:Program FilesJavajdk1.8.0_121jrelibjsse.jar;C:Program FilesJavajdk1.8.0_121jrelibmanagement-agent.jar;C:Program FilesJavajdk1.8.0_121jrelibplugin.jar;C:Program FilesJavajdk1.8.0_121jrelib
    esources.jar;C:Program FilesJavajdk1.8.0_121jrelib
    t.jar;C:vat	est-demo(1)	est-demo	argetclasses;C:vat	est-demo(1)	est-demosrclibedf-openapi-sdk-0.1.14.jar;C:vat	est-demo(1)	est-demosrclibfapiao-openapi-sdk-0.1.1.jar;C:vat	est-demo(1)	est-demosrclibcommons-codec-1.11.jar;C:vat	est-demo(1)	est-demosrclibcommons-lang3-3.7.jar;C:vat	est-demo(1)	est-demosrclibdom4j-2.0.2.jar;C:vat	est-demo(1)	est-demosrclibfastjson-1.2.47.jar;C:vat	est-demo(1)	est-demosrclibgroovy-all-2.4.9.jar;C:vat	est-demo(1)	est-demosrclibguava-19.0.jar;C:vat	est-demo(1)	est-demosrclibhamcrest-core-1.3.jar;C:vat	est-demo(1)	est-demosrclibjaxen-1.1.6.jar;C:vat	est-demo(1)	est-demosrclibjunit-4.11.jar;C:vat	est-demo(1)	est-demosrcliblogback-classic-1.2.3.jar;C:vat	est-demo(1)	est-demosrcliblogback-core-1.2.3.jar;C:vat	est-demo(1)	est-demosrcliblombok-1.18.8.jar;C:vat	est-demo(1)	est-demosrclibokhttp-3.3.0.jar;C:vat	est-demo(1)	est-demosrclibokio-1.8.0.jar;C:vat	est-demo(1)	est-demosrclibslf4j-api-1.7.26.jar;C:vat	est-demo(1)	est-demosrclibspock-core-1.1-groovy-2.4.jar;C:softwareapache-maven-3.3.3
    epository
    etsfjson-libjson-lib2.4json-lib-2.4-jdk15.jar;C:softwareapache-maven-3.3.3
    epositorycommons-beanutilscommons-beanutils1.8.0commons-beanutils-1.8.0.jar;C:softwareapache-maven-3.3.3
    epositorycommons-collectionscommons-collections3.2.1commons-collections-3.2.1.jar;C:softwareapache-maven-3.3.3
    epositorycommons-langcommons-lang2.5commons-lang-2.5.jar;C:softwareapache-maven-3.3.3
    epositorycommons-loggingcommons-logging1.1.1commons-logging-1.1.1.jar;C:softwareapache-maven-3.3.3
    epository
    etsfezmorphezmorph1.0.6ezmorph-1.0.6.jar;C:softwareapache-maven-3.3.3
    epositorydom4jdom4j1.6.1dom4j-1.6.1.jar;C:softwareapache-maven-3.3.3
    epositoryxml-apisxml-apis1.0.b2xml-apis-1.0.b2.jar;C:softwareapache-maven-3.3.3
    epositorycomalibabafastjson1.2.32fastjson-1.2.32.jar;C:softwareapache-maven-3.3.3
    epositoryorgapachehttpcomponentshttpclient4.3.6httpclient-4.3.6.jar;C:softwareapache-maven-3.3.3
    epositoryorgapachehttpcomponentshttpcore4.3.3httpcore-4.3.3.jar;C:softwareapache-maven-3.3.3
    epositorycommons-codeccommons-codec1.6commons-codec-1.6.jar;C:softwareapache-maven-3.3.3
    epositoryorgslf4jslf4j-api1.7.26slf4j-api-1.7.26.jar;C:softwareapache-maven-3.3.3
    epositorycomsquareupokhttp3okhttp3.3.0okhttp-3.3.0.jar;C:softwareapache-maven-3.3.3
    epositorycomsquareupokiookio1.8.0okio-1.8.0.jar;C:softwareapache-maven-3.3.3
    epositorylog4jlog4j1.2.17log4j-1.2.17.jar;C:softwareapache-maven-3.3.3
    epositoryorgapachecommonscommons-lang33.0commons-lang3-3.0.jar;C:softwareapache-maven-3.3.3
    epositorycomgooglecodegsongson2.3.1gson-2.3.1.jar;C:softwareapache-maven-3.3.3
    epositoryorgapachepoipoi-ooxml3.8poi-ooxml-3.8.jar;C:softwareapache-maven-3.3.3
    epositoryorgapachepoipoi3.8poi-3.8.jar;C:softwareapache-maven-3.3.3
    epositoryorgapachepoipoi-ooxml-schemas3.8poi-ooxml-schemas-3.8.jar;C:softwareapache-maven-3.3.3
    epositoryorgapachexmlbeansxmlbeans2.3.0xmlbeans-2.3.0.jar;C:softwareapache-maven-3.3.3
    epositorystaxstax-api1.0.1stax-api-1.0.1.jar;C:softwareapache-maven-3.3.3
    epositoryorgapachepoipoi-scratchpad3.8poi-scratchpad-3.8.jar;C:vat	est-demo(1)	est-demosrclib
    eon-1.1.jar" com.test.method.edfSDK.demo.Test
    Loaded disassembler from C:Program FilesJavajdk1.8.0_121jreinserverhsdis-amd64.dll
    Decoding compiled method 0x00000000032d2e10:
    Code:
    [Disassembling for mach='i386:x86-64']
    [Entry Point]
    [Constants]
      # {method} {0x000000001c357cc8} 'encodeChar' '(C)I' in 'sun/nio/cs/ext/DoubleByte$Encoder'
      # this:     rdx:rdx   = 'sun/nio/cs/ext/DoubleByte$Encoder'
      # parm0:    r8        = char
      #           [sp+0x40]  (sp of caller)
      0x00000000032d2f80: mov    0x8(%rdx),%r10d
      0x00000000032d2f84: shl    $0x3,%r10
      0x00000000032d2f88: cmp    %rax,%r10
      0x00000000032d2f8b: jne    0x0000000003215f60  ;   {runtime_call}
      0x00000000032d2f91: data16 data16 nopw 0x0(%rax,%rax,1)
      0x00000000032d2f9c: data16 data16 xchg %ax,%ax
    [Verified Entry Point]
      0x00000000032d2fa0: mov    %eax,-0x6000(%rsp)
      0x00000000032d2fa7: push   %rbp
      0x00000000032d2fa8: sub    $0x30,%rsp
      0x00000000032d2fac: movabs $0x1c403758,%rax   ;   {metadata(method data for {method} {0x000000001c357cc8} 'encodeChar' '(C)I' in 'sun/nio/cs/ext/DoubleByte$Encoder')}
      0x00000000032d2fb6: mov    0xdc(%rax),%esi
      0x00000000032d2fbc: add    $0x8,%esi
      0x00000000032d2fbf: mov    %esi,0xdc(%rax)
      0x00000000032d2fc5: movabs $0x1c357cc0,%rax   ;   {metadata({method} {0x000000001c357cc8} 'encodeChar' '(C)I' in 'sun/nio/cs/ext/DoubleByte$Encoder')}
      0x00000000032d2fcf: and    $0x1ff8,%esi
      0x00000000032d2fd5: cmp    $0x0,%esi
      0x00000000032d2fd8: je     0x00000000032d302a  ;*aload_0
                                                    ; - sun.nio.cs.ext.DoubleByte$Encoder::encodeChar@0 (line 656)
    
      0x00000000032d2fde: mov    0x30(%rdx),%eax
      0x00000000032d2fe1: shl    $0x3,%rax          ;*getfield c2b
                                                    ; - sun.nio.cs.ext.DoubleByte$Encoder::encodeChar@1 (line 656)
    
      0x00000000032d2fe5: mov    0x34(%rdx),%esi
      0x00000000032d2fe8: shl    $0x3,%rsi          ;*getfield c2bIndex
                                                    ; - sun.nio.cs.ext.DoubleByte$Encoder::encodeChar@5 (line 656)
    
      0x00000000032d2fec: mov    %r8,%rdi
      0x00000000032d2fef: sar    $0x8,%edi
      0x00000000032d2ff2: movslq %edi,%rbx
      0x00000000032d2ff5: cmp    0xc(%rsi),%edi     ; implicit exception: dispatches to 0x00000000032d303e
      0x00000000032d2ff8: jae    0x00000000032d3048
      0x00000000032d2ffe: movzwl 0x10(%rsi,%rbx,2),%esi  ;*caload
                                                    ; - sun.nio.cs.ext.DoubleByte$Encoder::encodeChar@12 (line 656)
    
      0x00000000032d3003: and    $0xff,%r8d
      0x00000000032d300a: add    %r8d,%esi
      0x00000000032d300d: movslq %esi,%rdi
      0x00000000032d3010: cmp    0xc(%rax),%esi     ; implicit exception: dispatches to 0x00000000032d3051
      0x00000000032d3013: jae    0x00000000032d305b
      0x00000000032d3019: movzwl 0x10(%rax,%rdi,2),%eax  ;*caload
                                                    ; - sun.nio.cs.ext.DoubleByte$Encoder::encodeChar@19 (line 656)
    
      0x00000000032d301e: add    $0x30,%rsp
      0x00000000032d3022: pop    %rbp
      0x00000000032d3023: test   %eax,-0x21a2f29(%rip)        # 0x0000000001130100
                                                    ;   {poll_return}
      0x00000000032d3029: retq   
      0x00000000032d302a: mov    %rax,0x8(%rsp)
      0x00000000032d302f: movq   $0xffffffffffffffff,(%rsp)
      0x00000000032d3037: callq  0x00000000032d19a0  ; OopMap{rdx=Oop off=188}
                                                    ;*synchronization entry
                                                    ; - sun.nio.cs.ext.DoubleByte$Encoder::encodeChar@-1 (line 656)
                                                    ;   {runtime_call}
      0x00000000032d303c: jmp    0x00000000032d2fde
      0x00000000032d303e: callq  0x00000000032cc740  ; OopMap{rax=Oop rsi=Oop off=195}
                                                    ;*caload
                                                    ; - sun.nio.cs.ext.DoubleByte$Encoder::encodeChar@12 (line 656)
                                                    ;   {runtime_call}
      0x00000000032d3043: callq  0x00000000032cc740  ; OopMap{rax=Oop rsi=Oop off=200}
                                                    ;*caload
                                                    ; - sun.nio.cs.ext.DoubleByte$Encoder::encodeChar@12 (line 656)
                                                    ;   {runtime_call}
      0x00000000032d3048: mov    %rdi,(%rsp)
      0x00000000032d304c: callq  0x00000000032cba00  ; OopMap{rax=Oop rsi=Oop off=209}
                                                    ;*caload
                                                    ; - sun.nio.cs.ext.DoubleByte$Encoder::encodeChar@12 (line 656)
                                                    ;   {runtime_call}
      0x00000000032d3051: callq  0x00000000032cc740  ; OopMap{rax=Oop off=214}
                                                    ;*caload
                                                    ; - sun.nio.cs.ext.DoubleByte$Encoder::encodeChar@19 (line 656)
                                                    ;   {runtime_call}
      0x00000000032d3056: callq  0x00000000032cc740  ; OopMap{rax=Oop off=219}
                                                    ;*caload
                                                    ; - sun.nio.cs.ext.DoubleByte$Encoder::encodeChar@19 (line 656)
                                                    ;   {runtime_call}
      0x00000000032d305b: mov    %rsi,(%rsp)
      0x00000000032d305f: callq  0x00000000032cba00  ; OopMap{rax=Oop off=228}
                                                    ;*caload
                                                    ; - sun.nio.cs.ext.DoubleByte$Encoder::encodeChar@19 (line 656)
                                                    ;   {runtime_call}
      0x00000000032d3064: nop
      0x00000000032d3065: nop
      0x00000000032d3066: mov    0x2a8(%r15),%rax
      0x00000000032d306d: movabs $0x0,%r10
      0x00000000032d3077: mov    %r10,0x2a8(%r15)
      0x00000000032d307e: movabs $0x0,%r10
      0x00000000032d3088: mov    %r10,0x2b0(%r15)
      0x00000000032d308f: add    $0x30,%rsp
      0x00000000032d3093: pop    %rbp
      0x00000000032d3094: jmpq   0x00000000032cbea0  ;   {runtime_call}
      0x00000000032d3099: hlt    
      0x00000000032d309a: hlt    
      ......
  • 相关阅读:
    PHP页面静态化
    PHP实现单文件、多文件上传 封装 面向对象实现文件上传
    PHP MYSQL
    MySQL 数据表
    MySQL基础
    DOM事件处理程序-事件对象-键盘事件
    JS--显示类型转换Number—隐式类型转换
    JS的数据类型
    JS属性读写操作+if判断注意事项
    Javascript进阶篇——总结--DOM案例+选项卡效果
  • 原文地址:https://www.cnblogs.com/maxmoore/p/11662915.html
Copyright © 2020-2023  润新知