【技术实现步骤摘要】
堆栈区域扩充的方法、装置及硬件平台
本专利技术涉及计算机
,尤其涉及一种堆栈区域扩充的方法、装置及硬件平台、电子设备和可读存储介质。
技术介绍
随着物联网,移动互联网,云计算等产业的不断发展与增长,其依赖的半导体产业也取得长足发展,芯片作为核心变得越来越重要。目前针对不同的应用方向与场景,出现了许多专用芯片和通用芯片,有的为低功耗,有的为低成本,有的为高性能等等,这就导致出现许多种类的资源受限的芯片(包括但不限于MCU,MPU等),在这些芯片中高速的RAM(比如SRAM)作为一种成本较高的资源,往往数量较少,而速度相对较低的RAM(比如DRAM)成本往往也较低,因此提供的数量相对多一点。在芯片应用中,堆栈(stack)是个特殊的存储区,属于RAM空间的一部分,主要用于函数活动记录,比如保存函数调用时的参数、返回地址及特殊寄存器等,同时也为函数的局部变量分配存储空间。另外,中断切换时保存和恢复现场(与函数类似)。堆栈具有先进后出的特性,根据平台的不同,与堆栈相关的寄存器数量会有不同。在具有堆栈功能的硬件平台中,一般至少有一个堆栈指针寄存器(SP),用于指向堆栈的栈顶地址。由于堆栈频繁使用,因此为了提升性能,往往会使用速度最快的RAM,而且目前的堆栈区域都是连续的,这就导致堆栈区域往往很小,非常容易出现堆栈溢出的情况,不易写出复杂的应用,并且出现错误不易排查,给开发人员的开发增加了困难,严重影响开发效率。
技术实现思路
本专利技术提供一种堆栈区域扩充的方法、装置、硬件平台、电子设 ...
【技术保护点】
1.一种堆栈区域扩充的方法,其特征在于,包括:/nS1、获取可用做堆栈的至少一个资源块,所述至少一个资源块中的每个资源块作为一个堆栈区域使用,从而提供多个堆栈区域;/nS2、将所述多个堆栈区域排序;/nS3、按序使用所述多个堆栈区域,使用过程之中,如果当前使用的第一堆栈区域上溢,则切换到所述第一堆栈区域的下一堆栈区域,如果当前使用的堆栈区域下溢,则切换到所述第一堆栈区域的上一堆栈区域。/n
【技术特征摘要】
1.一种堆栈区域扩充的方法,其特征在于,包括:
S1、获取可用做堆栈的至少一个资源块,所述至少一个资源块中的每个资源块作为一个堆栈区域使用,从而提供多个堆栈区域;
S2、将所述多个堆栈区域排序;
S3、按序使用所述多个堆栈区域,使用过程之中,如果当前使用的第一堆栈区域上溢,则切换到所述第一堆栈区域的下一堆栈区域,如果当前使用的堆栈区域下溢,则切换到所述第一堆栈区域的上一堆栈区域。
2.根据权利要求1所述的堆栈区域扩充的方法,其特征在于,所述资源块包括多个离散随机存取存储器RAM区域中的一个或多个。
3.根据权利要求1所述的堆栈区域扩充的方法,其特征在于,步骤S1之前还包括:根据系统资源,划分可用作堆栈的至少一个资源块。
4.根据权利要求1所述的堆栈区域扩充的方法,其特征在于,步骤S2中按照所述多个堆栈区域对应的资源块的存取速度从高到低进行排序;或者,按照所述多个堆栈区域对应的资源块的存取速度并结合所述资源块的大小进行排序。
5.根据权利要求1-4任一项所述的堆栈区域扩充的方法,其特征在于,步骤S2还包括:
将完成排序的所述多个堆栈区域的操作管理信息存入数据结构;所述操作管理信息包括所述多个堆栈区域的排列顺序信息,以及每个堆栈区域的地址、大小及当该堆栈区域作为当前使用的堆栈区域工作时溢出后需要备份的寄存器及其大小,所述溢出包括上溢和下溢;
步骤S3中根据所述操作管理信息按序使用所述多个堆栈区域。
6.根据权利要求5所述的堆栈区域扩充的方法,其特征在于,所述数据结构包括数组,所述数组中各元素的顺序与所述多个堆栈区域的排列顺序一致,所述数组中的每个元素包含的信息包括:与所述元素对应的所述堆栈区域的地址、大小以及当所述堆栈区域溢出后需要备份的各寄存器及其大小。
7.根据权利要求6所述的堆栈区域扩充的方法,其特征在于,所述堆栈区域溢出后需要备份的各寄存器设置于对应的堆栈区域的顶部,所述堆栈溢出后需要备份的各寄存器包括:堆栈指针寄存器SP,堆栈计数寄存器CNT,堆栈大小寄存器SZ;步骤S3包括:
S31、程序初始化时,初始化所述数组的索引,使其指向所述数组的开始元素;根据所述索引从所述数组中取出一个元素,然后根据该元素包含的信息设置所述堆栈指针寄存器SP的值、所述堆栈大小寄存器SZ的值、所述堆栈计数寄存器CNT的值,并使所述堆栈区域能够在溢出时产生中断;循环执行下述步骤S32-S34,直至程序结束。
S32、程序执行过程中,如果遇到需要操作所述堆栈指针寄存器SP来保留堆栈区域的指令或操作时,在修改所述堆栈指针寄存器SP的值之前,使所述堆栈计数寄存器CNT增加与所述指令或操作相应的计数;如果遇到需要操作所述堆栈指针寄存器SP来释放堆栈区域的指令或操作时,在修改所述堆栈指针寄存器SP的值之前,使所述堆栈计数寄存器CNT减去与所述指令或操作相应的计数;
S33、当所述堆栈计数寄存器CNT的值大于等于所述堆栈大小寄存器S...
【专利技术属性】
技术研发人员:喻安雄,
申请(专利权)人:海光信息技术股份有限公司,
类型:发明
国别省市:天津;12
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。