在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
......

查看Java的汇编指令的更多相关文章

  1. 在Myeclipse下查看Java字节码指令信息

         在实际项目开发中,有时为了了解Java编译器内部的一些工作,需要查看Java文件对应的具体的字节码指令集,这里提供两种方式供参考. 一.使用javap命令      javap是JDK提供的 ...

  2. 关于win10系统如何调用debug查看CPU汇编指令和内存

    下载安装DOSBox.网上提供下载地址:DOSBOX Debug是DOS(Disk Operating System,磁盘操作系统).windows提供的实模式(8086方式)程序的调试工具.使用它, ...

  3. 查看Java代码对应的汇编指令又一利器,JITWatch 转

    http://www.tuicool.com/articles/IRrIRb3 时间 2015-05-13 08:00:00  Liuxinglanyue's Blog 原文  http://java ...

  4. java线程基础巩固---数据同步引入并结合jconsole,jstack以及汇编指令认识synchronized关键字

    对于多线程编程而言其实老生成谈的就是数据同步问题,接下来就会开始接触这块的东东,比较麻烦,但是也是非常重要,所以按部就班的一点点去专研它,下面开始. 数据同步引入: 这里用之前写过的银行叫号的功能做为 ...

  5. 汇编试验一:查看CPU和内存,用机器码指令和汇编指令编程

    预备知识: r命令查看,改变CPU寄存器的内容 2.D命令查看内存 3.E命令改写内存 两种方式: 1: 2: 内存中写入机器码 用T命令执行机器码(先将CS:IP指向要执行的内存处) 用a命令写汇编 ...

  6. 查看CPU和内存,用机器指令和汇编指令编程【Debug模式】

    命令 作用 举例 R 查看,改变CPU寄存器的内容 查看:r 改写:r ax D 查看内存中的内容 d 1000:0 f E 改写内存中的内容 e 1000:0 f U 将内存中的机器指令翻译成汇编指 ...

  7. 浅析VS2010反汇编 VS 反汇编方法及常用汇编指令介绍 VS2015使用技巧 调试-反汇编 查看C语言代码对应的汇编代码

    浅析VS2010反汇编 2015年07月25日 21:53:11 阅读数:4374 第一篇 1. 如何进行反汇编 在调试的环境下,我们可以很方便地通过反汇编窗口查看程序生成的反汇编信息.如下图所示. ...

  8. 实验一 查看CPU和内存,用机器指令和汇编指令编程

    (1):使用debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器中内存的变化. 机器码        汇编指令 b8 20 4e     mov ax,4E20H 05 ...

  9. JVM 字节码指令手册 - 查看 Java 字节码

    JVM 字节码指令手册 - 查看 Java 字节码 jdk 进行的编译生成的 .class 是 16 进制数据文件,不利于学习分析.通过下命令 javap -c Demo.class > Dem ...

随机推荐

  1. java基础: ArrayList集合应用, ArrayList增删改查详解,综合java基础实现学生管理系统,

    1.ArrayList 集合和数组的区别 : 共同点:都是存储数据的容器 不同点:数组的容量是固定的,集合的容量是可变的 1.1 -ArrayList的构造方法和添加方法 public ArrayLi ...

  2. [UWP] - 修改应用程序在任务栏上的显示Logo

    用VS2015在windows 10上开发一个UWP的应用,由于windows 10对store应用进行了窗口化,因此可以看到在任务栏上看到应用程序的图标,但是看起来会感觉应用Logo会被嵌在另一个容 ...

  3. 魔改redis之添加命令hrandmember

    魔改redis之添加命令hrandmember 目录 魔改redis之添加命令hrandmember 正文 前言 Set类型与srandmember命令 Hash类型对比Set类型 hrandmemb ...

  4. springboot项目报错Exception getting JDBC Driver: com.mysql.cj.jdbc.Driver

    将驱动换成 <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysq ...

  5. Offer快到碗里来,Volatile问题终结者

    微信公众号:大黄奔跑关注我,可了解更多有趣的面试相关问题. 写在之前面试问题概览面试回顾大黄可见性Demo演示小插曲大黄可见性Demo演示小插曲大黄可见性Demo演示小插曲总结番外 写在之前 Hell ...

  6. 【代码周边】MongoDB与Mysql对比以及插入稳定性分析(指定主键的影响)

    在数据库存放的数据中,有一种特殊的键值叫做主键,它用于惟一地标识表中的某一条记录.也就是说,一个表不能有多个主键,并且主键不能为空值. 无论是MongoDB还是MySQL,都存在着主键的定义. 对于M ...

  7. Java学习日报7.13

    /** * *//** * @author 86152 * */package Employee;import java.util.Scanner;public class Employee{ pri ...

  8. 【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中

    问题描述 基于.NET Core的Function App如果配置了Application Insights之后,每有一个函数被执行,则在Application Insights中的Logs中的tra ...

  9. Eclipse导入外部jar包的步骤

    (1)首先在项目的跟目录下先建一个名字为lib的文件夹,通常外部导入的jar包都放在这个文件夹下面. (2)将需要用到的jar包复制到lib文件夹下面. (3)在项目中导入jar包 右键项目,选择Bu ...

  10. 【小菜学网络】MAC地址详解

    上一小节介绍了以太网帧的结构,以及帧中各个字段的作用.参与以太网通讯的实体,由以太网地址唯一标识.以太网地址也叫做 MAC 地址,我们对它仍知之甚少. 以太网地址在不同场景,称谓也不一样,常用叫法包括 ...