一种代码编译方法、装置及电子设备制造方法及图纸

技术编号:34493312 阅读:31 留言:0更新日期:2022-08-10 09:12
本发明专利技术实施例提供了一种代码编译方法、装置及电子设备,所述方法包括:获取以高级语言编写的、用于实现目标函数的高级语言代码;若所述目标函数的函数属性中包括预设目标属性,将所述高级语言代码编译为用于实现所述目标函数的第一汇编代码,其中,所述第一汇编代码中不包括控制目标寄存器进行入栈的代码,所述目标寄存器为所述第一汇编代码中约定用于存储所述目标函数中局部变量的寄存器。从而,有效降低了需要写入栈的数据的数量,降低了栈空间的使用,避免使用外部低速内存扩充栈空间,提高了程序运行过程中函数的执行效率。提高了程序运行过程中函数的执行效率。提高了程序运行过程中函数的执行效率。

【技术实现步骤摘要】
一种代码编译方法、装置及电子设备


[0001]本专利技术涉及计算机
,特别是涉及一种代码编译方法、装置及电子设备。

技术介绍

[0002]在函数中往往声明了一个或多个局部变量,并且执行函数的过程中需要频繁使用这些局部变量,因此为提高函数的执行效率,相关技术中将局部变量存储于寄存器中。而寄存器在存储局部变量之前可能已经存储有其他数据,将局部变量存储于寄存器将导致其他数据被破坏,造成该其他数据所属的程序无法正常执行。因此,相关技术中在将局部变量存储于寄存器前,先将寄存器内已经存储的数据存储至栈中,该过程称为入栈。
[0003]在局部变量较多的应用场景中,需要入栈的寄存器的数目也较多,将使用大量的栈空间,导致作为栈空间的高速内部内存不足,而使用低速的外部低速内存作为栈空间继续进行入栈,而将外部低速内存作为栈空间使用程序运行时会让数据入栈、出栈的效率降低,从而导致函数的执行效率降低。

技术实现思路

[0004]本专利技术实施例的目的在于提供一种代码编译方法、装置及电子设备,以提高函数的执行效率。具体技术方案如下:
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码编译方法,其特征在于,所述方法包括:获取以高级语言编写的、用于实现目标函数的高级语言代码;若所述目标函数的函数属性中包括预设目标属性,将所述高级语言代码编译为用于实现所述目标函数的第一汇编代码,其中,所述第一汇编代码中不包括控制目标寄存器进行入栈的代码,所述目标寄存器为所述第一汇编代码中约定用于存储所述目标函数中局部变量的寄存器。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取初始掩码,所述初始掩码用于标识所述第一寄存器,其中,所述第一寄存器为所述目标寄存器中确定会入栈的寄存器;根据所述初始掩码,修改编译器的初始后端中对应于所述第一寄存器的代码,得到编译器的重编后端,所述重编后端编译得到的汇编代码中不包括控制对所述第一寄存器进行入栈的代码;所述将所述高级语言代码编译为用于实现所述目标函数的第一汇编代码,包括:用包含所述重编后端的编译器编译所述高级语言代码,得到第一汇编代码。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:根据所述初始掩码确定所述目标寄存器中所述第一寄存器的数量,以使得所述编译器根据所述第一寄存器的数量调整栈空间的分配。4.根据权利要求2所述的方法,其特征在于,所述用包含所述重编后端的编译器编译所述高级语言代码,得到第一汇编代码,包括:将所述高级语言代码转换为以预设中间表示语言编写的中间表示代码;用所述重编后端编译所述中间表示代码,得到第一汇编代码。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:若所述目标函数的函数属性中不包括预设目标属性,将所述高级语言代码编译为用于实现所述目标函数的第二汇编代码,其中,所述第二汇编代码中包括控制对目标寄存器进行入栈的代码。6.一种代码编译装置,其特征在于,所述装置包括:代码获取模块,用于获取以高级语言编写的、用于实现目标函数的高级语言代码;代码编译模块,用于若所述目标函数的函数属性中包括预设目标属性,将所述高级语言代码编译为用于实现所述目标函数的第一汇编代码,其中,所述第一汇编代码中...

【专利技术属性】
技术研发人员:姜先刚贺凤祥
申请(专利权)人:新华三半导体技术有限公司
类型:发明
国别省市:

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

1