(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202210381739.6
(22)申请日 2022.04.13
(71)申请人 飞腾信息技 术有限公司
地址 300450 天津市滨 海新区海 洋高新技
术开发区信安创业广场5号楼
(72)发明人 黄能超 李根 吕蓊鉴 吴楠
徐霞丽
(74)专利代理 机构 北京布瑞知识产权代理有限
公司 11505
专利代理师 张欣
(51)Int.Cl.
G06F 9/445(2018.01)
G06F 9/448(2018.01)
G06F 9/455(2006.01)
G06F 8/76(2018.01)
(54)发明名称
运行软件的方法、 装置及机 器可读存 储介质
(57)摘要
提供一种运行软件的方法、 装置及机器可读
存储介质。 该方法可用于将目标软件从源机器移
植至目标机器。 该目标软件为基于语 言虚拟机的
软件。 源机器的处理器基于第一指令集架构, 目
标机器的处理器基于第二指令集架构, 且第一指
令集架构与第二指令集架构不同。 该方法包括:
在目标机器上加载目标软件的主程序; 响应于该
主程序调用目标软件的专有动态库, 调用该专有
动态库的翻译代码; 其中, 目标软件的主程序基
于第二指令集架构, 专有动态库基于第一指令集
架构。 本申请实施例在目标机器上直接加载目标
软件的主程序 (与目标机器基于相同的指令集架
构) , 而不需要对该主程序进行翻译, 从而能够提
升软件在目标机 器上的执 行性能。
权利要求书3页 说明书14页 附图6页
CN 114461306 A
2022.05.10
CN 114461306 A
1.一种运行软件的方法, 其特征在于, 所述方法用于将目标软件从源机器移植至目标
机器, 所述源机器的处理器基于第一指令集架构, 所述 目标机器的处理器基于第二指令集
架构, 所述第一指令集架构与所述第二指令集架构不同,
所述方法包括:
在所述目标机器上加载 所述目标 软件的主程序;
响应于所述主程序调用所述目标软件的专有动态库, 调用所述专有动态库的翻译代
码;
其中, 所述目标软件的主程序基于所述第二指令集架构, 所述专有动态库基于所述第
一指令集架构。
2.根据权利要求1所述的方法, 其特 征在于, 所述方法还 包括:
响应于所述专有动态库调用所述目标软件的公共动态库, 调用所述目标机器的原生公
共动态库。
3.根据权利要求2所述的方法, 其特 征在于, 所述方法还 包括:
对所述专有动态库的导入函数的地址进行重定向, 使得所述导入函数的地址指向第 一
指令片段的地址;
所述响应于所述专有动态库调用所述目标软件的公共动态库, 调用所述目标机器的原
生公共动态库, 包括:
响应于所述专有动态库调用所述导入函数, 利用所述导入函数的地址确定所述第 一指
令片段的地址;
对所述第一指令片段进行ABI转换, 得到第二指令片段, 所述第二指令片段指向所述目
标机器的原生公共动态库;
利用所述第二指令片段调用所述目标机器的原生公共动态库。
4.根据权利要求1所述的方法, 其特 征在于, 所述方法还 包括:
响应于所述主程序调用所述目标软件的公共动态库, 直接调用所述目标机器的原生公
共动态库。
5.根据权利要求1所述的方法, 其特 征在于, 所述方法还 包括:
对所述专有动态库的导出函数的地址进行重定向, 使得所述导出函数的地址指向第 三
指令片段的地址;
所述响应于所述主程序调用所述目标软件的专有动态库, 调用所述专有动态库的翻译
代码, 包括:
响应于所述主程序调用所述导出函数, 利用所述导出函数的地址确定所述第 三指令片
段的地址;
对所述第三指令片段进行ABI转换, 得到第四指令片段, 其中, 所述第四指令片段指 向
所述翻译代码;
利用所述第四指令片段调用所述翻译代码。
6.根据权利要求1所述的方法, 其特征在于, 所述响应于所述主程序调用所述目标软件
的专有动态库, 调用所述专有动态库的翻译代码, 包括:
响应于所述主程序调用所述目标软件的专有动态库, 调用所述目标机器上的翻译引擎
动态库;权 利 要 求 书 1/3 页
2
CN 114461306 A
2利用所述翻译引擎动态库对所述专有动态库进行翻译, 得到所述专有动态库的翻译代
码;
调用所述专有动态库的翻译代码。
7.根据权利要求1所述的方法, 其特 征在于, 所述方法还 包括:
加载所述目标 软件的动态库;
根据所述目标软件的动态库的elf文件, 识别所述目标软件的动态库所基于的指令集
架构;
如果所述目标软件的动态库基于所述第 一指令集架构, 调用翻译引擎动态库对所述目
标软件的动态库进行翻译和重 定向, 以定位所述目标 软件的动态库的翻译代码;
如果所述目标软件的动态库基于所述第 二指令集架构, 直接定位所述目标软件的动态
库。
8.根据权利要求1所述的方法, 其特征在于, 所述主程序为所述目标机器的原生语言虚
拟机。
9.根据权利 要求8所述的方法, 其特征在于, 所述原生语言虚拟机为java虚拟机或.net
虚拟机。
10.根据权利要求1所述的方法, 其特征在于, 所述第一指令集架构与所述第二指令集
架构中的一个为x86指令集架构, 所述第一指令集架构与所述第二指令集架构中的另一个
为arm指令集架构。
11.一种运行软件的装置, 其特征在于, 所述装置用于将目标软件从源机器移植至目标
机器, 所述源机器的处理器基于第一指令集架构, 所述 目标机器的处理器基于第二指令集
架构, 所述第一指令集架构与所述第二指令集架构不同,
所述装置包括:
加载模块, 用于在所述目标机器上加载 所述目标 软件的主程序;
第一调用模块, 用于响应于所述主程序调用所述目标软件的专有动态库, 调用所述专
有动态库的翻译代码;
其中, 所述目标软件的主程序基于所述第二指令集架构, 所述专有动态库基于所述第
一指令集架构。
12.根据权利要求1 1所述的装置, 其特 征在于, 所述装置还 包括:
第二调用模块, 用于响应于所述专有动态库调用所述目标软件的公共动态库, 调用所
述目标机器的原生公共动态库。
13.根据权利要求12所述的装置, 其特 征在于, 所述装置还 包括:
第一重定向模块, 用于对所述专有动态库的导入函数的地址进行重定向, 使得所述导
入函数的地址指向第一指令片段的地址;
所述第二调用模块用于响应于所述专有动态库调用所述导入函数, 利用所述导入函数
的地址确定所述第一指 令片段的地址; 对所述第一指 令片段进 行ABI转换, 得到第二指 令片
段, 所述第二指令片段指向所述 目标机器的原生公共动态库; 利用所述第二指令片段调用
所述目标机器的原生公共动态库。
14.根据权利要求1 1所述的装置, 其特 征在于, 所述装置还 包括:
第三调用模块, 用于响应于所述主程序调用所述目标软件的公共动态库, 直接调用所权 利 要 求 书 2/3 页
3
CN 114461306 A
3
专利 运行软件的方法、装置及机器可读存储介质
安全报告 >
其他 >
文档预览
中文文档
24 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共24页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 00:07:47上传分享