亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種用于精確估計(jì)嵌入式系統(tǒng)中堆棧需求量的方法

文檔序號(hào):6584970閱讀:520來源:國知局
專利名稱:一種用于精確估計(jì)嵌入式系統(tǒng)中堆棧需求量的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種用于分析嵌入式系統(tǒng)中堆棧使用的方法,具體說,本發(fā)明涉及一 種用于精確估計(jì)嵌入式系統(tǒng)中堆棧需求量的方法。
背景技術(shù)
堆棧內(nèi)存由程序開發(fā)人員靜態(tài)進(jìn)行分配。如果低估了堆棧的使用量,將會(huì)導(dǎo)致程 序運(yùn)行出錯(cuò);而過高的估計(jì)了堆棧的使用又將造成系統(tǒng)內(nèi)存資源的浪費(fèi)。堆棧分析器不僅 可以降低程序員開發(fā)程序的難度,還可以減少很多隱晦的錯(cuò)誤。本發(fā)明全面分析了本領(lǐng)域內(nèi)相關(guān)研究的進(jìn)展情況,例如專利申請(qǐng)?zhí)?200810061578. 2設(shè)計(jì)了堆棧使用分析的一種方法。在該專利中,以可執(zhí)行文件作為輸入,進(jìn) 行反匯編,基本塊的堆棧分析,函數(shù)內(nèi)的堆棧分析后,以程序的調(diào)用關(guān)系圖為基礎(chǔ)計(jì)算多線 程中的堆棧使用情況,專利申請(qǐng)?zhí)?00810061578. 2還考慮了中斷處理函數(shù)對(duì)堆棧大小的 影響,是一種實(shí)用的堆棧分析方法。然而在該專利中,并未考慮實(shí)時(shí)操作系統(tǒng)RT0S對(duì)堆棧 大小的影響,未考慮程序中可能調(diào)用的動(dòng)態(tài)庫和標(biāo)準(zhǔn)庫對(duì)堆棧的影響。

發(fā)明內(nèi)容
本發(fā)明的目的在于,為克服在嵌入式系統(tǒng)中對(duì)所用堆棧需求估計(jì)不準(zhǔn)導(dǎo)致的系統(tǒng) 不穩(wěn)定問題,從而提出一種用于精確估計(jì)嵌入式系統(tǒng)中堆棧需求量的方法。為了達(dá)到本發(fā)明提供一種用于精確估算最大堆棧使用量的堆棧方法,該發(fā)明詳細(xì) 分析了程序運(yùn)行時(shí)每個(gè)函數(shù)的堆棧使用量,統(tǒng)計(jì)了程序所調(diào)用的運(yùn)行時(shí)庫和標(biāo)準(zhǔn)庫的堆棧 使用信息,同時(shí)還考慮了操作系統(tǒng)本身的運(yùn)行對(duì)堆棧的影響,從而使得對(duì)程序最大堆棧使 用量的計(jì)算更為精確。一種用于估計(jì)嵌入式系統(tǒng)中堆棧需求量的方法,該方法用于精確估計(jì)嵌入式系統(tǒng) 程序運(yùn)行過程中對(duì)堆??臻g的最大需求量,所述的方法包含如下步驟1)對(duì)目標(biāo)二進(jìn)制文件進(jìn)行反匯編得到源匯編文件;2)對(duì)匯編文件進(jìn)行分析得到完整的函數(shù)調(diào)用關(guān)系圖;3)根據(jù)步驟2得到的完整的函數(shù)調(diào)用關(guān)系圖進(jìn)行本地函數(shù)的堆棧需求量分析,并 求和;4)根據(jù)步驟2得到的完整的函數(shù)調(diào)用關(guān)系圖,統(tǒng)計(jì)每棵調(diào)用樹所調(diào)用的運(yùn)行時(shí)庫 的堆棧需求和標(biāo)準(zhǔn)庫的堆棧需求量并求和;5)按照優(yōu)先級(jí)進(jìn)行中斷函數(shù)的堆棧需求進(jìn)行分析,確定每個(gè)優(yōu)先級(jí)內(nèi)各個(gè)中斷程 序的最大堆棧需求量并求和,再加上中斷發(fā)生時(shí),保存處理器狀態(tài)而增加的額外堆棧需求 量;6)對(duì)3、4和5步驟中的堆棧需求求和,統(tǒng)計(jì)出單線程程序的嵌入式系統(tǒng)的最大堆 棧需求量;其中,步驟2)所述的完整的函數(shù)關(guān)系圖步驟,具體包含
3
首先用控制流分析得到初步的函數(shù)關(guān)系圖,然后針對(duì)間接調(diào)用函數(shù)和遞歸調(diào)用函 數(shù)采取抽象解釋算法的值分析方法進(jìn)一步分析,對(duì)于無法分析的函數(shù)調(diào)用需要用戶進(jìn)行注 釋,得到完整的函數(shù)調(diào)用關(guān)系圖。所述的用于精確估計(jì)嵌入式系統(tǒng)中堆棧需求量的方法,其特征在于,所述的運(yùn)行 時(shí)庫函數(shù)的堆棧需求,直接對(duì)源代碼進(jìn)行堆棧需求分析;所述的標(biāo)準(zhǔn)庫函數(shù),查詢編譯器廠 商提供的堆棧信息表格得到堆棧需求。所述的用于精確估計(jì)嵌入式系統(tǒng)中堆棧需求量的方法,其特征在于,步驟3)所述 的本地函數(shù)堆棧需求分析需要確定函數(shù)調(diào)用深度,針對(duì)在同一棵調(diào)用樹上的函數(shù)堆棧大小 進(jìn)行累加,對(duì)于復(fù)雜遞歸函數(shù)的深度通過值分析得到數(shù)據(jù),否則需要用戶進(jìn)行注釋。所述的用于精確估計(jì)嵌入式系統(tǒng)中堆棧需求量的方法,其特征在于,如果程序以 多線程方式運(yùn)行,為每個(gè)線程建立調(diào)用樹,并重復(fù)步驟3)至6),得到多線程時(shí)系統(tǒng)的最大 堆棧需求量。所述的用于精確估計(jì)嵌入式系統(tǒng)中堆棧需求量的方法,其特征在于,所述的最大 堆棧需求量與操作系統(tǒng)本身運(yùn)行時(shí)的堆棧最大需求量求和,得到整個(gè)嵌入式系統(tǒng)程序運(yùn)行 時(shí)最大堆棧需求量。本發(fā)明的優(yōu)點(diǎn)在于,除了可以靜態(tài)的計(jì)算多線程程序的堆棧大小,還可以分析運(yùn) 行時(shí)庫、標(biāo)準(zhǔn)庫和操作系統(tǒng)的堆棧使用情況,使得計(jì)算結(jié)果更加精確,用于指導(dǎo)程序員合理 的分配內(nèi)存資源,從而保證嵌入式系統(tǒng)的安全性可靠性。


圖1給出了本發(fā)明的詳細(xì)流程圖。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)的說明。下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明做進(jìn)一步說明。該方法具體工作步驟如圖 1所示1.對(duì)二進(jìn)制文件進(jìn)行反匯編得到匯編文件。不同的硬件平臺(tái)需要不同的反匯編工且.
Z、 92.對(duì)匯編文件進(jìn)行控制流分析得到函數(shù)調(diào)用關(guān)系圖,這里的函數(shù)調(diào)用圖可能因?yàn)?間接調(diào)用的存在無法明確反映出函數(shù)關(guān)系,因此需要進(jìn)一步流分析;3.對(duì)匯編文件進(jìn)行值分析,得到完整的函數(shù)調(diào)用關(guān)系圖。值分析采取抽象解釋算 法。對(duì)于無法分析的函數(shù)調(diào)用需要用戶進(jìn)行注釋。以下步驟以單線程為模型進(jìn)行分析,對(duì) 于多線程分析,步驟7給出方案;4.進(jìn)行本地函數(shù)的堆棧使用分析。本地函數(shù)分析需要明確函數(shù)調(diào)用深度,在同一 棵調(diào)用樹上的函數(shù)堆棧大小需要進(jìn)行累加。對(duì)于復(fù)雜遞歸函數(shù)的深度通過值分析得到數(shù) 據(jù),否則需要用戶進(jìn)行注釋;5.按照優(yōu)先級(jí)進(jìn)行中斷函數(shù)的堆棧使用分析,確定每個(gè)優(yōu)先級(jí)內(nèi)各個(gè)中斷程序的 最大堆棧用量并進(jìn)行求和。還需計(jì)算中斷發(fā)生時(shí),用來保存處理器中間狀態(tài)的堆棧使用空 間;
6.統(tǒng)計(jì)每棵調(diào)用樹所調(diào)用的運(yùn)行時(shí)庫和標(biāo)準(zhǔn)庫的堆棧使用信息。對(duì)于運(yùn)行時(shí)庫函 數(shù)的堆棧使用,可以對(duì)源代碼進(jìn)行堆棧分析;對(duì)于標(biāo)準(zhǔn)庫函數(shù),可以通過查詢編譯器廠商提 供的堆棧信息表格得到數(shù)據(jù);7.對(duì)4,5,6步驟中的最大堆棧使用求和,統(tǒng)計(jì)出程序的最壞堆棧使用量。如果程 序以多線程方式運(yùn)行,為每個(gè)線程建立調(diào)用樹,重復(fù)步驟4至7,最后求和;8.計(jì)算操作系統(tǒng)RT0S本身運(yùn)行時(shí)的堆棧最大需求量;9.對(duì)7和8計(jì)算結(jié)果求和,得到多線程程序運(yùn)行時(shí)對(duì)系統(tǒng)的最大堆棧需求量;10.反標(biāo)調(diào)用關(guān)系圖,并使用圖形化界面輸出通過以上步驟,本發(fā)明可以對(duì)多線程程序的堆棧空間使用量進(jìn)行精確的估算,可 以應(yīng)用在程序的安全性檢查步驟中。最后所應(yīng)說明的是,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制。盡管參 照實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,對(duì)本發(fā)明的技術(shù)方 案進(jìn)行修改或者等同替換,都不脫離本發(fā)明技術(shù)方案的精神和范圍,其均應(yīng)涵蓋在本發(fā)明 的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
一種用于精確估計(jì)嵌入式系統(tǒng)中堆棧需求量的方法,該方法用于精確估計(jì)嵌入式系統(tǒng)程序運(yùn)行過程中對(duì)堆??臻g的最大需求量,所述的方法包含如下步驟1)對(duì)目標(biāo)二進(jìn)制文件進(jìn)行反匯編得到源匯編文件;2)對(duì)匯編文件進(jìn)行分析得到完整的函數(shù)調(diào)用關(guān)系圖;3)根據(jù)步驟2得到的完整的函數(shù)調(diào)用關(guān)系圖進(jìn)行本地函數(shù)的堆棧需求量分析,并求和;4)根據(jù)步驟2得到的完整的函數(shù)調(diào)用關(guān)系圖,統(tǒng)計(jì)每棵調(diào)用樹所調(diào)用的運(yùn)行時(shí)庫的堆棧需求和標(biāo)準(zhǔn)庫的堆棧需求量并求和;5)按照優(yōu)先級(jí)進(jìn)行中斷函數(shù)的堆棧需求進(jìn)行分析,確定每個(gè)優(yōu)先級(jí)內(nèi)各個(gè)中斷程序的最大堆棧需求量并求和,再加上中斷發(fā)生時(shí),保存處理器狀態(tài)而增加的額外堆棧需求量;6)對(duì)3、4和5步驟中的堆棧需求求和,統(tǒng)計(jì)出單線程程序的嵌入式系統(tǒng)的最大堆棧需求量;其中,步驟2)所述的完整的函數(shù)關(guān)系圖步驟,具體包含首先用控制流分析得到初步的函數(shù)關(guān)系圖,然后針對(duì)間接調(diào)用函數(shù)和遞歸調(diào)用函數(shù)采取抽象解釋算法的值分析方法進(jìn)一步分析,對(duì)于無法分析的函數(shù)調(diào)用需要用戶進(jìn)行注釋,得到完整的函數(shù)調(diào)用關(guān)系圖。
2.根據(jù)權(quán)利要求1所述的用于精確估計(jì)嵌入式系統(tǒng)中堆棧需求量的方法,其特征在 于,所述的運(yùn)行時(shí)庫函數(shù)的堆棧需求,直接對(duì)源代碼進(jìn)行堆棧需求分析;所述的標(biāo)準(zhǔn)庫函 數(shù),查詢編譯器廠商提供的堆棧信息表格得到堆棧需求。
3.根據(jù)權(quán)利要求1所述的用于精確估計(jì)嵌入式系統(tǒng)中堆棧需求量的方法,其特征在 于,步驟3)所述的本地函數(shù)堆棧需求分析需要確定函數(shù)調(diào)用深度,針對(duì)在同一棵調(diào)用樹上 的函數(shù)堆棧大小進(jìn)行累加,對(duì)于復(fù)雜遞歸函數(shù)的深度通過值分析得到數(shù)據(jù),否則需要用戶 進(jìn)行注釋。
4.根據(jù)權(quán)利要求1所述的用于精確估計(jì)嵌入式系統(tǒng)中堆棧需求量的方法,其特征在 于,如果程序以多線程方式運(yùn)行,為每個(gè)線程建立調(diào)用樹,并重復(fù)步驟3)至6),得到多線程 時(shí)系統(tǒng)的最大堆棧需求量。
5.根據(jù)權(quán)利要求1或4所述的用于精確估計(jì)嵌入式系統(tǒng)中堆棧需求量的方法,其特征 在于,所述的最大堆棧需求量與操作系統(tǒng)本身運(yùn)行時(shí)的堆棧最大需求量求和,得到整個(gè)嵌 入式系統(tǒng)程序運(yùn)行時(shí)最大堆棧需求量。
全文摘要
本發(fā)明提出一種用于精確估計(jì)嵌入式系統(tǒng)中堆棧需求量的方法,所述的方法包含如下步驟用完整的函數(shù)調(diào)用關(guān)系圖進(jìn)行本地函數(shù)和每棵調(diào)用樹運(yùn)行時(shí)庫和標(biāo)準(zhǔn)庫的堆棧需求的堆棧需求量分析,并求和;確定每個(gè)優(yōu)先級(jí)內(nèi)各個(gè)中斷程序的最大堆棧需求量并求和,并加上保存處理器狀態(tài)而增加的額外堆棧需求;對(duì)以上結(jié)果求和得到單線程的最大堆棧需求;所述的完整的函數(shù)關(guān)系圖,首先用控制流分析得到初步的函數(shù)關(guān)系圖,然后針對(duì)間接調(diào)用函數(shù)和遞歸調(diào)用函數(shù)采取抽象解釋算法的值分析方法進(jìn)一步分析,得到完整的函數(shù)調(diào)用關(guān)系圖,對(duì)于無法分析的函數(shù)調(diào)用需要用戶進(jìn)行注釋。針對(duì)多線程重復(fù)單線程步驟并將所有求和,最后在加上操作系統(tǒng)的堆棧需求量即系統(tǒng)總堆棧需求。
文檔編號(hào)G06F9/50GK101876923SQ20091024125
公開日2010年11月3日 申請(qǐng)日期2009年11月27日 優(yōu)先權(quán)日2009年11月27日
發(fā)明者張鐵軍, 時(shí)磊, 王東輝, 王紅梅 申請(qǐng)人:中國科學(xué)院聲學(xué)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1