[发明专利]一种优化编译器RAM空间的方法有效
申请号: | 201811609866.7 | 申请日: | 2018-12-27 |
公开(公告)号: | CN109800086B | 公开(公告)日: | 2022-12-06 |
发明(设计)人: | 伍红宗 | 申请(专利权)人: | 芯海科技(深圳)股份有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/30;G06F8/41 |
代理公司: | 深圳市神州联合知识产权代理事务所(普通合伙) 44324 | 代理人: | 周松强 |
地址: | 518000 广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 优化 编译器 ram 空间 方法 | ||
本发明公开了优化编译器RAM空间的方法,该方法是在已有的编译器寄存器分配算法的基础上进行的,该方法以函数为基本单位,自上而下的统计已分配的临时寄存器使用计数,当分配寄存器时,先判断已使用的寄存器是否不再使用,如果存在这样的寄存器则将其回收,然后直接分配这个回收的已使用过的寄存器,如果没有,才分配一个新的寄存器。本发明能够在分配寄存器前对中间伪指令分配寄存器索引时进行优化,减少使用的临时寄存器数量,大大提高了开发效率。
技术领域
本发明属于编译器的技术领域,特别涉及C语言中编译器优化的方法。
背景技术
C语言是一种结构化语言,具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。C语言还具有效率高,可移植性强等特点,因此可以广泛的移植到了各种平台的计算机或单片机上。
C语言中,编译器对RAM空间的效率是衡量一个编译器好坏的重要指标,RAM使用少,可以有效降低产品成本。编译器对RAM空间的使用,主要体现在程序对临时变量的使用,因此编译器在对临时变量的分配非常重要,算法直接决写了临时变量的使用数量,决定了数据的运行速度和处理效率。
专利申请201510262282.7公开了一种ARMv7m架构下可执行代码的存储方法,由编译和烧录程序、启动程序、FPB关联程序、执行程序以及总线异常处理程序五个逻辑单元参与,通过FPB关联程序将一片RAM空间关联到一处未和物理Flash关联的地址上,将其作为存储了可执行代码的存储空间,供CPU内核获取和执行机器指令使用。同时该RAM空间可以动态被更新为新值,且可以被FPB重新设置关联到新的Flash地址上。这样,本发明方法仅使用一小片片内的Flash存储FPB管理代码,就可以利用不大的RAM空间和廉价的片外Flash,将CPU的可执行代码的存储空间扩大到512MB。
上述专利申请中,是以关联程序将RAM空间关联到未知物理FLASH关联的地址上,因此,控制死电池功能的使能或取消是与目前大部分设备正常通信的关键,目前尚没有相关技术来解决问题。
发明内容
为解决上述问题,本发明的目的在于提供一种优化编译器RAM空间的方法,该方法是在C编译器在分配寄存器前对中间伪指令分配寄存器索引时进行优化,减少使用的临时寄存器数量,可以使用开发人员在已有的芯片上面,开发出代码更多,功能更复杂的程序出来,大大提高了开发效率。
本发明的另一个目的在于提供一种优化编译器RAM空间的方法,该方法经过寄存器编号调整、寄存器回收、寄存器重分配、寄存器读写优化等控制步骤,可以达到优化临时寄存器使用,有效减少程序运行时需要的寄存器数量。
为实现上述目的,本发明的技术方案如下。
一种优化编译器RAM空间的方法,该方法是在已有的编译器寄存器分配算法的基础上进行的,其特征在于该方法以函数为基本单位,自上而下的统计已分配的临时寄存器使用计数,当分配寄存器时,先判断已使用的寄存器是否不再使用,如果存在这样的寄存器则将其回收,然后直接分配这个回收的已使用过的寄存器,如果没有,才分配一个新的寄存器。
但当函数中存在有跳转指令时,情况就不一样了,在寄存器分配时,如果有JUMP跳转语句这种情况,在发生JUMP跳转时,从Jump语句开始位置到JUMP目标位置的语句形成了一个循环体,在循环体内部,如果某个寄存器先发生读操作,则该寄存器不能回收,如果先发生写操作,则可以回收。
进一步,由于编译器对寄存器分配算法是按默认顺序进行的,所以在分配置时,寄存器分配的编号并不会按照从小到大的顺序进行,还需要对寄存器的编号进行优化,按顺序从上到下的重新调整寄存器编号。
进一步,有些寄存器在写操作后,再也没有发生读操作,对于这样的指令,可以直接删除这条指令,而不会影响到程序执行结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于芯海科技(深圳)股份有限公司,未经芯海科技(深圳)股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811609866.7/2.html,转载请声明来源钻瓜专利网。