二进制翻译方法、装置、电子设备及存储介质与流程

文档序号:36229921发布日期:2023-11-30 20:13阅读:56来源:国知局
二进制翻译方法与流程

本发明涉及计算机,特别是涉及一种二进制翻译方法、一种二进制翻译装置、一种电子设备以及一种存储介质。


背景技术:

1、二进制翻译可以将运行在一种体系结构平台的源程序转换为运行在另一种体系结构平台的目标程序。在二进制翻译的应用场景下,源程序运行的体系结构平台被称作guest(客户)平台,目标程序运行的体系结构平台被称作host(宿主)平台。由于宿主平台与客户平台的架构特性差异,宿主平台在对客户平台的指令进行翻译时,若指令对应的访存地址不满足宿主平台支持的对齐访问状态的要求,在宿主平台中则为非对齐访问状态。这样,就无法保证将客户平台的指令翻译到宿主平台后运行结果的一致性,进而影响源程序指令翻译的准确性。


技术实现思路

1、鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种二进制翻译方法,以提高宿主平台对客户平台的目标指令进行翻译的准确性。

2、相应的,本发明实施例还提供了一种二进制翻译装置、一种电子设备以及一种存储介质,用以保证上述方法的实现及应用。

3、为了解决上述问题,本发明实施例公开了一种二进制翻译方法,应用于宿主平台,所述方法包括:

4、在对客户平台的目标指令进行翻译的情况下,基于目标掩码数据以及原始内存数据,确定第一目标数据;所述原始内存数据是基于所述目标指令指示的目标内存地址读取到的,所述目标掩码数据是基于所述原始内存数据确定的,所述原始内存数据中包含有效字段以及非有效字段,所述第一目标数据中包含所述非有效字段;

5、基于所述目标指令对应的计算语义,获取其有效字段经逻辑右移处理后的所述原始内存数据对应的计算结果,得到第一计算结果;所述第一计算结果中包含所述有效字段对应的目标字段,所述目标字段用于表征所述目标指令在所述客户平台运行时对应的真实计算结果;

6、基于其目标字段经逻辑左移处理后的所述第一计算结果以及所述第一目标数据,确定目标运算结果;所述目标运算结果包括所述目标字段以及所述非有效字段;

7、将所述目标运算结果存储至所述目标指令指示的指定内存地址。

8、可选地,所述方法还包括:

9、确定所述原始内存数据中有效字段对应的第一值位以及非有效字段对应的第二值位;

10、将所述原始内存数据中第一值位对应的字段内容填充为第一数值,以及,将所述原始内存数据中第二值位对应的字段内容填充为第二数值;

11、确定包含所述第一数值以及所述第二数值的原始内存数据为所述目标掩码数据。

12、可选地,所述基于目标掩码数据以及原始内存数据,确定第一目标数据,包括:

13、获取所述目标掩码数据,以及从所述目标指令指示的目标内存地址中获取原始内存数据;

14、对所述目标掩码数据以及所述原始内存数据进行逻辑与操作,得到第一目标数据;

15、所述第一目标数据中与所述第一值位对应的字段内容为所述第一数值,所述第一目标数据中与所述第二值位对应的字段内容为所述非有效字段。

16、可选地,所述基于所述目标指令对应的计算语义,获取其有效字段经逻辑右移处理后的所述原始内存数据对应的计算结果,得到第一计算结果,包括:

17、对所述原始内存数据中的有效字段进行逻辑右移,确定第二目标数据;所述第二目标数据的指定值位对应的字段内容为所述有效字段;

18、基于所述目标指令对应的计算语义,获取所述第二目标数据对应的计算结果,得到所述第一计算结果;所述第一计算结果的指定值位对应的字段内容为所述有效字段对应的目标字段。

19、可选地,所述基于其目标字段经逻辑左移处理后的所述第一计算结果以及所述第一目标数据,确定目标运算结果,包括:

20、对所述第一计算结果中的目标字段进行逻辑左移,并将所述第一计算结果的非目标字段替换为第一数值,得到第三目标数据;所述第三目标数据中的目标字段对应的值位与所述原始内存数据中有效字段对应的值位一致;

21、对所述第三目标数据以及所述第一目标数据执行逻辑或操作,得到所述目标运算结果。

22、可选地,在所述目标指令为原子指令的情况下,所述方法还包括:

23、基于所述原子指令,生成目标指令序列;

24、基于所述目标指令序列中的链接加载指令,从所述原子指令指示的目标内存地址中获取原始内存数据,并将所述原始内存数据分别存储至第一寄存器以及第二寄存器,得到第一内存数据以及第二内存数据;

25、所述第一内存数据用于进行计算,所述第二内存数据用于使得所述目标运算结果中的非有效字段保持不变。

26、可选地,所述将所述目标运算结果存储至所述原子指令指示的指定内存地址,包括:

27、基于所述目标指令序列中的条件存储指令,在检测到不存在其他访问目标内存地址的操作的情况下,将所述目标运算结果写入所述目标内存地址;

28、在检测到存在其他访问目标内存地址的操作的情况下,重新执行所述基于所述目标指令序列中的链接加载指令,从所述原子指令指示的目标内存地址中获取原始内存数据的操作。

29、本发明实施例还公开了一种二进制翻译装置,应用于宿主平台,包括:

30、第一确定模块,用于在对客户平台的目标指令进行翻译的情况下,基于目标掩码数据以及原始内存数据,确定第一目标数据;所述原始内存数据是基于所述目标指令指示的目标内存地址读取到的,所述目标掩码数据是基于所述原始内存数据确定的,所述原始内存数据中包含有效字段以及非有效字段,所述第一目标数据中包含所述非有效字段;

31、第一获取模块,用于基于所述目标指令对应的计算语义,获取其有效字段经逻辑右移处理后的所述原始内存数据对应的计算结果,得到第一计算结果;所述第一计算结果中包含所述有效字段对应的目标字段,所述目标字段用于表征所述目标指令在所述客户平台运行时对应的真实计算结果;

32、第二确定模块,用于基于其目标字段经逻辑左移处理后的所述第一计算结果以及所述第一目标数据,确定目标运算结果;所述目标运算结果包括所述目标字段以及所述非有效字段;

33、第一存储模块,用于将所述目标运算结果存储至所述目标指令指示的指定内存地址。

34、可选地,所述装置还包括:

35、第三确定模块,用于确定所述原始内存数据中有效字段对应的第一值位以及非有效字段对应的第二值位;

36、第一填充模块,用于将所述原始内存数据中第一值位对应的字段内容填充为第一数值,以及,将所述原始内存数据中第二值位对应的字段内容填充为第二数值;

37、第四确定模块,用于确定包含所述第一数值以及所述第二数值的原始内存数据为所述目标掩码数据。

38、可选地,所述第一确定模块,包括:

39、第一获取子模块,用于获取所述目标掩码数据,以及从所述目标指令指示的目标内存地址中获取原始内存数据;

40、第一处理模块,用于对所述目标掩码数据以及所述原始内存数据进行逻辑与操作,得到第一目标数据;

41、所述第一目标数据中与所述第一值位对应的字段内容为所述第一数值,所述第一目标数据中与所述第二值位对应的字段内容为所述非有效字段。

42、可选地,所述第一获取模块,包括:

43、第二处理模块,用于对所述原始内存数据中的有效字段进行逻辑右移,确定第二目标数据;所述第二目标数据的指定值位对应的字段内容为所述有效字段;

44、第二获取子模块,用于基于所述目标指令对应的计算语义,获取所述第二目标数据对应的计算结果,得到所述第一计算结果;所述第一计算结果的指定值位对应的字段内容为所述有效字段对应的目标字段。

45、可选地,所述第二确定模块,包括:

46、第三处理模块,用于对所述第一计算结果中的目标字段进行逻辑左移,并将所述第一计算结果的非目标字段替换为第一数值,得到第三目标数据;所述第三目标数据中的目标字段对应的值位与所述原始内存数据中有效字段对应的值位一致;

47、第四处理模块,用于对所述第三目标数据以及所述第一目标数据执行逻辑或操作,得到所述目标运算结果。

48、可选地,在所述目标指令为原子指令的情况下,所述装置还包括:

49、第一生成模块,用于基于所述原子指令,生成目标指令序列;

50、第二获取模块,用于基于所述目标指令序列中的链接加载指令,从所述原子指令指示的目标内存地址中获取原始内存数据,并将所述原始内存数据分别存储至第一寄存器以及第二寄存器,得到第一内存数据以及第二内存数据;

51、所述第一内存数据用于进行计算,所述第二内存数据用于使得所述目标运算结果中的非有效字段保持不变。

52、可选地,所述第一存储模块,包括:

53、第一存储子模块,用于基于所述目标指令序列中的条件存储指令,在检测到不存在其他访问目标内存地址的操作的情况下,将所述目标运算结果写入所述目标内存地址;

54、第二存储子模块,用于在检测到存在其他访问目标内存地址的操作的情况下,重新执行所述基于所述目标指令序列中的链接加载指令,从所述原子指令指示的目标内存地址中获取原始内存数据的操作。

55、本发明实施例还公开了一种电子设备包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:

56、在对客户平台的目标指令进行翻译的情况下,基于目标掩码数据以及原始内存数据,确定第一目标数据;所述原始内存数据是基于所述目标指令指示的目标内存地址读取到的,所述目标掩码数据是基于所述原始内存数据确定的,所述原始内存数据中包含有效字段以及非有效字段,所述第一目标数据中包含所述非有效字段;

57、基于所述目标指令对应的计算语义,获取其有效字段经逻辑右移处理后的所述原始内存数据对应的计算结果,得到第一计算结果;所述第一计算结果中包含所述有效字段对应的目标字段,所述目标字段用于表征所述目标指令在所述客户平台运行时对应的真实计算结果;

58、基于其目标字段经逻辑左移处理后的所述第一计算结果以及所述第一目标数据,确定目标运算结果;所述目标运算结果包括所述目标字段以及所述非有效字段;

59、将所述目标运算结果存储至所述目标指令指示的指定内存地址。

60、本发明实施例还公开了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本发明实施例中一个或多个所述的二进制翻译方法。

61、本发明实施例包括以下优点:

62、本发明实施例中,在对客户平台的目标指令进行翻译的情况下,基于目标掩码数据以及原始内存数据,确定第一目标数据,由于第一目标数据中包含的是原始内存数据中的非有效字段,可以为后续确保得到的目标运算结果中的非有效字段保持不变奠定了基础。并且由于内存数据在进行计算时是由低位向高位按位进行计算,通过对原始内存数据的有效字段进行逻辑右移,可以使得右移后的原始内存数据中的有效字段处于整个数据的低位,能够避免在运算时由于其他位数据的进位或借位影响计算结果的准确性,使得基于有效字段得到的目标字段即目标指令在客户平台运行时对应的真实计算结果。进一步地,通过对第一计算结果中的目标字段进行逻辑左移,可以将目标字段恢复至原有效字段的值位,并基于包含非有效字段的第一目标数据,确定出目标运算结果,相当于目标运算结果中不仅包含对有效字段进行计算得到的目标字段,也包含了未被改动的非有效字段,确保了宿主平台将客户平台的目标指令翻译后得到的运行结果与该目标指令在客户平台运行的运行结果的一致性,进而提高了宿主平台对不同架构的客户平台的目标指令进行翻译的准确性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1