编译方法、电子设备及计算机可读存储介质技术

技术编号:39065862 阅读:17 留言:0更新日期:2023-10-12 19:58
本申请适用于计算机领域,提供了一种编译方法、电子设备及计算机可读存储介质。在本申请提供的编译方法中,电子设备可以在获取到待编译的字节码和目标节点模板之后,使用目标节点模板遍历上述字节码,得到第一中间表示。其中,上述目标节点模板包括节点指针,上述节点指针用于指示链接节点的地址与参考地址的地址偏差值。上述节点指针与传统的地址指针相比,压缩了指针的长度,从而在一定程度上减小了第一中间表示中各个节点的大小,降低了第一中间表示占用的存储空间,有利于提高后续遍历和优化第一中间表示的速度,具有较强的易用性和实用性。和实用性。和实用性。

【技术实现步骤摘要】
编译方法、电子设备及计算机可读存储介质


[0001]本申请涉及计算机领域,尤其涉及一种编译方法、电子设备及计算机可读存储介质。

技术介绍

[0002]目前大多数的计算机程序是使用高级语言编写的。对于开发者而言,高级语言的可读性较强,有利于编写、交流和维护计算机程序。
[0003]但是,对于电子设备而言,电子设备无法直接理解和运行高级语言编写的计算机程序。因此,电子设备在运行高级语言编写的计算机程序时,需要通过编译器将高级语言编写的计算机程序翻译成机器语言的可执行代码。
[0004]其中,编译器是指将高级语言翻译成机器语言的翻译程序。编译器的核心是中间表示(Intermediate Representation,IR),好的IR有利于编译器优化和维护上述计算机程序。
[0005]目前较为常用的IR包括图结构IR,图结构IR使用链表的形式描述不同节点的链接关系。由于图结构IR通常会产生大量的节点,因此,大量节点所形成的链表会占据大量的存储空间,影响编译器的优化速度。

技术实现思路

[0006]本申请实施例提供了一种编译方法、电子设备及计算机可读存储介质,可以在一定程度上解决现有的图结构IR占据大量的存储空间,影响编译器的优化速度的问题。
[0007]第一方面,本申请实施例提供了一种编译方法,包括:
[0008]获取待编译的字节码;
[0009]获取目标节点模板,使用所述目标节点模板遍历所述字节码,得到第一中间表示;
[0010]所述目标节点模板包括节点指针,所述节点指针用于指示链接节点的地址与参考地址的地址偏差值,所述链接节点为所述节点指针指向的节点,所述节点指针的指针长度小于或等于预设指针长度。
[0011]需要说明的是,电子设备在进行编译时,可以先将源代码编译成字节码,得到待编译的字节码。
[0012]以及,电子设备可以从预先设置的一套或多套节点模板中,获取目标节点模板。
[0013]其中,上述目标节点模板可以包括数据域和指针域。上述数据域用于存储当前节点所包含的数据,上述指针域用于存储节点指针。
[0014]上述节点指针用于指示链接节点的地址与参考地址的地址偏差值。链接节点为上述节点指针指向的节点,例如,链接节点可以为当前节点对应的输入节点或输出节点。
[0015]传统的地址指针直接记录链接节点的地址,因此,上述地址指针的长度与电子设备的设备类型相关。当电子设备使用32位操作系统时,上述地址指针的指针长度为32位;当电子设备使用64位操作系统时,上述地址指针的指针长度为64位。
[0016]但是,由于上述节点指针用于指示地址偏差值,且地址偏差值的数值较小,所以,电子设备在设置上述目标节点模板时,可以用较少的位数来表示上述地址偏差值,压缩节点指针的指针长度,使得节点指针的指针长度小于或等于预设指针长度。
[0017]预设指针长度可以为上述地址指针的长度,或者,也可以为其他自定义的长度。
[0018]后续,电子设备可以使用目标节点模板遍历上述待编译的字节码,得到第一中间表示。上述第一中间表示包括一个或多个节点,各个节点按照上述目标节点模板规定的格式记录本节点的数据。
[0019]也即是说,上述第一中间表示中各个节点所包含的节点指针的指针长度均被压缩为上述目标节点模板所规定的节点指针的指针长度,从而减小了上述第一中间表示中各个节点的大小,降低了第一中间表示占用的存储空间,有利于提高后续遍历和优化第一中间表示的速度,具有较强的易用性和实用性。
[0020]在第一方面的一种可能的实现方式中,所述获取目标节点模板,具体包括:
[0021]根据所述字节码的数量计算总占用空间的预测值;
[0022]根据所述预测值确定所述目标节点模板,其中,所述预测值在所述目标节点模板的节点指针的表达范围内。
[0023]需要说明的是,上述节点指针的表达范围与节点指针的指针长度相关。因此,在一些实施例中,当电子设备设置有多套不同指针长度的节点模板时,电子设备可以根据字节码的数量计算编译后的中间表示对应的总占用空间的预测值。
[0024]在计算得到上述预测值之后,电子设备可以根据上述预测值选择合适的目标节点模板,以确保上述预测值在上述目标节点模板的节点指针的表达范围内,避免出现节点指针无法正确表达上述地址偏差值的情况。
[0025]另外,当有多套节点模板满足上述条件时,电子设备可以从多套满足上述条件的节点模板中,选择节点指针最短的节点模板作为目标节点模板。
[0026]在第一方面的另一种可能的实现方式中,所述目标节点模板为预先设置的节点模板中,所述节点指针的指针长度最短的节点模板。
[0027]需要说明的是,在另一些实施例中,电子设备也可以直接将节点指针的指针长度最短的节点模板确定为目标节点模板,尽可能地减小第一中间表示中各个节点的大小,降低第一中间表示占用的存储空间。
[0028]在第一方面的一种可能的实现方式中,在所述得到第一中间表示之后,还包括:
[0029]获取所述第一中间表示对应的总占用空间;
[0030]若所述第一中间表示对应的总占用空间超出了所述目标节点模板的节点指针的表达范围,则更换所述目标节点模板,更换后的目标节点模板的节点指针的指针长度大于更换前的目标节点模板的节点指针的指针长度;
[0031]使用更换后的目标节点模板遍历所述字节码,得到更换后的第一中间表示。
[0032]需要说明的是,在一些场景中,有可能出现上述第一中间表示对应的总占用空间超出了目标节点模板的节点指针的表达范围的情况。
[0033]当第一中间表示对应的总占用空间超出了目标节点模板的节点指针的表达范围时,上述第一中间表示中有可能出现部分节点的节点指针无法正常指示地址偏差值的情况。
[0034]因此,在一些实施例中,在生成了第一中间表示之后,电子设备可以获取上述第一中间表示对应的总占用空间。
[0035]上述第一中间表示对应的总占用空间为第一中间表示中各个节点的节点大小之和。
[0036]然后,电子设备可以检测上述第一中间表示对应的总占用空间是否在目标节点模板的表达范围内。
[0037]如果第一中间表示对应的总占用空间在目标节点模板的表达范围内,则电子设备可以保留上述第一中间表示。
[0038]如果第一中间表示对应的总占用空间超出了目标节点模板的表达范围,则电子设备可以更换目标节点模板。更换后的目标节点模板的节点指针的指针长度应当大于更换前的目标节点模板的节点指针的指针长度。
[0039]之后,电子设备可以使用更换后的目标节点模板遍历上述字节码,重新生成第一中间表示。
[0040]以此类推,在一些实施例中,电子设备在重新生成第一中间表示之后,可以重复上述步骤,检测更换后的第一中间表示对应的总占用空间是否在更换后的目标节点模板的节点指针的表达范围内。如果更换后的第一中间表示对应的总占用空间超出本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种编译方法,其特征在于,包括:获取待编译的字节码;获取目标节点模板,使用所述目标节点模板遍历所述字节码,得到第一中间表示;所述目标节点模板包括节点指针,所述节点指针用于指示链接节点的地址与参考地址的地址偏差值,所述链接节点为所述节点指针指向的节点,所述节点指针的指针长度小于或等于预设指针长度。2.如权利要求1所述的方法,其特征在于,所述获取目标节点模板,具体包括:根据所述字节码的数量计算总占用空间的预测值;根据所述预测值确定所述目标节点模板,其中,所述预测值在所述目标节点模板的节点指针的表达范围内。3.如权利要求1所述的方法,其特征在于,所述目标节点模板为预先设置的节点模板中,所述节点指针的指针长度最短的节点模板。4.如权利要求1至3中任一项所述的方法,其特征在于,在所述得到第一中间表示之后,还包括:获取所述第一中间表示对应的总占用空间;若所述第一中间表示对应的总占用空间超出了所述目标节点模板的节点指针的表达范围,则更换所述目标节点模板,更换后的目标节点模板的节点指针的指针长度大于更换前的目标节点模板的节点指针的指针长度;使用更换后的目标节点模板遍历所述字节码,得到更换后的第一中间表示。5.如权利要求1至3中任一项所述的方法,其特征在于,在所述得到第一中间表示之后,还包括:根据预设的优化算法对所述第一中间表示进行优化,得到第二中间表示。6.如权利要求5所述的方法,其特征在于,在所述得到第二中间表示之后,还包括:获取所...

【专利技术属性】
技术研发人员:胡海亮曾明亮吴哲锋李勇彪蒋晗
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1