System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 代码翻译处理方法、系统、计算机系统及计算机设备技术方案_技高网

代码翻译处理方法、系统、计算机系统及计算机设备技术方案

技术编号:40039112 阅读:5 留言:0更新日期:2024-01-16 19:26
本申请提出一种代码翻译处理方法、系统、计算机系统及计算机设备,该方法应用于计算机系统的处理器,所述计算机系统的缓存被划分为缓存块,所述缓存块中包括第一缓存块,所述第一缓存块用于存储动态自修改代码的翻译代码,该方法包括:确定待翻译的目标代码的代码类型;所述代码类型为静态代码、动态自修改代码或未知类型代码;对所述目标代码进行翻译,得到翻译代码;在所述目标代码为动态自修改代码的情况下,将所述翻译代码存储至所述第一缓存块。采用上述方案能够提高代码运行效率和性能。

【技术实现步骤摘要】

本申请涉及计算机,尤其涉及一种代码翻译处理方法、系统、计算机系统及计算机设备


技术介绍

1、二进制翻译可以用来解决在二进制层面,程序跨体系结构运行的问题。通常在计算机系统中会同时存在静态代码或动态自修改代码,静态代码通常不会发生修改或变化,而动态自修改代码在运行过程中经常发生修改,因此需要在代码修改后,重新翻译修改后的代码,在实际应用中,涉及动态自修改代码的跨体系结构运行性能表现不佳。

2、在现有的二进制翻译方案中,在对代码进行翻译之后,将翻译代码依次存储到缓存中。由于动态自修改代码的反复修改,会不断地进行代码翻译以及向缓存中存入翻译代码,当缓存写满后,由于无法区分缓存中存储的代码类型,就会将全部缓存清空,然后再重新翻译最新的所有代码并存储。这样就导致对于静态代码,也会删除其翻译代码并重新翻译,从而降低了代码运行效率和性能。


技术实现思路

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、代码翻译模块,用于对所述目标代码进行翻译,得到翻译代码;在所述目标代码为本文档来自技高网...

【技术保护点】

1.一种代码翻译处理方法,其特征在于,应用于计算机系统的处理器,所述计算机系统的缓存被划分为缓存块,所述缓存块中包括第一缓存块,所述第一缓存块用于存储动态自修改代码的翻译代码,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述缓存中还包括第二缓存块和第三缓存块,所述第二缓存块用于存储静态代码的翻译代码,所述第三缓存块用于存储未知类型代码的翻译代码,所述方法还包括:

3.根据权利要求1所述的方法,其特征在于,在所述目标代码为动态自修改代码的情况下,所述方法还包括:

4.根据权利要求3所述的方法,其特征在于,基于针对目标代码所在内存块的属性变更事件,确定所述目标代码中被修改的代码页,包括:

5.根据权利要求1所述的方法,其特征在于,对所述目标代码进行翻译,得到翻译代码,包括:

6.根据权利要求1所述的方法,其特征在于,确定待翻译的目标代码的代码类型,包括:

7.根据权利要求1所述的方法,其特征在于,在所述目标代码为动态自修改代码的情况下,所述方法还包括:

8.根据权利要求1至7中任意一项所述的方法,其特征在于,所述处理器记录所述缓存中的各个缓存块的运行信息,所述运行信息包括代码动态程度、代码被失效的次数、代码最后一次被运行的时间、代码运行次数,其中,动态自修改代码的代码动态程度大于未知类型代码的代码动态程度,未知类型代码的代码动态程度大于静态代码的代码动态程度;所述方法还包括:

9.根据权利要求8所述的方法,其特征在于,基于所述缓存中各个缓存块的运行信息,从各个缓存块中选出待释放的缓存块,包括:

10.根据权利要求9所述的方法,其特征在于,至少按照代码被失效次数从大到小的顺序,对各个缓存块进行排列,得到缓存块序列,包括:

11.一种代码翻译处理系统,其特征在于,应用于计算机系统的处理器,所述计算机系统的缓存被划分为缓存块,所述缓存块中包括第一缓存块,所述第一缓存块用于存储动态自修改代码的翻译代码,所述系统包括:

12.根据权利要求11所述的系统,其特征在于,所述处理器记录所述缓存中的各个缓存块的运行信息,所述运行信息包括代码动态程度、代码被失效的次数、代码最后一次被运行的时间、代码运行次数,其中,动态自修改代码的代码动态程度大于未知类型代码的代码动态程度,未知类型代码的代码动态程度大于静态代码的代码动态程度;所述系统还包括:

13.一种计算机系统,其特征在于,所述计算机系统的缓存被划分为缓存块,所述缓存块中包括第一缓存块,所述第一缓存块用于存储动态自修改代码的翻译代码,所述计算机系统的处理器被配置为执行如权利要求1至10中任意一项所述的代码翻译处理方法。

14.一种计算机设备,其特征在于,包括如权利要求13所述的计算机系统。

...

【技术特征摘要】

1.一种代码翻译处理方法,其特征在于,应用于计算机系统的处理器,所述计算机系统的缓存被划分为缓存块,所述缓存块中包括第一缓存块,所述第一缓存块用于存储动态自修改代码的翻译代码,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述缓存中还包括第二缓存块和第三缓存块,所述第二缓存块用于存储静态代码的翻译代码,所述第三缓存块用于存储未知类型代码的翻译代码,所述方法还包括:

3.根据权利要求1所述的方法,其特征在于,在所述目标代码为动态自修改代码的情况下,所述方法还包括:

4.根据权利要求3所述的方法,其特征在于,基于针对目标代码所在内存块的属性变更事件,确定所述目标代码中被修改的代码页,包括:

5.根据权利要求1所述的方法,其特征在于,对所述目标代码进行翻译,得到翻译代码,包括:

6.根据权利要求1所述的方法,其特征在于,确定待翻译的目标代码的代码类型,包括:

7.根据权利要求1所述的方法,其特征在于,在所述目标代码为动态自修改代码的情况下,所述方法还包括:

8.根据权利要求1至7中任意一项所述的方法,其特征在于,所述处理器记录所述缓存中的各个缓存块的运行信息,所述运行信息包括代码动态程度、代码被失效的次数、代码最后一次被运行的时间、代码运行次数,其中,动态自修改代码的代码动态程度大于未知类型代码的代码动态程...

【专利技术属性】
技术研发人员:吕蓊鉴黄能超李根唐遇星
申请(专利权)人:飞腾信息技术有限公司
类型:发明
国别省市:

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

1