[發明專利]棧空間統計方法、裝置及介質有效
| 申請號: | 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.szxzyx.cn/pat/books/202110284125.1/2.html,轉載請聲明來源鉆瓜專利網。





