本申请属于基本块分割,具体涉及一种基本块的分割方法、装置、电子设备及存储介质。
背景技术:
1、通过研究发现,目前基于底层虚拟机(low level virtual mach ine,llvm)抽象语法树(abstract syntax tree,ast)实现的源到源加固依赖llvm的开源代码实现,可以实现控制流平坦化。
2、但是,由于依赖程序编写接口,整体平坦化程度依赖于原来代码的控制流,平坦化程度不可控,语句转化为控制流图(control flow graph,cfg)时,没有提供控制基本块的大小的办法,因此,缺乏对基本块的分割。
技术实现思路
1、本申请实施例提供一种基本块的分割方法、装置、电子设备及存储介质,能够解基本块的分割问题。
2、第一方面,本申请实施例提供了一种基本块的分割方法,包括:获取源代码的第一抽象语法树;遍历所述第一抽象语法树,获取到所述第一抽象语法树中的目标组合语句;将所述目标组合语句分割为多个基本块;使用分割的所述多个基本块替换所述第一抽象语法树中的所述目标组合语句。
3、第二方面,本申请实施例提供了一种基本块的分割装置,包括:第一获取模块,用于获取源代码的第一抽象语法树;第二获取模块,用于遍历所述第一抽象语法树,获取到所述第一抽象语法树中的目标组合语句;分割模块,用于将所述目标组合语句分割为多个基本块;替换模块,用于使用分割的所述多个基本块替换所述第一抽象语法树中的所述目标组合语句。
4、第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的基本块的分割方法的步骤。
5、第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的基本块的分割方法的步骤。
6、第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的基本块的分割方法。
7、在本申请实施例中,获取到源代码的第一抽象语法树,再遍历所述第一抽象语法树,获取到所述第一抽象语法树中的目标组合语句,将所述目标组合语句分割为多个基本块,使用分割的所述多个基本块替换所述第一抽象语法树中的所述目标组合语句,能够解决基本块的分割问题,实现控制流平坦化,使得平坦化的程度可控,且不受源代码的影响。
1.一种基本块的分割方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,将所述目标组合语句分割为多个基本块,包括:
3.根据权利要求1或2所述的方法,其特征在于,所述获取源代码的第一抽象语法树,包括:
4.根据权利要求3所述的方法,其特征在于,将所述目标组合语句分割为多个基本块,包括:
5.根据权利要求1或2所述的方法,其特征在于,在使用分割的所述多个基本块替换所述第一抽象语法树中的所述目标组合语句之后,所述方法还包括:
6.根据权利要求1或2所述的方法,其特征在于,获取所述源代码的第一抽象语法树,包括:
7.根据权利要求6所述的方法,其特征在于,在使用分割的所述多个基本块替换所述第一抽象语法树中的所述目标组合语句之后,所述方法还包括:
8.一种基本块的分割装置,其特征在于,包括:
9.一种电子设备,其特征在于,包括处理器,存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1至7任一项所述的基本块分割的方法步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1至7任一项所述的基本块分割的方法步骤。