【技术实现步骤摘要】
二进制翻译方法、装置、电子设备及存储介质
[0001]本专利技术涉及计算机
,特别是涉及一种二进制翻译方法
、
装置
、
电子设备以及存储介质
。
技术介绍
[0002]二进制翻译可以将运行在一种体系结构平台
(guest
平台
)
的源程序转换为运行在另一种体系结构平台
(host
主平台
)
的目标程序,以解决二进制层面的应用程序跨指令集架构运行的问题
。
二进制翻译是近年来计算机
的研究热点之一
。
[0003]在实际应用中,为了限制程序规模,解决浪费内存和磁盘空间
、
模块更新困难等问题,在程序运行过程中通常使用动态链接的方式
。
也即,将程序的模块分割开来形成独立的文件,将链接这个过程推迟到了运行时再进行
。
库函数通常就是通过动态链接的方式进行使用
。
[0004]二进制翻译场景下,
guest
程序在
host
平台运行过程中若需要调用库函数,通常是将
guest
程序
、guest
程序的动态链接器和
guest
程序要调用的库函数一同翻译执行,翻译开销较大,影响程序运行效率
。
技术实现思路
[0005]鉴于上述问题,提出了本专利技术实施例以便提供一种克服上述问题或者至少部分地解决上述问题 ...
【技术保护点】
【技术特征摘要】
1.
一种二进制翻译方法,其特征在于,应用于宿主平台,所述方法包括:在所述宿主平台上翻译执行客户平台程序的过程中,当所述客户平台程序调用第一库函数时,触发运行所述客户平台程序的动态链接器;所述第一库函数为所述客户平台的共享库函数;通过所述动态链接器获取所述第一库函数的调用信息,并触发运行预置的虚拟链接器;所述调用信息包括所述第一库函数的函数符号和所述客户平台程序调用所述第一库函数的调用地址;在所述第一库函数满足预设调用条件的情况下,所述虚拟链接器基于所述第一库函数的调用信息建立虚拟通道,并通过所述虚拟通道调用第二库函数;所述第二库函数为所述宿主平台的共享库函数,且与所述第一库函数相匹配
。2.
根据权利要求1所述的方法,其特征在于,所述动态链接器中预置有虚拟系统调用指令,所述方法还包括:所述动态链接器在获取所述第一库函数的调用信息后,执行所述虚拟系统调用指令,并将所述调用信息作为参数传递给所述虚拟系统调用指令;所述虚拟链接器通过所述虚拟系统调用指令存放在寄存器中的参数,获取所述第一库函数的调用信息
。3.
根据权利要求1所述的方法,其特征在于,所述虚拟链接器预置在翻译器中,所述触发运行预置的虚拟链接器,包括:在所述翻译器翻译当前的系统调用指令时,若确定所述当前的系统调用指令为预置的虚拟系统调用指令,则触发运行所述虚拟链接器
。4.
根据权利要求1所述的方法,其特征在于,所述基于所述第一库函数的调用信息建立虚拟通道,并通过所述虚拟通道调用第二库函数,包括:保存所述客户平台程序当前的相关寄存器状态;对所述第二库函数进行包装,并基于所述调用信息调用包装后的第二库函数;所述包装后的第二库函数用于在所述宿主机平台上模拟所述第一库函数的传递参数和返回值的行为;恢复保存的所述相关寄存器状态
。5.
根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述客户平台程序的翻译后代码中调用所述第一库函数的位置插入所述虚拟通道的相关代码;在所述客户平台程序下一次调用所述第一库函数时,执行所述虚拟通道的相关代码,以通过所述虚拟通道调用所述第二库函数
。6.
根据权利要求1所述的方法,其特征在于,所述方法还包括:所述虚拟链接器通过所述第一库函数的函数符号查询预置映射表,若所述预置映射表中存在与所述第一库函数的函数符号相匹配的第二库函数的相关信息,则确定所述第一库函数满足预设调用条件
。7.
根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述第一库函数不满足所述预设调用条件的情况下,返回所述客户平台程序的动态链接器中执行翻译及调用所述第一库函数的操作
。
8.
一种二进制翻译装置,其特征在于,应用于宿主平台,所述装置包括翻译器
、
动态链接器和预置的虚拟链接器,其中:所述翻译器,用于在所述宿主平台上翻译执行客户平台程序的过程中,当所述客户平台程序调用第一库函数时,触发运行所述客户平台程序的动态链接器;所述第一库函数为所述客户平台...
【专利技术属性】
技术研发人员:闫昭煜,曾露,
申请(专利权)人:龙芯中科技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。