执行引擎(一):类文件结构

无关性基石

  • 概述
    • 实现语言无关性的基础:
      • 虚拟机
      • 字节码存储格式。
    • java虚拟机:只与Class文件(二进制文件)所关联
      • class文件包括了java虚拟机指令集和符号表以及若干其他辅助信息。

Class类文件结构

  • 无符号数
    • 概念
      • 最基本的数据类型
      • 描述数字,索引引用,数量值或者按照UTF-8i编码构成的字符串值
        • U1(1个字节)
        • U2(2个字节)
        • U4(4个字节)
        • U8(8个字节)
    • 魔数
    • Class文件版本号
    • 常量池
    • 访问标志
    • 类索引/父类索引/接口索引
    • 字段表集合
    • 方法表集合
      • 属性表集合
        • Code属性
        • 显示异常处理表
        • Exceptions
        • LineNumberTable
        • LocalVariableTable
        • SourceFile
        • ConstantValue
        • InnerClasses
        • Desprecated及Syntheic
        • StackMapTable
        • Signature
        • BootstrapMethods

字节码指令

  • 加载和存储指令
    • 概述
      • 用于栈帧中的局部变量表、操作数栈之间传输数据
  • 运算指令
    • 概述
    • 用于两个操作数栈上的值进行特定运算。
    • 把结果重新存入到操作栈顶
  • 类型转换指令
    • 概述
      • 将两种不同的数值类型进行相互转换
      • 实现用户代码中显示转换操作、字节码指令集中 数据类型相关指令 无法与 数据类型 一一对应的问题
  • 对象创建与访问指令
    • 概述
      • 用于对象创建后获取对象实例或
      • 数组实例中的字段或者数组元素
  • 操作数栈管理指令
    • 概述
      • 用于直接操作操作数栈
  • 控制转移指令
    • 概述
      • 用于让java虚拟机 有条件或 无条件 从指定位置的指令 继续执行程序 
      • (不是控制转移指令的下一条指令)
      • 即: 修改PC寄存器的值
  • 方法调用和返回指令
    • 概述
      • 用于方法调用
  • 异常处理指令
    • 概述
      • 在java虚拟机中异常处理(很久以前曾经使用jsr和ret指令来实现)采用异常表完成
  • 同步指令
    • 概述
      • java虚拟机中的 方法级同步和 方法内部一段指令序列同步 使用管程(Monitor)来支持 。
      • 方法级同步是隐式的
      • 即:无需通过字节码指令来控制,
      • 实现在方法调用和返回操作之中

猜你喜欢

转载自www.cnblogs.com/lllllht/p/9177839.html