美文网首页
类文件结构

类文件结构

作者: GIT提交不上 | 来源:发表于2019-11-16 16:08 被阅读0次

一、概述

  “一次编写,到处运行”。实现语言无关性的基础是虚拟机和字节码(*.class)存储格式。

图1-1 语言无关性

二、Class类文件结构

  Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件中,中间不添加任何分隔符。Class文件格式采用类似结构体的伪结构存储数据,该结构包含两种数据类型:无符号数和表。
  无符号数属于基本数据类型,u1、u2、u4、u8分别代表1/2/4/8字节的无符号数,可以用来描述数字、索引引用、数量值或者按照UTF-8编码构成字符串值。
  表是由多个无符号数或其他表作为数据项构成的复合数据类型,习惯性以“_info”结尾。用于描述有层次关系的复合结构的数据。

图2-1 Class文件格式

  Class文件的头4个字节称为魔数(0xCAFEBABE),用于确定这个文件是否为一个能被虚拟机接受的Class文件。紧接着4个字节存储Class文件的版本号。(第5和6个字节是次版本号,第7和8个字节是主版本号)
  字节码指令:Java虚拟机指令由一个字节长度的、代表着某种特定操作含义的数字(操作码)以及之后0或多个代表此操作所需参数(操作数)构成(0~255)。Java虚拟机解释器(不考虑异常处理):

do{
    自动计算PC寄存器的值加1;
    根据PC寄存器的指示位置,从字节码流中取出操作码;
    if(字节码存在操作数){
        从字节码流中取出操作数;
    }
    执行操作码所定义的操作;
}while(字节码长度>0);

  字节码指令指令集参考如下链接。

java 字节码指令集 汇编

相关文章

  • 类文件结构【Class类文件的结构】

    概述 任何一个Class文件都对应着唯一一个类或接口的定义信息,但反过来,类或接口并不一定都得定义在文件里(如类或...

  • 类文件结构

    本文大体讲一下结构,着重从理解层面看,就是当时我最难理解的地方讲,并不会深入的讲解某一块的具体结构信息,如果要看结...

  • 类文件结构

    class文件结构 Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Cla...

  • 类文件结构

    类的二进制文件中的主要结构 无符号数和表 u1,u2,u4,u8。表由无符号数和表构成 魔数 1-4字节:确定文件...

  • 类文件结构

    概述 Class文件是一组以8位字节为基础单位的二进制流,各个数据项目按照顺序紧地排列在CLass文件之中,中间没...

  • 类文件结构

    一、概述 在计算机商业领域中,不同的硬件体系结构和不同的操作系统长期并存是必然的结果,所以Java 提出了“Wri...

  • 类文件结构

    语言无关性 JAVA虚拟机与Class文件关联,与具体的语言没关系。任何语言只要能编译成Cla...

  • 类文件结构

    语言无关性:jvm和字节码格式 jvm不和java在内的任何语言绑定,他只和“class”这种特定的二进制格式文件...

  • 类文件结构

    摘抄: 陈树义 Java技术精选 -各个语言的编译器吧文件编译成字节码,jvm把字节码解释给操作系统,或者是编译成...

  • 类文件结构

    前言 本文是《深入理解Java虚拟机》第6章的部分知识点,这一章正如作者所说,对数据结构的讲解确实枯燥,对于失眠治...

网友评论

      本文标题:类文件结构

      本文链接:https://www.haomeiwen.com/subject/bdzkictx.html