3.Class文件刨析

1. Class文件结构概述

源代码经过编译器之后便会生成一个字节码文件,字节码是一种二进制的类文件,它的内容是JVM的字节码指令,而不像C,C++经过编译器直接生成机器码。

本篇主要描述Class文件的格式,Java虚拟机规定用u1,u2,u4三种结构来表示1,2,4字节无符号整数,相同类型的若干条数据集合用表的形式来存储。表是一个变长的结构,由代表长度的表头n和紧随着n个数据项组成。Class文件采用类似C语言的结构体来存储数据。如下:

一个Class文件的组成结构:

ClassFile {
    u4             magic;
    u2             minor_version;
    u2             major_version;
    u2             constant_pool_count;
    cp_info        constant_pool[constant_pool_count-1];
    u2             access_flags;
    u2             this_class;
    u2             super_class;
    u2             interfaces_count;
    u2             interfaces[interfaces_count];
    u2             fields_count;
    field_info     fields[fields_count];
    u2             methods_count;
    method_info    methods[methods_count];
    u2             attributes_count;
    attribute_info attributes[attributes_count];
}

参考官网文档:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.1

2. 什么是字节码指令

Java虚拟机的指令由一个字节长度的,代表这某种特点含义的操作码(opcode)以及跟随气候的零至多个代表操作所需要的参数的操作数ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值