二进制翻译方法技术

技术编号:39520958 阅读:9 留言:0更新日期:2023-11-25 19:00
本发明专利技术实施例提供了一种二进制翻译方法

【技术实现步骤摘要】
二进制翻译方法、装置、电子设备及存储介质


[0001]本专利技术涉及计算机
,特别是涉及一种二进制翻译方法

装置

电子设备以及存储介质


技术介绍

[0002]二进制翻译可以将运行在一种体系结构平台
(guest
平台
)
的源程序转换为运行在另一种体系结构平台
(host
主平台
)
的目标程序,以解决二进制层面的应用程序跨指令集架构运行的问题

二进制翻译是近年来计算机
的研究热点之一

[0003]在实际应用中,为了限制程序规模,解决浪费内存和磁盘空间

模块更新困难等问题,在程序运行过程中通常使用动态链接的方式

也即,将程序的模块分割开来形成独立的文件,将链接这个过程推迟到了运行时再进行

库函数通常就是通过动态链接的方式进行使用

[0004]二进制翻译场景下,
guest
程序在
host
平台运行过程中若需要调用库函数,通常是将
guest
程序
、guest
程序的动态链接器和
guest
程序要调用的库函数一同翻译执行,翻译开销较大,影响程序运行效率


技术实现思路

[0005]鉴于上述问题,提出了本专利技术实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种二进制翻译方法,可以减少翻译器翻译客户平台的第一库函数带来的翻译开销,并且由于执行的是本地原生库函数,消除了指令翻译带来的代码膨胀,提高程序运行效率

再者,由于本地库函数可以无间断执行,减少了
guest
程序和翻译器之间的上下文切换开销

[0006]相应的,本专利技术实施例还提供了一种二进制翻译装置

电子设备

以及一种存储介质,用以保证上述方法的实现及应用

[0007]第一方面,本专利技术实施例公开了一种二进制翻译方法,所述方法包括:
[0008]在所述宿主平台上翻译执行客户平台程序的过程中,当所述客户平台程序调用第一库函数时,触发运行所述客户平台程序的动态链接器;所述第一库函数为所述客户平台的共享库函数;
[0009]通过所述动态链接器获取所述第一库函数的调用信息,并触发运行预置的虚拟链接器;所述调用信息包括所述第一库函数的函数符号和所述客户平台程序调用所述第一库函数的调用地址;
[0010]在所述第一库函数满足预设调用条件的情况下,所述虚拟链接器基于所述第一库函数的调用信息建立虚拟通道,并通过所述虚拟通道调用第二库函数;所述第二库函数为所述宿主平台的共享库函数,且与所述第一库函数相匹配

[0011]第二方面,本专利技术实施例公开了一种二进制翻译装置,应用于宿主平台,所述装置包括翻译器

动态链接器和预置的虚拟链接器,其中:
[0012]所述翻译器,用于在所述宿主平台上翻译执行客户平台程序的过程中,当所述客户平台程序调用第一库函数时,触发运行所述客户平台程序的动态链接器;所述第一库函数为所述客户平台的共享库函数;
[0013]所述动态链接器,用于获取所述第一库函数的调用信息,并触发运行预置的虚拟链接器;所述调用信息包括所述第一库函数的函数符号和所述客户平台程序调用所述第一库函数的调用地址;
[0014]所述虚拟链接器,用于在所述第一库函数满足预设调用条件的情况下,基于所述第一库函数的调用信息建立虚拟通道,并通过所述虚拟通道调用第二库函数;所述第二库函数为所述宿主平台的共享库函数,且与所述第一库函数相匹配

[0015]第三方面,本专利技术实施例公开了一种电子设备,包括:处理器

存储器

通信接口和通信总线,所述处理器

所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如前述中任一所述的二进制翻译方法的步骤

[0016]第四方面,本专利技术实施例公开了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时能够实现本专利技术实施例中任一所述的二进制翻译方法

[0017]本专利技术实施例提供的二进制翻译方法

装置

电子设备及存储介质包括以下优点:
[0018]本专利技术实施例在宿主平台上翻译执行客户平台程序的过程中,当所述客户平台程序第一次调用第一库函数时,会跳转至所述客户平台程序的动态链接器中的处理逻辑,本专利技术实施例对该处理逻辑进行了修改,采用预置的虚拟链接器替换原本动态链接器调用第一库函数的操作

所述虚拟链接器用于在第一库函数满足预设调用条件的情况下,基于所述第一库函数的调用信息建立虚拟通道,通过所述虚拟通道可以调用第二库函数;所述第二库函数为所述宿主平台的共享库函数,且与所述第一库函数相匹配

由此实现客户平台程序在宿主平台上翻译执行的过程中可以直接调用宿主平台的共享库函数
(
库直通功能
)
,跳转至宿主平台的共享库函数进行执行,不再是由动态链接器进行库函数调用,可以减少翻译器翻译第一库函数带来的翻译开销,提高程序运行效率

此外,在第一次对第一库函数实现库直通功能之后,客户平台程序再次调用相同的第一库函数时,不再需要通过虚拟系统调用触发虚拟链接器,可以无中断的直接调用相匹配的第二库函数,可以减少客户平台程序和翻译器之间的上下文切换开销,进一步提高程序执行效率

再者,由于实现库直通功能之后,执行的是宿主平台的原生库代码,相较于执行翻译代码而言,消除了指令翻译带来的代码膨胀,代码质量更高,有助于提高程序执行效率

附图说明
[0019]图1是本专利技术的一种二进制翻译方法实施例的步骤流程图;
[0020]图2是本专利技术客户平台程序第一次调用第一库函数的流程示意图;
[0021]图3是本专利技术客户平台程序下一次调用第一库函数的流程示意图;
[0022]图4是本专利技术的一种二进制翻译装置实施例的结构框图;
[0023]图5是本专利技术实施例提供的电子设备的结构示意图

具体实施方式
[0024]为使本专利技术的上述目的

特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本专利技术作进一步详细的说明

[0025]本专利技术的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序

应该理解这样使用的数据在适当情况下可以互换,以便本专利技术的实施例能本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种二进制翻译方法,其特征在于,应用于宿主平台,所述方法包括:在所述宿主平台上翻译执行客户平台程序的过程中,当所述客户平台程序调用第一库函数时,触发运行所述客户平台程序的动态链接器;所述第一库函数为所述客户平台的共享库函数;通过所述动态链接器获取所述第一库函数的调用信息,并触发运行预置的虚拟链接器;所述调用信息包括所述第一库函数的函数符号和所述客户平台程序调用所述第一库函数的调用地址;在所述第一库函数满足预设调用条件的情况下,所述虚拟链接器基于所述第一库函数的调用信息建立虚拟通道,并通过所述虚拟通道调用第二库函数;所述第二库函数为所述宿主平台的共享库函数,且与所述第一库函数相匹配
。2.
根据权利要求1所述的方法,其特征在于,所述动态链接器中预置有虚拟系统调用指令,所述方法还包括:所述动态链接器在获取所述第一库函数的调用信息后,执行所述虚拟系统调用指令,并将所述调用信息作为参数传递给所述虚拟系统调用指令;所述虚拟链接器通过所述虚拟系统调用指令存放在寄存器中的参数,获取所述第一库函数的调用信息
。3.
根据权利要求1所述的方法,其特征在于,所述虚拟链接器预置在翻译器中,所述触发运行预置的虚拟链接器,包括:在所述翻译器翻译当前的系统调用指令时,若确定所述当前的系统调用指令为预置的虚拟系统调用指令,则触发运行所述虚拟链接器
。4.
根据权利要求1所述的方法,其特征在于,所述基于所述第一库函数的调用信息建立虚拟通道,并通过所述虚拟通道调用第二库函数,包括:保存所述客户平台程序当前的相关寄存器状态;对所述第二库函数进行包装,并基于所述调用信息调用包装后的第二库函数;所述包装后的第二库函数用于在所述宿主机平台上模拟所述第一库函数的传递参数和返回值的行为;恢复保存的所述相关寄存器状态
。5.
根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述客户平台程序的翻译后代码中调用所述第一库函数的位置插入所述虚拟通道的相关代码;在所述客户平台程序下一次调用所述第一库函数时,执行所述虚拟通道的相关代码,以通过所述虚拟通道调用所述第二库函数
。6.
根据权利要求1所述的方法,其特征在于,所述方法还包括:所述虚拟链接器通过所述第一库函数的函数符号查询预置映射表,若所述预置映射表中存在与所述第一库函数的函数符号相匹配的第二库函数的相关信息,则确定所述第一库函数满足预设调用条件
。7.
根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述第一库函数不满足所述预设调用条件的情况下,返回所述客户平台程序的动态链接器中执行翻译及调用所述第一库函数的操作

8.
一种二进制翻译装置,其特征在于,应用于宿主平台,所述装置包括翻译器

动态链接器和预置的虚拟链接器,其中:所述翻译器,用于在所述宿主平台上翻译执行客户平台程序的过程中,当所述客户平台程序调用第一库函数时,触发运行所述客户平台程序的动态链接器;所述第一库函数为所述客户平台...

【专利技术属性】
技术研发人员:闫昭煜曾露
申请(专利权)人:龙芯中科技术股份有限公司
类型:发明
国别省市:

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

1