[发明专利]一种代码链接优化方法有效
申请号: | 202211020379.3 | 申请日: | 2022-08-24 |
公开(公告)号: | CN115309405B | 公开(公告)日: | 2023-08-04 |
发明(设计)人: | 沈英哲;庹凌云;王文东;陈远建;吕彦辉;彭文凭 | 申请(专利权)人: | 北京熵核科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/61;G06F8/71 |
代理公司: | 北京亿腾知识产权代理事务所(普通合伙) 11309 | 代理人: | 陈霁 |
地址: | 100192 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 代码 链接 优化 方法 | ||
本发明涉及一种代码链接优化方法,所述方法包括:获取程序的安装文件,所述安装文件中包含至少一个类;将安装文件安装到目标设备上,得到程序镜像,其中,对于安装文件中类的每个实例域,分配一个唯一的索引;对于安装文件中类的每个虚方法,如果其重写了祖先类中的虚方法,则使用祖先类中的虚方法的索引作为该虚方法的索引,否则,为其分配一个新的索引。
技术领域
本发明涉及代码编译领域,尤其涉及一种代码链接优化方法。
背景技术
基于符号的代码链接(symbol-based linking)被广泛应用于各种编程语言中,Java虚拟机(JVM)中也采用了此项技术,用于方法调用、数据域(field)访问以及其他操作。基于JVM的Java Card虚拟机(JCVM)因其运行在资源受限的智能卡上,对JVM中原有的代码链接方法进行优化,在代码转换时使用一种特殊的符号,即基于整数的令牌(token),作为Java代码中类(class)、方法(method)和域(field)的标识,从而移除在代码链接和代码运行过程中对常量池(constant pool)的依赖和符号解析,最终既减少程序所需安装空间又减少程序运行时间。但作为代价,JCVM为满足向后兼容性,对API的后续修改施加更为严格的限制,比如不能在一个外部可见类或接口中添加新的方法。
基于符号的代码链接,其核心内容是符号分配和符号解析,前者影响编译速度,后者影响运行效率。同时为满足符号在一定范围(scope)内具有唯一性的要求,符号的长度都会比较长。对于智能卡等资源受限的嵌入式设备,因为程序大多是在台式机上编译,然后再下载到智能卡上,所以符号解析的影响更大。符号解析的主要工作就是通过比较符号获得被引用类、方法或域的地址。符号越长,比较就越耗时,进而导致指令的执行时间也相应变长。
发明内容
本发明的目的是提供一种代码链接优化方法,旨在通过在程序安装过程中将符号转换成一个索引(比如1字节整数或其他可以快速比较的数据类型),并在指令执行过程中通过比较该索引,而不是原来比较长的符号来减少符号解析的时间,进而减少指令的执行时间。
第一方面,提供了一种代码链接优化方法,包括:
获取程序的安装文件,所述安装文件中包含至少一个类;
将安装文件安装到目标设备上,得到程序镜像,其中,对于安装文件中类的每个实例域,分配一个唯一的索引;对于安装文件中类的每个虚方法,如果其重写了祖先类中的虚方法,则使用祖先类中的虚方法的索引作为该虚方法的索引,否则,为其分配一个新的索引。
在一种可能的实施方式中,所述索引为整数。
在一种可能的实施方式中,所述将安装文件安装到目标设备上,得到程序镜像,还包括:
对于每个引用实例域的指令,使用分配给它的索引替换指令中原有的操作数;对于每个调用虚方法的指令,使用分配给它的索引替换指令中原有的操作数。
在一种可能的实施方式中,所述程序镜像包括第一数据结构和第二数据结构,所述第一数据结构用于保存为所述实例域分配的索引,所述第二数据结构用于保存为所述虚方法分配的索引。
在一种可能的实施方式中,所述获取程序的安装文件,包括:
获取程序的源代码,将源代码进行编译和转换,得到程序的安装文件,其中,将程序的类、方法和域的符号保存到安装文件中,其中,所述域包括实例域,所述方法包括虚方法。
在一种可能的实施方式中,所述安装文件包括第三数据结构和第四数据结构,所述第三数据结构用于保存所述域的符号,所述第四数据结构用于保存所述方法的符号。
在一种可能的实施方式中,所述实例域的索引与实例域的符号一一对应;所述虚方法的索引与虚方法的符号一一对应。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京熵核科技有限公司,未经北京熵核科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211020379.3/2.html,转载请声明来源钻瓜专利网。