class file解析一
来源:互联网 发布:c语言字符串字符个数 编辑:程序博客网 时间:2024/05/22 08:21
文字说明:简单
目的:学习记录
是否有手续:是
CONSTANT_Class_info
CONSTANT_NameAndType_infoCONSTANT_Utf8_info
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];
}
Table 4.4-A. Constant pool tags
Constant Type Value
CONSTANT_Class 7
CONSTANT_Fieldref 9
CONSTANT_Methodref 10
CONSTANT_InterfaceMethodref 11
CONSTANT_String 8
CONSTANT_Integer 3
CONSTANT_Float 4
CONSTANT_Long 5
CONSTANT_Double 6
CONSTANT_NameAndType 12
CONSTANT_Utf8 1
CONSTANT_MethodHandle 15
CONSTANT_MethodType 16
CONSTANT_InvokeDynamic 18
//cp_info是通用格式,CONSTANT_Class_info,CONSTANT_Fieldref_info等等都属于cp_info的具体表示格式
cp_info {
u1 tag;//常量池入口种类
u1 info[];
}
//类
CONSTANT_Class_info {
u1 tag;//CONSTANT_Class (7).
u2 name_index;//引用常量池中的另一个入口:CONSTANT_Utf8_info
}
//字符串
CONSTANT_Utf8_info {
u1 tag;
u2 length;
u1 bytes[length];
}
//类变量或成员变量,或者接口的成员变量
CONSTANT_Fieldref_info {
u1 tag;//CONSTANT_Fieldref (9).
u2 class_index;//引用常量池中的另一个入口:CONSTANT_Class_info
u2 name_and_type_index;//引用常量池中的另一个入口:CONSTANT_NameAndType_info
}
//类方法或成员方法
CONSTANT_Methodref_info {
u1 tag;//CONSTANT_Methodref (10).
u2 class_index;//引用常量池中的另一个入口:CONSTANT_Class_info
u2 name_and_type_index;//引用常量池中的另一个入口:CONSTANT_NameAndType_info
}
//接口的方法
CONSTANT_InterfaceMethodref_info {
u1 tag;//CONSTANT_InterfaceMethodref (11).
u2 class_index;//引用常量池中的另一个入口:CONSTANT_Class_info
u2 name_and_type_index;//引用常量池中的另一个入口:CONSTANT_NameAndType_info
}
CONSTANT_String_info {
u1 tag;//CONSTANT_String (8).
u2 string_index;//引用常量池中的另一个入口:CONSTANT_Utf8_info
}
CONSTANT_Integer_info {
u1 tag;//CONSTANT_Integer (3).
u4 bytes;
}
CONSTANT_Float_info {
u1 tag;//CONSTANT_Float (4).
u4 bytes;
}
CONSTANT_Long_info {
u1 tag;//CONSTANT_Long (5).
u4 high_bytes;
u4 low_bytes;
}
CONSTANT_Double_info {
u1 tag;//CONSTANT_Double (6).
u4 high_bytes;
u4 low_bytes;
}
//该格式本身可以代表field或者method,但是当具体引用该结构时,它可能就代表具体的field或者method。
CONSTANT_NameAndType_info {
u1 tag;//CONSTANT_NameAndType (12).
u2 name_index;//引用常量池中的另一个入口:CONSTANT_Utf8_info
u2 descriptor_index;//引用常量池中的另一个入口:CONSTANT_Utf8_info,representing a valid field descriptor or method descriptor
}
CONSTANT_MethodHandle_info {
u1 tag;//CONSTANT_MethodHandle (15).
u1 reference_kind;
//reference_kind in (1,2,3,4):CONSTANT_Fieldref_info;
//reference_kind in (5,8):CONSTANT_Methodref_info;
//reference_kind in (6,7):CONSTANT_Methodref_info or CONSTANT_InterfaceMethodref_info;
//reference_kind in (9):CONSTANT_InterfaceMethodref_info;
u2 reference_index;
}
CONSTANT_MethodType_info {
u1 tag;//CONSTANT_MethodType (16).
u2 descriptor_index;//引用常量池中的另一个入口:CONSTANT_Utf8_info,representing a method descriptor
}
CONSTANT_InvokeDynamic_info {
u1 tag;//CONSTANT_InvokeDynamic (18).
u2 bootstrap_method_attr_index;
u2 name_and_type_index;//引用常量池中的另一个入口:CONSTANT_NameAndType_info,representing a method name and method descriptor
}
field_info
method_info
attribute_info
0 0
- class file解析一
- Class文件解析一:概述
- class file
- CSegGraph class 之自我解析(一)
- java class 文件解析 之 class 常量池 (一)
- FileInfo Class and File Class
- 自制Java 虚拟机(一)解析class文件
- Java Class File Structrue
- Java class file
- NONCODE class code file
- class file construct
- 【.Net码农】File Class
- Java-File class
- Truncated class file
- xcode6一运行就会出现 Unknown class in Interface Builder file
- 解析Java的Class文件格式——解析魔数和版本号(一)
- Truncated class file 截断的class文件
- cannot access bad class file
- KKT条件--约束问题最优化方法
- Java集合详解(二):Map
- SDAU 搜索专题 13 A strange lift
- 仿百度壁纸客户端(四)——自定义上拉加载实现精选壁纸墙
- Spring 之 生命周期机制混合使用
- class file解析一
- React Native环境搭建
- 常用工具类集合
- VMWare的网络三种设置方式比较
- 使用Python简单的发送邮件
- Qt for iOS,Qt 与Objective C混合编程
- [C++]C++语言类成员变量初始化总结
- 解决UI主线程阻塞原因
- Ueditor 前后端数据交互