System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 用于解析程序代码的方法、电子设备和存储介质技术_技高网

用于解析程序代码的方法、电子设备和存储介质技术

技术编号:40479762 阅读:6 留言:0更新日期:2024-02-26 19:14
本公开的实施例提供一种用于解析程序代码的方法该方法、电子设备和存储介质。其中包括对程序代码进行解析,以便确定程序代码所对应的初始控制流图,初始控制流图中的多个子图分别对应于程序代码所对应的多个初始基本块;确定初始控制流图中的非线性的局部流图;以及将该非线性的局部流图线性化以便生成局部线性控制流图,局部线性控制流图中的多个子图分别对应于多个更新的基本块。本公开的方案可以显著降低在执行程序的过程中所占用的资源,并且提高执行效率。

【技术实现步骤摘要】

本公开的实施例总体涉及程序代码的解析领域,并且更具体地涉及一种用于解析程序代码的方法、电子设备和存储介质


技术介绍

1、以simt(single instruction multiple thread,单指令多线程)场景为例,一条指令可以由多个线程执行。在一些复杂的程序中,一条指令在一些条件下由多个线程中的部分线程执行,而在另一些条件下由多个线程中的另部分线程执行。因此,在针对该程序进行编译时,需要考虑指令之间的切换、线程之间的切换等多种因素,使得编译形成的可执行程序在执行过程中需要占用较多的存储资源,并且降低了执行效率。


技术实现思路

1、针对上述问题,本公开提供了一种用于解析程序代码的方法、电子设备和存储介质,可以显著降低在执行程序的过程中所占用的资源,并且提高执行效率。

2、根据本公开的第一方面,提供一种用于解析程序代码的方法,该方法包括:对程序代码进行解析,以便确定程序代码所对应的初始控制流图,初始控制流图中的多个子图分别对应于程序代码所对应的多个初始基本块;确定初始控制流图中的非线性的局部流图;以及将该非线性的局部流图线性化以便生成局部线性控制流图,局部线性控制流图中的多个子图分别对应于多个更新的基本块。

3、在一些实施例中,将该非线性的局部流图线性化包括:针对该非线性的局部流图中的多个子图所对应的多个初始基本块,分别添加掩码以便得到的多个更新的基本块。

4、在一些实施例中,将该非线性的局部流图线性化还包括:根据该非线性的局部流图的拓扑结构,确定该多个更新的基本块所对应的多个子图在局部线性控制流图中的第一顺序。

5、在一些实施例中,针对该非线性的局部流图中的多个子图所对应的多个初始基本块分别添加掩码包括:根据该非线性的局部流图的拓扑结构,确定非线性的局部流图中的当前子图所对应的当前初始基本块的后继基本块对应的更新的基本块的第一标识信息,以便作为该当前初始基本块所对应的更新的基本块的目标基本块的标识信息;获取当前更新的基本块的后继基本块对应的第二标识信息,当前更新的基本块为针对当前初始基本块添加掩码而得到的;以及根据目标基本块的标识信息与第二标识信息是否匹配,确定当前更新的基本块的后继基本块所对应的掩码。

6、在一些实施例中,该程序代码对应于多个线程,确定局部流图中的当前子图所对应的当前初始基本块的后继基本块对应的第一标识信息包括:确定当前初始基本块的后继基本块对应的每一个线程,以便确定该每一个线程所分别对应的第一标识信息;以及根据目标基本块的标识信息与第二标识信息是否匹配,确定当前更新的基本块的后继基本块所对应的掩码包括:根据每一个线程所分别对应的目标基本块的标识信息与第二标识信息是否匹配,确定当前更新的基本块的后继基本块的、分别与每一个线程所对应的掩码。

7、在一些实施例中,该掩码被添加在多个更新基本块的起始处。

8、在一些实施例中,分别用于确定每一个当前更新的基本块的后继基本块所对应的掩码的第一标识信息被配置为基于同一个寄存器实现。

9、在一些实施例中,对程序代码进行解析,以便确定程序代码所对应的初始控制流图包括:对程序代码进行解析,以便确定程序代码所对应的多个指令;以及将该多个指令划分为多个初始基本块,每一个初始基本块中包括该多个指令中的至少两个指令,在每一个初始基本块内部,该至少两个指令为依次顺序执行的指令。

10、在一些实施例中,该至少两个指令中的最后一个指令为跳转指令。

11、根据本公开的第二方面,提供一种电子设备,该电子设备包括:至少一个处理器;以及与该至少一个处理器通信连接的存储器;该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行根据本公开的第一方面的方法。

12、根据本公开的第三方面,提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被机器执行时实现根据本公开的第一方面的方法。

13、应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

本文档来自技高网...

【技术保护点】

1.一种用于解析程序代码的方法,其特征在于,包括:

2.如权利要求1所述的方法,其特征在于,将所述非线性的局部流图线性化包括:

3.如权利要求2所述的方法,其特征在于,将所述非线性的局部流图线性化还包括:

4.如权利要求2所述的方法,其特征在于,针对所述非线性的局部流图中的多个子图所对应的多个初始基本块分别添加掩码包括:

5.如权利要求4所述的方法,其特征在于,所述程序代码对应于多个线程,确定局部流图中的当前子图所对应的当前初始基本块的后继基本块对应的第一标识信息包括:

6.如权利要求1所述的方法,其特征在于,所述掩码被添加在多个更新基本块的起始处。

7.如权利要求5所述的方法,其特征在于,分别用于确定每一个当前更新的基本块的后继基本块所对应的掩码的目标基本块的标识信息被配置为基于同一个寄存器实现。

8.如权利要求1所述的方法,其特征在于,对程序代码进行解析,以便确定程序代码所对应的初始控制流图包括:

9.如权利要求7所述的方法,其特征在于,所述至少两个指令中的最后一个指令为跳转指令。

10.一种电子设备,其特征在于,包括:

11.一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被机器执行时实现根据权利要求1至9中任一项所述的方法。

...

【技术特征摘要】

1.一种用于解析程序代码的方法,其特征在于,包括:

2.如权利要求1所述的方法,其特征在于,将所述非线性的局部流图线性化包括:

3.如权利要求2所述的方法,其特征在于,将所述非线性的局部流图线性化还包括:

4.如权利要求2所述的方法,其特征在于,针对所述非线性的局部流图中的多个子图所对应的多个初始基本块分别添加掩码包括:

5.如权利要求4所述的方法,其特征在于,所述程序代码对应于多个线程,确定局部流图中的当前子图所对应的当前初始基本块的后继基本块对应的第一标识信息包括:

6.如权利要求1所述的方法,其特征在于,所述掩码被添加在多个更新基本...

【专利技术属性】
技术研发人员:请求不公布姓名请求不公布姓名
申请(专利权)人:上海壁仞科技股份有限公司
类型:发明
国别省市:

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

1