一种基于短名称的链接方法和系统技术方案

技术编号:34881374 阅读:30 留言:0更新日期:2022-09-10 13:38
本发明专利技术涉及一种基于短名称的链接方法和系统,属于程序链接及映射技术领域。本发明专利技术所述的方法中设定需进行名称转换的成员的转换规则,设定内部成员访问指令使用内部成员的标识方法,设定方法的异常处理程序的内部异常类使用内部成员的表示方法;设定成员进行名称转换的转换实现流程;根据所述成员进行名称转换的转换规则及所述内部成员访问指令使用内部成员的表示方法生成与所述待转换应用文件对应的可执行文件及名称映射文件;对所述可执行文件进行解析安装。采用本发明专利技术所述的方法,能够有效减少常量池的大小,进而减少指令的常量池索引解析操作,可以显著提高应用的下载和安装性能。装性能。装性能。

【技术实现步骤摘要】
一种基于短名称的链接方法和系统


[0001]本专利技术属于程序链接及映射的
,具体涉及一种基于短名称的链接方法和系统。

技术介绍

[0002]在安全芯片(包括智能SE、安全MCU等)领域中,支持动态下载应用的多应用芯片操作系统已经在金融、电信、交通等领域进行了广泛部署和使用。多应用芯片操作系统一般使用高级语言编写应用程序,通过编译器和相关转换工具编译转换成芯片操作系统支持的可执行二进制文件格式,可下载并安装到芯片操作系统的虚拟机中执行。
[0003]虚拟机是由一种被处理器执行的软件应用程序或指令序列产生的抽象计算机,平台无关指用Python、Java、Kotlin等面向对象的高级编程语言编写的应用程序,可以在各种不同计算机平台上通过虚拟机来执行,虚拟机的指令序列是独立平台编码的一个或多个字节码代码流。高级语言虚拟机执行高级编程语言并用于32位或者64位结构,智能SE、安全MCU等资源受限装置难以承载实现基于32位操作指令的虚拟机。高级语言虚拟机,指令通过常量池中符号名标识类、方法和域等程序元素,在解析这些程序元素的标识操作时需求较大的储存资源,在智能SE、安全MCU等资源受限装置中不具备实用性。因此,现有技术方法中对程序指令元素的标识进行操作需要消耗大量存储资源而无法适用于资源受限装置中的问题。

技术实现思路

[0004]针对现有技术中存在的缺陷,本专利技术的目的是提供一种基于短名称的链接方法和系统。该方法和系统通过对高级语言的元素名称进行重新名,既减少常量池的大小,也可对同类元素进行排序,便于应用安装到装置时进行类链接时定位引用元素位置,同时专门设计访问元素的指令,将访问内部元素的指令以及方法的异常处理程序的异常类直接使用内部部件的偏移位置,有效减少常量池的大小,进而减少指令的常量池索引解析操作,可以显著提高应用的下载和安装性能。
[0005]为达到以上目的,本专利技术采用的技术方案是:一种基于短名称的链接方法,包括以下步骤:
[0006]若接收到所输入的待转换应用文件,设定需要进行名称转换的成员的转换规则,所述成员包括公开类和接口、类的所有实例域、公开和受保护的静态域、公开和受保护的静态方法、虚方法、接口方法;设定内部成员访问指令使用内部成员的表示方法,所述内部成员访问指令包括静态域访问指令、静态方法调用指令及对象访问指令;设定所述成员进行名称转换的转换实现流程;根据所述成员进行名称转换的转换规则及所述内部成员访问指令使用内部成员的表示方法生成与所述待转换应用文件对应的可执行文件及名称映射文件;所述可执行文件包括应用信息段、链接数据段、动态绑定数据段、静态绑定段及代码段;对所述可执行文件进行解析安装。
[0007]进一步,所述设定需要进行名称转换的成员的转换规则,包括:设定公开类和接口的名称转换为有序的字符数量较少的短名称;设定类的所有实例域的名称转换为有序的字符数量较少的短名称;设定虚方法的名称转换为有序的字符数量较少的短名称;设定静态域、静态方法、接口方法的名称均转换为有序的字符数量较少的短名称。
[0008]进一步,所述设定所述成员进行名称转换的转换实现流程,包括:获取所述待转换应用文件中公开类和接口的名称并依次转换为由大写字母组成的2字符短名称:AA、AB、AC

AZ、BA、BB

;对所述待转换应用文件中的实例域按顺序进行排序分组,以将所述实例域分组为公开/受保护的基本类型、公开/受保护的引用类型、包或者私有的应用类型、包或者私有的基本类型,将实例域的名称依次转换为由小写字母组成的2字符短名称:aa、ab、ac

az、ba、bb

,记录其中首个引用类型的名称以及所有引用类型的个数;获取所述待转换应用文件中的虚方法的名称并依次转换为由小写字母组成的2字符短名称,虚方法中的公开/受保护的虚方法从根超类的虚方法开始依次转换为aa、ab、ac

az、ba、bb

mz;子类定义的虚方法接着超类的虚方法连续命名,且子类覆盖超类定义的虚方法则和超类转换的名称保持一致;虚方法中包可见的虚方法从无同包超类的类的虚方法开始依次转换为na、nb、nc

zz;子类定义的虚方法接着同包中的超类的虚方法连续命名,覆盖同包超类声明的虚方法则和超类转换的名称保持一致;获取所述待转换应用文件中接口方法的名称并依次转换为由小写字母组成的2字符短名称:aa、ab、ac

az、ba、bb

;获取所述待转换应用文件中公开和受保护的静态域的名称并判断静态域是否为fianl基本数据类型的静态域;若是则将静态域的名称转换为2字符短名称zz并获取对应的常数值;若不是则将静态域的名称依次转换为其它由小写字母组成的2字符短名称:aa、ab、ac

az、ba、bb

;获取所述待转换应用文件中公开和受保护的静态方法并依次将静态方法的名称转换为由小写字母组成的2字符短名称:aa、ab、ac

az、ba、bb


[0009]进一步,所述根据所述成员进行名称转换的转换规则及所述内部成员访问指令使用内部成员的表示方法生成与所述待转换应用文件对应的可执行文件及名称映射文件,包括:获取待转换应用文件中各成员的元素名称与转换后名称的映射关系,以生成对应的名称映射文件;获取所述待转换应用文件中应用的标识信息和安装方法在代码段的偏移,以及所输入的应用的实现类的配置参数组合以生成对应的应用信息段,其中应用的安装方法由应用类的静态方法实现;获取所述待转换应用文件中声明的所有类的信息及接口的信息,以生成对应的动态绑定数据段;所述类的信息包括新建实例指令需要的所有信息;获取所述待转换应用文件中声明的所有静态域的信息,以生成对应的静态绑定数据段;根据名称映射文件生成与所述待转换应用文件对应的链接数据段,所述链接数据段包括导入包子段、常量池子段、代码常量池索引位置子段、本包输出项子段;获取所述待转换应用文件中所有类定义的方法的字节码以及异常处理程序信息,以生成对应的代码段。
[0010]进一步,所述根据名称映射文件生成与所述待转换应用文件对应的链接数据段,包括:从所述名称映射文件获取每个导入包的表述信息,以生成对应的导入包子段;从所述待转换应用文件的代码段中获取指令引用的类、方法和域,以生成对应的常量池子段;获取所述待转换应用文件中所有常量池索引的位置,以生成对应的代码常量池索引位置子段;获取所述待转换应用文件中每个类在动态绑定数据段中的偏移,以及类中每个静态域在静态域镜像中的偏移、类中每个静态方法在代码段中的偏移,以生成对应的本包输出项子段。
[0011]一种基于短名称的链接系统,包括以下装置:转换规则设定装置,用于若接收到所输入的待转换应用文件,设定需要进行名称转换的成员的转换规则,所述成员包括公开类和接口、类的所有实例域、公开和受保护的静态域、公开和受保护的静态方法、虚方法、接口方法;表本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于短名称的链接方法,其特征在于,所述方法用于对程序文件中定义的类和接口进行转换得到可执行文件及名称映射文件,通过名称映射文件对可执行文件进行快速解析安装,所述方法包括以下步骤:若接收到所输入的待转换应用文件,设定需要进行名称转换的成员的转换规则,所述成员包括公开类和接口、类的所有实例域、公开和受保护的静态域、公开和受保护的静态方法、虚方法、接口方法;设定内部成员访问指令使用内部成员的表示方法,所述内部成员访问指令包括静态域访问指令、静态方法调用指令及对象访问指令;设定方法的异常处理程序的内部异常类使用内部成员的表示方法;设定所述成员进行名称转换的转换实现流程;根据所述成员进行名称转换的转换规则及所述内部成员访问使用内部成员的表示方法生成与所述待转换应用文件对应的可执行文件及名称映射文件;所述可执行文件包括应用信息段、链接数据段、动态绑定数据段、静态绑定段及代码段;对所述可执行文件进行解析安装。2.如权利要求1所述的一种基于短名称的链接方法,其特征在于,所述设定需要进行名称转换的成员的转换规则,包括:设定公开类和接口的名称转换为有序的字符数量较少的短名称;设定类的所有实例域的名称转换为有序的字符数量较少的短名称;设定虚方法的名称转换为有序的字符数量较少的短名称;设定静态域、静态方法、接口方法的名称均转换为有序的字符数量较少的短名称。3.如权利要求1所述的一种基于短名称的链接方法,其特征在于,所述设定所述成员进行名称转换的转换实现流程,包括:获取所述待转换应用文件中公开类和接口的名称并依次转换为由大写字母组成的2字符短名称:AA、AB、AC

AZ、BA、BB

;对所述待转换应用文件中的实例域按顺序进行排序分组,以将所述实例域分组为公开/受保护的基本类型、公开/受保护的引用类型、包或者私有的应用类型、包或者私有的基本类型,将实例域的名称依次转换为由小写字母组成的2字符短名称:aa、ab、ac

az、ba、bb

,记录其中首个引用类型的名称以及所有引用类型的个数;获取所述待转换应用文件中的虚方法的名称并依次转换为由小写字母组成的2字符短名称,虚方法中的公开/受保护的虚方法从根超类的虚方法开始依次转换为aa、ab、ac

az、ba、bb

mz;子类定义的虚方法接着超类的虚方法连续命名,且子类覆盖超类定义的虚方法则和超类转换的名称保持一致;虚方法中包可见的虚方法从无同包超类的类的虚方法开始依次转换为na、nb、nc

zz;子类定义的虚方法接着同包中的超类的虚方法连续命名,覆盖同包超类声明的虚方法则和超类转换的名称保持一致;获取所述待转换应用文件中接口方法的名称并依次转换为由小写字母组成的2字符短名称:aa、ab、ac

az、ba、bb

;获取所述待转换应用文件中公开和受保护的静态域的名称并判断静态域是否为fianl基本数据类型的静态域;若是则将静态域的名称转换为2字符短名称zz并获取对应的常数值;若不是则将静态域的名称依次转换为其它由小写字母组成的2字符短名称:aa、ab、ac

az、ba、bb

;获取所述待转换应用文件中公开和受保护的静态方法并依次将静态方法的名称转换为由小写字母组成的2字符短名称:aa、ab、ac

az、ba、bb

。4.如权利要求1所述的一种基于短名称的链接方法,其特征在于,所述根据所述成员进行名称转换的转换规则及所述内部成员访问指令使用内部成员的表示方法生成与所述待转换应用文件对应的可执行文件及名称映射文件,包括:获取待转换应用文件中各成员的元素名称与转换后名称的映射关系,以生成对应的名称映射文件;获取所述待转换应用文件中应用的标识信息和安装方法在代码段的偏移,以及所输入的应用的实现类的配置参数组合以生成对应的应用信息段,其中应用的安装方法由应用类的静态方法实现;获取所述待转换应用文件中声明的所有类的信息及接口的信息,以生成对应的动态绑定数据段;所述类的信息包括新建实例指令需要的所有信息;获取所述待转换应用文件中声明的所有静态域的信息,以生成对应的静态绑定数据段;根据名称映射文件生成与所述待转换应用文件对应的链接数据段,所述链接数据段包括导入包子段、常量池子段、代码常量池索引位置子段、本包输出项子段;获取所述待转换应用文件中所有类定义的方法的字节码以及异常处理程序信息,以生成对应的代码段。5.如权利要求4所述的一种基于短名称的链接方法,其特征在于,所述根据名称映射文件生成与所述待转换应用文件对应的链接数据段,包括:从所述名称映射文件获取每个导入包的表述信息,以生成对应的导入包子段;从所述待转换应用文件的代码段中获取指令引用的类、方法和域,以生成对应的常量池子段;获取所述待转换应用文件中所有常量池索引的位置,以生成对应的代码常量池索引位置子段;获取所述待转换应用文件中每个类在动态绑定数据段中的偏移,以及类中每个静态域在静态域镜像中的偏移、类中每个静态方法在代码段中的偏移,以生成对应的本包输出项子段。6.一种基于短名称的链接系统,其特征在于,包括以下装置:转换规则设定装置,用于若接收到所输入的待转换应用文件,设定需要进行名称转换的成员的转换规则,所述...

【专利技术属性】
技术研发人员:石玉平郑江东徐俊江王幼君
申请(专利权)人:北京握奇智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1