查看Java的汇编指令
在IDEA配置VM options,打印汇编指令
-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly
windows系统 下载插件 hsdis-amd64.dll 链接: https://pan.baidu.com/s/1gltHHQQRqjb2dspJXkUekw 提取码: xc2w
放在目录 jdk1.8.0_121\jre\bin\server 下
执行main函数即可
"C:\Program Files\Java\jdk1.8.0_121\bin\java" -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2017.1.3\lib\idea_rt.jar=65255:C:\Program Files\JetBrains\IntelliJ IDEA 2017.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_121\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\rt.jar;C:\vat\test-demo(1)\test-demo\target\classes;C:\vat\test-demo(1)\test-demo\src\lib\edf-openapi-sdk-0.1.14.jar;C:\vat\test-demo(1)\test-demo\src\lib\fapiao-openapi-sdk-0.1.1.jar;C:\vat\test-demo(1)\test-demo\src\lib\commons-codec-1.11.jar;C:\vat\test-demo(1)\test-demo\src\lib\commons-lang3-3.7.jar;C:\vat\test-demo(1)\test-demo\src\lib\dom4j-2.0.2.jar;C:\vat\test-demo(1)\test-demo\src\lib\fastjson-1.2.47.jar;C:\vat\test-demo(1)\test-demo\src\lib\groovy-all-2.4.9.jar;C:\vat\test-demo(1)\test-demo\src\lib\guava-19.0.jar;C:\vat\test-demo(1)\test-demo\src\lib\hamcrest-core-1.3.jar;C:\vat\test-demo(1)\test-demo\src\lib\jaxen-1.1.6.jar;C:\vat\test-demo(1)\test-demo\src\lib\junit-4.11.jar;C:\vat\test-demo(1)\test-demo\src\lib\logback-classic-1.2.3.jar;C:\vat\test-demo(1)\test-demo\src\lib\logback-core-1.2.3.jar;C:\vat\test-demo(1)\test-demo\src\lib\lombok-1.18.8.jar;C:\vat\test-demo(1)\test-demo\src\lib\okhttp-3.3.0.jar;C:\vat\test-demo(1)\test-demo\src\lib\okio-1.8.0.jar;C:\vat\test-demo(1)\test-demo\src\lib\slf4j-api-1.7.26.jar;C:\vat\test-demo(1)\test-demo\src\lib\spock-core-1.1-groovy-2.4.jar;C:\software\apache-maven-3.3.3\repository\net\sf\json-lib\json-lib\2.4\json-lib-2.4-jdk15.jar;C:\software\apache-maven-3.3.3\repository\commons-beanutils\commons-beanutils\1.8.0\commons-beanutils-1.8.0.jar;C:\software\apache-maven-3.3.3\repository\commons-collections\commons-collections\3.2.1\commons-collections-3.2.1.jar;C:\software\apache-maven-3.3.3\repository\commons-lang\commons-lang\2.5\commons-lang-2.5.jar;C:\software\apache-maven-3.3.3\repository\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar;C:\software\apache-maven-3.3.3\repository\net\sf\ezmorph\ezmorph\1.0.6\ezmorph-1.0.6.jar;C:\software\apache-maven-3.3.3\repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar;C:\software\apache-maven-3.3.3\repository\xml-apis\xml-apis\1.0.b2\xml-apis-1.0.b2.jar;C:\software\apache-maven-3.3.3\repository\com\alibaba\fastjson\1.2.32\fastjson-1.2.32.jar;C:\software\apache-maven-3.3.3\repository\org\apache\httpcomponents\httpclient\4.3.6\httpclient-4.3.6.jar;C:\software\apache-maven-3.3.3\repository\org\apache\httpcomponents\httpcore\4.3.3\httpcore-4.3.3.jar;C:\software\apache-maven-3.3.3\repository\commons-codec\commons-codec\1.6\commons-codec-1.6.jar;C:\software\apache-maven-3.3.3\repository\org\slf4j\slf4j-api\1.7.26\slf4j-api-1.7.26.jar;C:\software\apache-maven-3.3.3\repository\com\squareup\okhttp3\okhttp\3.3.0\okhttp-3.3.0.jar;C:\software\apache-maven-3.3.3\repository\com\squareup\okio\okio\1.8.0\okio-1.8.0.jar;C:\software\apache-maven-3.3.3\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar;C:\software\apache-maven-3.3.3\repository\org\apache\commons\commons-lang3\3.0\commons-lang3-3.0.jar;C:\software\apache-maven-3.3.3\repository\com\google\code\gson\gson\2.3.1\gson-2.3.1.jar;C:\software\apache-maven-3.3.3\repository\org\apache\poi\poi-ooxml\3.8\poi-ooxml-3.8.jar;C:\software\apache-maven-3.3.3\repository\org\apache\poi\poi\3.8\poi-3.8.jar;C:\software\apache-maven-3.3.3\repository\org\apache\poi\poi-ooxml-schemas\3.8\poi-ooxml-schemas-3.8.jar;C:\software\apache-maven-3.3.3\repository\org\apache\xmlbeans\xmlbeans\2.3.0\xmlbeans-2.3.0.jar;C:\software\apache-maven-3.3.3\repository\stax\stax-api\1.0.1\stax-api-1.0.1.jar;C:\software\apache-maven-3.3.3\repository\org\apache\poi\poi-scratchpad\3.8\poi-scratchpad-3.8.jar;C:\vat\test-demo(1)\test-demo\src\lib\neon-1.1.jar" com.test.method.edfSDK.demo.Test Loaded disassembler from C:\Program Files\Java\jdk1.8.0_121\jre\bin\server\hsdis-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 ......
标签:
idea
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)