016-JVM-十六进制class文件简单解读

144 阅读1分钟

上一篇:015-JVM-使用javap查看class文件内容 https://blog.csdn.net/fsjwin/article/details/111426985

1. 源码T0100_ByteCode01.java

package com.yuhl;

public class T0100_ByteCode01 {
}

2.class文件

注意:默认编译后会有个无惨的构造方法

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.yuhl;

public class T0100_ByteCode01 {
    public T0100_ByteCode01() {
    }
}

3. 使用工具打开class文件并简单解读

总结:

  1. 魔数
  2. 小版本号
  3. 大版本号
    code指令的简单入门解释
    下图很清晰地串联了十六进制转变为jvm汇编的对应关系(注意:尽量去看原图,因为原图可能做些优化,截图可能不会跟着更新哦!)
    原图地址:https://www.processon.com/view/link/5fdf462363768907e4aa40cc

在这里插入图片描述

4. 总结

  1. 在idea中点击code中的相应指令就会挑战到官方对此指令的解释上:
    此处给出连接:docs.oracle.com/javase/spec…
  2. 读懂了上面的几个十六进制就算入门了。遇到问题可以查看前面博客中的字典和官方指令集文档(第一条中的连接),或者查看自己下载的jvm规范第六章也可以查看指令集解释。
    下一篇:017-JVM-JVM指令在多线程中是原子操作吗?https://blog.csdn.net/fsjwin/article/details/111463444