技术新讯 > 计算推算,计数设备的制造及其应用技术 > 字节码的操作类型的标记方法、装置以及电子设备与流程  >  正文

字节码的操作类型的标记方法、装置以及电子设备与流程

  • 国知局
  • 2024-10-15 09:21:58

本技术实施例涉及计算机,尤其涉及一种字节码的操作类型的标记方法、装置以及电子设备。

背景技术:

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、在一种可能的实现方式中,电子设备可以将占比排序前n的操作信息对应的操作类型的并集,作为所述被调用的函数对应的字节码的操作类型,所述n为大于或等于1的整数。在一种可能的实现方式中,电子设备可以将所述被调用的函数对应的字节码的所有版本的操作类型的并集,作为所述被调用的函数对应的字节码的操作类型。

29、在一种可能的实现方式中,电子设备在获取字节码的第一操作类型以及字节码的第二操作类型后,可以将所述第一操作类型和所述第二操作类型的并集,作为所述字节码的操作类型。在一种可能的实现方式中,对于同一字节码,字节码的第一操作类型和第二操作类型包含不同版本的操作类型,这样电子设备可以获取该字节码的不同版本的操作类型的占比,进而将占比排序前n的操作信息对应的操作类型的并集,作为该字节码的操作类型。

30、在一种可能的实现方式中,字节码的操作类型可以包括至少一个版本。电子设备在标记所述字节码的操作类型之后,还可以根据标记后的字节码,生成至少一个版本的二进制代码。这样,电子设备可以根据该至少一个版本的二进制代码,运行该二进制代码,以实现程序的运行。

31、在该实现方式中,电子设备可以获取至少一个版本的二进制代码,可以实现准确运行程序的目的。

32、第二方面,本技术实施例提供一种字节码的操作类型的标记装置,该字节码的操作类型的标记装置可以为电子设备或电子设备中的芯片,可以用于执行第一方面中的方法。其中,字节码的操作类型的标记装置可以包括:处理模块和标记模块。

33、处理模块,用于获取字节码,获取所述字节码对应的每个函数中目标数据的类型信息,以及根据所述每个函数中目标数据的类型信息,确定所述字节码的第一操作类型。

34、标记模块,用于根据所述第一操作类型,标记所述字节码的操作类型。

35、在一种可能的实现方式中,处理模块,具体用于在所述字节码的运行过程中,确定所述字节码的第二操作类型;根据所述第一操作类型和所述第二操作类型,获取所述字节码的操作类型,以及根据所述字节码的操作类型,标记所述字节码的操作类型。

36、在一种可能的实现方式中,所述目标数据包括如下至少一项:函数形参、函数返回值、全局变量,以及闭包中的变量。

37、在一种可能的实现方式中,处理模块,具体用于建立所述字节码的控制流图和数据流图;在建立所述控制流图和所述数据流图的过程中,采用并查集算法,将出现在同一字节码的操作数中的目标数据集合在一起,得到至少一个第一集合;根据每个第一集合中已知类型的目标数据,确定未知类型的目标数据的类型,以得到所述未知类型的目标数据的类型信息。

38、在一种可能的实现方式中,所述字节码包括第一字节码和第二字节码。

39、处理模块,具体用于确定所述第一字节码和所述第二字节码之间的逻辑关联关系;根据已知类型的所述第一字节码的类型,确定未知类型的所述第二字节码的类型;根据所述第二字节码的类型,确定所述第二字节码关联的目标数据的类型信息。

40、在一种可能的实现方式中,当所述第一字节码的输出是所述第二字节码的输入时,且在所述第一字节码和所述第二字节码满足预设条件时,处理模块,还用于将所述第一字节码和所述第二字节码集合在一起,得到至少一个第二集合。

41、在一种可能的实现方式中,所述预设条件为:所述第一字节码和所述第二字节码均不为比较指令。

42、在一种可能的实现方式中,处理模块,具体用于模拟所述字节码的运行过程,以获取所述每个函数中目标数据的类型信息。

43、在一种可能的实现方式中,所述每个函数中目标数据的类型信息包括:所述每个函数中目标数据的类型。

44、处理模块,具体用于将所述每个函数中目标数据的类型的并集,作为所述第一操作类型。

45、在一种可能的实现方式中,所述每个函数中目标数据的类型信息包括:所述每个函数中目标数据的类型,所述每个函数对应至少一行字节码。

46、处理模块,具体用于将每行字节码对应的函数中目标数据的类型的并集,作为所述每行字节码的操作类型,所述第一操作类型包括所述每个函数对应的至少一行字节码的操作类型。

47、在一种可能的实现方式中,处理模块,具体用于在所述字节码的运行过程中,获取被调用的函数对应的字节码的操作信息,所述操作信息包括操作数的类型,以及操作结果的类型;根据所述被调用的函数对应的字节码的操作信息,获取所述被调用的函数对应的字节码的操作类型。

48、在一种可能的实现方式中,所述被调用的函数对应的字节码的操作信息包括至少两个版本。处理模块,具体用于获取所述被调用的函数对应的字节码的每个版本的操作信息的占比;根据所述占比,获取所述被调用的函数对应的字节码的操作类型。

49、在一种可能的实现方式中,处理模块,具体用于将占比排序前n的操作信息对应的操作类型的并集,作为所述被调用的函数对应的字节码的操作类型,所述n为大于或等于1的整数。

50、在一种可能的实现方式中,处理模块,具体用于将所述第一操作类型和所述第二操作类型的并集,作为所述字节码的操作类型。

51、在一种可能的实现方式中,所述字节码的操作类型包括至少一个版本。字节码的操作类型的标记装置还可以包括二进制代码生成模块。

52、二进制代码生成模块,用于根据标记后的字节码,生成至少一个版本的二进制代码。

53、在一种可能的实现方式中,字节码的操作类型的标记装置还可以包括收发模块和字节码生成模块,其中,收发模块,用于接收源代码。字节码生成模块,用于将所述源代码转换成所述字节码。

54、在一种可能的实现方式中,所述字节码是由动态类型语言编写的源代码得到的。

55、第三方面,本技术实施例提供一种电子设备,该电子设备可以包括:处理器、存储器。存储器用于存储计算机可执行程序代码,程序代码包括指令;当处理器执行指令时,指令使所述电子设备执行如第一方面中的方法。

56、第四方面,本技术实施例提供一种电子设备,该电子设备可以为第二方面的字节码的操作类型的标记装置或第一方面所述的电子设备。该电子设备可以包括用于执行以上第一方面所提供的方法的单元、模块或电路。

57、第五方面,本技术实施例提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面中的方法。

58、第六方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面中的方法。

59、上述第二方面至第六方面的各可能的实现方式,其有益效果可以参见上述第一方面所带来的有益效果,在此不加赘述。

60、本技术实施例提供一种字节码的操作类型的标记方法、装置以及电子设备,在该方法中,电子设备可以获取字节码,获取所述字节码对应的每个函数中目标数据的类型信息,且根据所述每个函数中目标数据的类型信息,确定所述字节码的第一操作类型,以及根据所述第一操作类型,标记所述字节码的操作类型。本技术可以在静态编译期间,以函数为单位,通过字节码中目标数据的类型信息,确定函数对应的字节码的操作类型,本技术实施例一方面无需限制动态类型语言的动态特性,另一方面还可以达到准确标记字节码的操作类型的目的。

本文地址:https://www.jishuxx.com/zhuanli/20241015/313913.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。