[发明专利]一种CAP文件Classref常量的解析方法有效
申请号: | 201210351426.2 | 申请日: | 2012-09-18 |
公开(公告)号: | CN103677778A | 公开(公告)日: | 2014-03-26 |
发明(设计)人: | 毛云娟 | 申请(专利权)人: | 北京中电华大电子设计有限责任公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100102 北京市朝阳*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 cap 文件 classref 常量 解析 方法 | ||
1.一种CAP文件常量池组件CONSTANT_Classref常量的解析方法,对包下载的过程进行优化,其特征在于包括以下步骤:
步骤一:保留导出组件中class_export_info中的class_offset项,不做修改;
步骤二:解析常量池组件中的CONSTANT_Classref常量中的package_token项,保留class_token项;
步骤三:解析参考位置组件;
步骤四:解析解释执行过程中涉及到的字节码。
2.如权利要求1中所述的方法,其特征在于:若为JCRE系统包,在将该系统包的Java代码转换为字节码时,对该系统包中导出组件中class_export_info中的class_offset项的值不做任何修改和替换。
3.如权利要求1中所述的方法,其特征在于:若为下载包,在下载链接过程中,对该下载包中导出组件中class_export_info中的class_offset项的值保留原值,不做任何替换和修改。
4.如权利要求1中所述的方法,其特征在于:若为JCRE系统包,在将该系统包的Java代码转换为字节码时,对该系统包中的常量池组件中的CONSTANT_Classref常量为本系统包外的类的情况,将该常量中的package_token项替换为该系统包在JAVA卡上的包索引,并将最高位置1,保留class_token项。
5.如权利要求1中所述的方法,其特征在于:若该包为下载包,在下载链接过程中,对该下载包中的常量池组件中的CONSTANT_Classref常量为本包外的类的情况,将该常量中的package_token项替换为该下载包在JAVA卡上的包索引,并将最高位置1,保留class_token项。
6.如权利要求1中所述的方法,其特征在于:在参考位置组件解析时,会将字节码操作数中的常量池索引替换为该常量被解析后的值。
7.如权利要求1中所述的方法,解释执行过程中涉及到的字节码anewarray用于创建一个新的对象数组,其特征在于,对anewarray字节码进行解析时,需要得到待创建的新的对象数组中每个对象所属类的class_offset,若每个对象所属类所在包与anewarray字节码所在包不同,该字节码的操作数经过参考位置组件的解析,将被替换为每个对象所属类所在包的包索引和class_token项,通过包索引可以得到包索引所指的包的导出组件的地址,然后从导出组件中根据class_token项找到对应class_export_info的位置,从中直接读出class_offset的值。
8.如权利要求1中所述的方法,解释执行过程中涉及到的字节码checkcast用于将某一类的对象强制转换为目标类的对象,其特征在于,对checkcast字节码进行解析时,当目标类为引用类型时,需要得到该目标类的绝对地址,若该目标类所在包与checkcast字节码所在包不同,该字节码的操作数经过参考位置组件的解析,将被替换为目标类所在包的包索引和class_token项,通过该包索引可以得到该包索引所指的包的导出组件的地址,然后从导出组件中根据class_token项找到对应的class_export_info的位置,从中直接读出class_offset的值,再根据包索引得到包索引所指的包的类组件的首地址,加上class_offset即为目标类在包中的绝对地址。
9.如权利要求1中所述的方法,解释执行过程中涉及到的字节码instanceof用于判断某一对象是否为目标类的类型,其特征在于,对instanceof字节码进行解析时,需要得到目标类的绝对地址,若该类所在包与instanceof字节码所在包不同,该字节码的操作数经过参考位置组件的解析,将被替换为目标类所在包的包索引和class_token项,通过该包索引可以得到包索引所指的包的导出组件的地址,然后从导出组件中根据class_token找到对应的class_export_info的位置,从中直接读出class_offset的值,再根据包索引得到包索引所指的包的类组件的首地址,加上class_offset即为目标类在包中的绝对地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京中电华大电子设计有限责任公司,未经北京中电华大电子设计有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210351426.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:视频译码中的运动向量预测
- 下一篇:用于参考画面管理的编码器、解码器及其方法