[发明专利]栈空间统计方法、装置及介质有效
申请号: | 202110284125.1 | 申请日: | 2021-03-17 |
公开(公告)号: | CN112948000B | 公开(公告)日: | 2023-03-03 |
发明(设计)人: | 王伟;黄思源 | 申请(专利权)人: | 星汉智能科技股份有限公司 |
主分类号: | G06F9/30 | 分类号: | G06F9/30;G06F8/30 |
代理公司: | 广州嘉权专利商标事务所有限公司 44205 | 代理人: | 俞梁清 |
地址: | 519030 广东省珠*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 空间 统计 方法 装置 介质 | ||
本发明涉及栈空间统计方法、装置及介质的技术方案,包括:初始化栈顶动态变量;运行软件程序的任一项功能,获取处理器的SP寄存器值;SP指针对比,包括将SP寄存器值分别与栈空间边界及所述栈顶动态变量进行对比,根据对比结果分别进行栈空间使用情况提示及更新所述栈顶动态变量;编译所述软件程序,获取对应的PUSH指令,并在所述PUSH指令中添加用于执行所述SP指针对比的指令,重复执行此步骤直至得到所述软件程序功能运行时所需的最大栈空间。本发明的有益效果为:实现了计算机软件程序在运行时所需的最大栈空间的统计,实现方式简单高效,且可以防止超出最大边界。
技术领域
本发明涉及计算机领域,具体涉及了一种栈空间统计方法、装置及介质。
背景技术
栈(stack)在计算机系统中是一种重要的数据存储结构,其特点是先入后出。在内存中,栈结构占据一片连续的空间,且空间的大小随着保存的数据多少而动态变化。存储数据时,通过push操作,将需要保存的数据从其一端压入,此时栈长度增加。读取数据时,通过pop操作从相同的一端弹出,此时栈长度减少。在这里push和pop所操作的位置称为栈顶(stack top)。为了标记这个动态变化的栈顶,需要有一个指针,称为stack pointer(SP)。固定的一端为栈底(stack base)。
在很多处理器中,栈经常被用于传递函数调用的参数以及缓存处理器的寄存器内容。寄存器是处理器内部进行运算时临时保存数据的逻辑单元。每次调用一个函数时,通常会有push操作。每次调用结束时会有pop操作。随着函数调用层次的增加,栈内所存储的数据会逐渐增多。随着函数调用返回而导致的调用层次减少,栈内数据相应减少。根据栈空间的增长方向不同,有两种栈类型:递增栈,为低地址向高地址增长;递减栈,为高地址向低地址增长。
一个软件中函数调用的层次千差万别,再加上递归调用以及函数指针的使用,导致很难分析出所需要的最大栈空间。
现有的方法一般是根据经验尽量分配足够大小的栈,然后反复测试观察软件是否正常,这种方法的问题是并不足够准确,实际上有些情况下栈溢出不一定能够从功能上明显表现出来,单纯的通过功能测试来防止栈溢出有一定的隐患。另外一个方法是先将内存全部填充为一个特定内容,然后运行软件程序,因为栈空间的增长会修改内存的内容,只要观察最终内存的变化也可以得知栈大小的情况,这种方法需要观察内存的内容,在实际操作上并不是很方便。并且其前提是首先要有足够大的空间,在一些内存非常有限的单片机上不容易实施。
发明内容
本发明的目的在于至少解决现有技术中存在的技术问题之一,提供了栈空间统计方法、装置及介质,实现了计算机软件程序在运行时所需的最大栈空间的统计,实现方式简单高效,且可以防止超出最大边界。
本发明的技术方案包括一种栈空间统计方法,其特征在于,包括:初始化栈顶动态变量;运行软件程序的任一项功能,获取处理器的SP寄存器值;SP指针对比,包括将SP寄存器值分别与栈空间边界及所述栈顶动态变量进行对比,根据对比结果分别进行栈空间使用情况提示及更新所述栈顶动态变量;编译所述软件程序,获取对应的PUSH指令,并在所述PUSH指令中添加用于执行所述SP指针对比的指令,重复执行此步骤直至得到所述软件程序功能运行时所需的最大栈空间。
根据所述的栈空间统计方法,其中初始化栈顶动态变量包括:创建一初始化指令,所述初始化指令用于在每次执行所述SP指针对比时初始化所述栈顶动态变量。
根据所述的栈空间统计方法,其中所述SP指针包括:获取处理器的SP寄存器值及所述栈顶动态变量;对于递减栈,比较SP寄存器值和栈空间边界,若SP寄存器值小于栈空间边界,则提示栈空间不足并终止运行;比较SP寄存器值和所述栈顶动态变量,若SP寄存器值小于所述栈顶动态变量,则更新所述栈顶动态变量为SP寄存器值,否则退出;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于星汉智能科技股份有限公司,未经星汉智能科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110284125.1/2.html,转载请声明来源钻瓜专利网。