[发明专利]一种CAP文件Classref常量的解析方法有效
申请号: | 201210351426.2 | 申请日: | 2012-09-18 |
公开(公告)号: | CN103677778A | 公开(公告)日: | 2014-03-26 |
发明(设计)人: | 毛云娟 | 申请(专利权)人: | 北京中电华大电子设计有限责任公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100102 北京市朝阳*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 cap 文件 classref 常量 解析 方法 | ||
技术领域
本发明涉及智能卡技术领域,尤其涉及一种CAP文件常量池CONSTANT Classref常量的解析方法。
背景技术
JAVA卡技术成功的将Java语言应用到了智能卡技术领域,但由于智能卡设备本身在资源和速度上的限制,使得在其上运行的Java语言程序必须是经过特别处理的符合JAVA卡规范要求的程序,这种在JAVA卡上运行的程序被称为JAVA卡Applet。
JAVA卡技术包括三个方面的内容:JCRE(JAVA卡运行时环境)、JCVM(JAVA卡虚拟机)和JC API(JAVA卡的应用编程接口)。
JCRE主要负责实现APDU命令的分发、通道管理和应用选择等功能,这些内容采用Java语言实现,它们就是JCRE系统包。
JCVM用于对Java语言编译生成的字节码进行解释执行,这些字节码既包括JCRE系统包经转换后形成的字节码,也包括下载包中的字节码。
JCRE系统包的Java代码首先会通过JAVA编译器编译生成二进制代码即class文件,然后通过转换器将class文件转换成Java卡的可读汇编文件即JCA文件,最后将JCA文件转换为Java卡虚拟机可以识别的字节码存放到卡上。
下载包为通过下载的方式存放到卡上的包,在下载链接的过程中,会对下载包对应的CAP文件进行解析,解析的过程会将字节码解释执行过程中会使用到的内容存储到卡上。
在Java Card 2.2.2Virtual Machine Specification中给出了CAP文件的结构。其中规定CAP文件包括用于存储不同类型数据的多个组件,它们分别是:
Header组件-头组件;Directory组件-目录组件;Applet组件-应用组件;Import组件-导入组件;Constant Pool组件-常量池组件;Class组件-类组件;Method组件-方法组件;Static Field组件-静态域组件;Reference Location组件-参考位置组件;Export组件-导出组件;Descriptor组件-描述组件。
导出组件的结构如图1所示。导出组件中记录了包中所有需要导出给其他包使用的静态域和静态方法的信息,包括这些静态域和静态方法的个数、偏移以及它们所在的类相对于该包的类组件首地址的偏移。
其中,class_export_info结构用来存放每个类要导出的静态域和静态方法的信息,该结构中的class_offset表示的是该类相对于其所在包的类组件首地址的偏移。
常量池组件中CONSTANT_Classref常量的结构如图2所示。该常量表示的是对一个类或一个接口的引用,通过该常量的第二和第三个字节就可以唯一的定位到某一个类。
若该常量表示的是一个本包的类或接口,则第二和第三字节表示的是该类或接口相对于该包的类组件的首地址的偏移;若该常量表示的是一个本包外的类或接口,则第二和第三字节分别表示了package_token和class_token,前者表示的是该导入包在本包的导入组件中索引值,后者表示的该导入类在该导入包的Export文件中的token值,同时该值与该导入类在该导入包的导出组件中的索引一致。
目前对于常量池组件中CONSTANT_Classref常量的解析主要采用的是SUN公司提供的类似于静态编译的方法,如附图3所示,该方法的步骤如下:
1.解析导出组件时,对导出组件中的class_export_info数组中的class_offset项进行解析,通过该偏移计算出指定类的类组件存放的绝对地址,将绝对地址存放到一个全局引用表中,将返回的一个全局引用表的索引存放到原class_export_info数组中class_offset存放的位置;
2.解析常量池组件时,对常量池组件中CONSTANT_Classref常量为外包的类解析时,通过package_token查找该包的导入组件,得到该包在卡上所有包中的包索引,从而可以查找到该包的导出组件,从导出组件中找到由class token指定的类的class_export_info,读出其中class offset位置存放的一个被解析后的全局引用表的索引,存回到该常量的第二、三字节处;
3.在参考位置组件进行解析时,会将字节码中指向该常量池索引的操作数直接替换为被解析后得到的全局引用表的索引。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京中电华大电子设计有限责任公司,未经北京中电华大电子设计有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210351426.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:视频译码中的运动向量预测
- 下一篇:用于参考画面管理的编码器、解码器及其方法