免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 899 | 回复: 0
打印 上一主题 下一主题

jvm规范-class文件格式 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-12 19:22 |只看该作者 |倒序浏览

第四章:class文件格式
java.io.DataInput和java.io.Output输入输出的都是以高端字节序输出字节。
与C结构的域不同,class文件中连续的项顺序存储,不进行填充或者对齐。
4.1classFile
一个class文件包含一个单独的classFile结构,包含:
一个四字节的幻数表明class类型。具有值0XCAFEBABE;
access_flag用于表明是类还是接口,是abstract,final还是其他
另外分别有表存储:常量、属性、方法、域。
目前属性只有sourceFile属性。
4。2完全限定类名称的内部形式
出现在classFile文件结构中的类都以完全限定类名称的方式出现,并且不是类似于java.lang.xxx,而是变为java/lang/xxx
4.3描述符
域类型有:根类型,对象类型,数组类型
根类型有:B,C,D,F,I,J,S,Z
对象类型:L
数组类型:[
多维数组double[][][] d的表示方式:[[[D
方法返回描述符
V表示void
object mymethod(int i,double j,Thread t)的方法描述符为:
(IDLjava/lang/Thread;)Ljava/lang/Object;
java的方法不管是static还是实例方法描述符都是如此,区别在于jvm运行时给实例方法隐式的传递当前对象的指针this
4.4常数池
常数池由一组类似于cp_info的结构构成
cp_info{
u1 tag;
u1 info[];
}
4.5域
每个域由一个变长的field_info构成
field_info{
u2 access_flags;
u2 name_index;
u2 descriptor_index;
u2 attribute_count;
attribute_info attributes[attributes_count];
}
4.6方法
每个方法由变长结构method_info构成
method_info{
u2 access_flags;
u2 name_index;
u2 descriptor_index;
u2 attribute_count;
attribute_info attributes[attributes_count];
}
4.7属性
属性用于field_info,method_info,class_file结构之中,结构一般如下:
attribute_info{
u2 attribute_name_index;
u4 attribute_length;
u1 info[attribute_length];
}
某些属性被预定义作为class文件规范的一部分,这些属性是:sourceFile,ConstantValue,code,exception,lineNumberTable和localVariableTable属性。
4。8对java虚拟机代码的约束
4。9class文件的检验
4。10java虚拟机和class文件格式的限制


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/26170/showart_199175.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP