一种构建try-catch基本块和流图的方法、装置、存储介质制造方法及图纸

技术编号:37045231 阅读:29 留言:0更新日期:2023-03-29 19:24
本发明专利技术公开了一种构建try

【技术实现步骤摘要】
一种构建try

catch基本块和流图的方法、装置、存储介质


[0001]本专利技术属于代码编译领域,尤其是一种构建try

catch基本块和流图的方法、装置、存储介质。

技术介绍

[0002]目前,将中间代码直接翻译成机器代码,程序运行时刻会带来相当大的开销。由于内存本身的资源有太多限制,则更需要进行代码优化,将中间代码用流图来表示,有助于进行代码优化,生成更好的指令码。而现《编译原理》中,只介绍了基础语句,如顺序流、控制流、循环流语句的基本块划分方法,但是没有说明异常捕获语句try

catch的划分方法。
[0003]try

catch:异常捕获语句。

技术实现思路

[0004]本专利技术的目的在于构建try

catch异常捕获语句的基本块和建立所述基本块的有向边。
[0005]本专利技术所采取的技术方案是:本专利技术提供了一种构建try

catch基本块和流图的方法,包括:
[0006]将包含try

catch语句的高级语言代码转换为中间代码;所述中间代码包括三地址代码序列和记录方法中的异常处理表;
[0007]将所述中间代码按三地址序列划分为基本块,并确定基本块的首指令;
[0008]根据所述首指令确定基本块的有向边;
[0009]将所述基本块用有向边连接起来,构成流图。
[0010]进一步地,所述try

catch语句可分成5个基本块,包括第一基本块、第二基本块、第三基本块、第五基本块;其中,所述第二基本块为所述第一基本块的下一级分块;所述第三基本块可分为第三基本块A和第三基本块B,所述第三基本块为所述第二基本块的下一级分块;所述第五基本块为所述第三基本块的下一级基本块。
[0011]进一步地,所述将所述中间代码按三地址序列划分为基本块,并确定基本块的首指令这一步骤,具体包括:将三地址序列的第一条指令确认为第一首指令;
[0012]将异常表的开始位置确认为第二首指令;
[0013]将异常处理的目标指令确认为第三首指令;
[0014]将紧跟在会抛出异常的指令下条指令确认为第四首指令。
[0015]进一步地,所述第一基本块和第三基本块的首指令为所述第一首指令;所述第二基本块的首指令为所述第二首指令;所述第四基本块的首指令为所述第三首指令;所述第五基本块的首指令为所述第四首指令。
[0016]进一步地,所述根据所述首指令确定基本块的有向边这一步骤,包括:所述第一首指令指向第二首指令,确定了基本块的第一有向边;所述第二首指令指向第一首指令,确定了基本块的第二有向边;所述第二首指令指向第三首指令,确定了基本块的第三有向边;所
述第一首指令指向第四首指令,确定了基本块的第四有向边;所述第三首指令指向第五首指令,确定了第五有向边。
[0017]进一步地,所述第一有向边、第二有向边、第三有向边、第四有向边、第五有向边的指向确定且唯一。
[0018]进一步地,所述基本块的第一有向边、基本块的第二有向边、基本块的第五有向边的分配规则为按原三地址序列执行顺序进行分配;所述基本块的第三有向边的分配规则为按照异常捕获跳转分配;所述基本块的第四有向边的分配规则为按照无条件跳转语句分配。
[0019]进一步地,所述将所述基本块用有向边连接起来,构成流图这一步骤,包括:用第一有向边将第一基本块和第二基本块连接;用第二有向边将第二基本块和第三基本块连接;用第三有向边将第二基本块和第四基本块连接;用第四有向边将第三基本块和第五基本块连接;用第五有向边将第四基本块和第五基本块连接。
[0020]另一方面,本专利技术还提供了一种计算机装置,其特征在于,包括存储器和处理器,所述存储器用于存储至少一个程序,所述处理器用于加载所述至少一个程序以执行任一项所述的构建try

catch基本块和流图的方法。
[0021]另一方面,本专利技术还提供了一种计算机可读存储介质,其中存储用处理器可执行的程序,其特征在于,所述处理器可执行的程序在由处理器执行时用于执行任一项所述的构建try

catch基本块和流图的方法。
[0022]本专利技术的有益效果是:通过构建try

catch异常捕获语句的基本块和建立所述基本块的有向边,完善了高级语言中间代码的流图构建,能够减少程序运行的开销。
附图说明
[0023]为了更清楚地说明本申请实施例或者现有技术中的技术方案,下面对本申请实施例或者现有技术中的相关技术方案附图作以下介绍,应当理解的是,下面介绍中的附图仅仅为了方便清晰表述本专利技术的技术方案中的部分实施例,对于本领域的技术人员来说,在无需付出创造性劳动的前提下,还可以根据这些附图获取到其他附图。
[0024]图1为包含try

catch语句的简单Java源代码转换后的中间代码。
具体实施方式
[0025]下面结合说明书附图和具体的实施例对本申请进行进一步的说明。所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0026]在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
[0027]除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的
的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
[0028]目前,将中间代码直接翻译成机器代码,程序运行时刻会带来相当大的开销。由于
内存本身的资源有太多限制,则更需要进行代码优化,将中间代码用流图来表示,有助于进行代码优化,生成更好的指令码。而现《编译原理》中,只介绍了基础语句,如顺序流、控制流、循环流语句的基本块划分方法,但是没有说明异常捕获语句try

catch的划分方法。
[0029]本专利技术实施例提供的方法主要用于构建流图表示中间代码的过程中,try

catch捕获异常语句如何分块以及如何建立有向边。
[0030]本专利技术实施例中,我们将第一条指令作为一个新基本块的开始,然后迭代后续指令,碰到一个会抛出异常的指令,从异常表查找该指令的异常捕获记录。根据查找到的异常捕获记录,将三地址序列分割成基本块。将三地址序列划分基本块,首先确定每个基本块的首指令,首指令的选择规则如下:
[0031]S1.三地址序列的第一条指令是首指令;
[0032]S2.异常表的开始位置是一个首指令;
[0033]S3.异常处理的目标指令是一个首指令;
[0034]S4.紧跟在会抛出异常的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种构建try

catch基本块和流图的方法,其特征在于,包括:将包含try

catch语句的高级语言代码转换为中间代码;所述中间代码包括三地址代码序列和记录方法中的异常处理表;将所述中间代码按三地址序列划分为基本块,并确定基本块的首指令;根据所述首指令确定基本块的有向边;将所述基本块用有向边连接起来,构成流图。2.根据权利要求1所述的一种构建try

catch基本块和流图的方法,其特征在于,所述try

catch语句可分成5个基本块,包括第一基本块、第二基本块、第三基本块、第五基本块;其中,所述第二基本块为所述第一基本块的下一级分块;所述第三基本块可分为第三基本块A和第三基本块B,所述第三基本块为所述第二基本块的下一级分块;所述第五基本块为所述第三基本块的下一级基本块。3.根据权利要求1所述的一种构建try

catch基本块和流图的方法,其特征在于,所述将所述中间代码按三地址序列划分为基本块,并确定基本块的首指令这一步骤,具体包括:将三地址序列的第一条指令确认为第一首指令;将异常表的开始位置确认为第二首指令;将异常处理的目标指令确认为第三首指令;将紧跟在会抛出异常的指令下条指令确认为第四首指令。4.根据权利要求3所述的一种构建try

catch基本块和流图的方法,其特征在于,所述第一基本块和第三基本块的首指令为所述第一首指令;所述第二基本块的首指令为所述第二首指令;所述第四基本块的首指令为所述第三首指令;所述第五基本块的首指令为所述第四首指令。5.根据权利要求1所述的一种构建try

catch基本块和流图的方法,其特征在于,所述根据所述首指令确定基本块的有向边这一步骤,包括:所述第一首指令指向第二首指令,确定了基本块的...

【专利技术属性】
技术研发人员:蔡璐莫文盼李士成
申请(专利权)人:东信和平科技股份有限公司
类型:发明
国别省市:

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

1