專利名稱:一種靜態(tài)存儲分配的局部非靜態(tài)數(shù)據(jù)的存儲空間分配方法
技術領域:
本發(fā)明涉及編譯器領域中靜態(tài)存儲分配中對于局部非靜態(tài)數(shù)據(jù)進行存儲空間分配的一種分配方法。
背景技術:
在編譯開發(fā)工具中,一個重要的處理步驟就是數(shù)據(jù)存儲空間的分配。對于編譯系統(tǒng)一般有靜態(tài)存儲分配、棧式存儲分配和堆式存儲分配三種分配方式。靜態(tài)存儲分配方法是在程序生命周期中,數(shù)據(jù)對象的數(shù)據(jù)存儲空間被分配到固定的位置,這種分配方法需要數(shù)據(jù)對象的數(shù)量和大小在編譯時刻已知。棧式存儲分配方法是在棧上為數(shù)據(jù)對象分配數(shù)據(jù)空間,對于數(shù)據(jù)的使用通過起始地址加偏移來實現(xiàn),這樣就可以在程序運行期間根據(jù)需要為數(shù)據(jù)對象分配相應的數(shù)據(jù)空間。棧式存儲分配使得遞歸和動態(tài)數(shù)組成為可能。堆式存儲方法是最靈活最昂貴的存儲分配方法,數(shù)據(jù)對象可以在任何時刻,以任意次序分配和釋放。它允許程序在一個稱為存儲池的堆中分配空間,堆分配既可以由編程者自己控制,也可以由編譯系統(tǒng)或者加載器進行運行時控制,這給編程者使用數(shù)據(jù)存儲空間帶來了極大的靈活性。早期的編譯系統(tǒng),一般都采用靜態(tài)存儲分配方法,目前的大部分編譯系統(tǒng),除了全局變量和局部靜態(tài)變量外,一般不再采用靜態(tài)數(shù)據(jù)存儲空間分配方法進行數(shù)據(jù)空間分配, 但是對于某些嵌入式芯片,由于其功能的限制,其編譯系統(tǒng)中對于所有的數(shù)據(jù)空間仍采用了靜態(tài)存儲分配方法。
發(fā)明內(nèi)容
目前已有的靜態(tài)存儲分配方法中,對于局部非靜態(tài)數(shù)據(jù)的分配,是以函數(shù)為單位來進行分配操作。本發(fā)明的目的在于實現(xiàn)一種以函數(shù)調(diào)用關系鏈為組織形式的更有效、更快速的局部非靜態(tài)數(shù)據(jù)的存儲空間分配方法。本發(fā)明的目的通過以下技術實現(xiàn),步驟如下(見圖1)1.讀入中間目標代碼文件中的函數(shù)信息,建立函數(shù)鏈表,在函數(shù)鏈表的節(jié)點中存儲函數(shù)的所有信息;2.建立可分配數(shù)據(jù)空間鏈表根據(jù)配置文件或輸入?yún)?shù)中設置的可分配的數(shù)據(jù)空間信息,使用內(nèi)存節(jié)點結(jié)構(gòu)體記錄每一塊可被分配的數(shù)據(jù)存儲空間,并將其放在可分配數(shù)據(jù)空間鏈表中。3.建立函數(shù)調(diào)用關系鏈(圖2):(1)遍歷函數(shù)鏈表,分析每個函數(shù)的函數(shù)體代碼,將其調(diào)用的函數(shù)名稱用鏈表(或集合)記錄下來形成被調(diào)用函數(shù)記錄;(2)遍歷函數(shù)鏈表,根據(jù)上面步驟(1)形成的記錄,找出沒有被任何函數(shù)調(diào)用過的函數(shù)(即沒有出現(xiàn)在上面步驟中形成的記錄中的函數(shù)),將其作為每個函數(shù)調(diào)用關系鏈表的根函數(shù),將其指針放入根函數(shù)鏈表的節(jié)點中,并給予一個數(shù)字編號;(3)從每個根函數(shù)開始,采用廣度優(yōu)先搜索建立每個函數(shù)與其調(diào)用的函數(shù)間的連接,形成函數(shù)調(diào)用關系鏈,即通過查詢函數(shù)鏈表,將被調(diào)用函數(shù)的指針或位置信息填入調(diào)用函數(shù)的結(jié)構(gòu)體中(重復調(diào)用只記錄一次),并通過在被調(diào)用函數(shù)中記錄函數(shù)調(diào)用關系鏈的根函數(shù)的編號,來確定該函數(shù)是否被多個函數(shù)調(diào)用關系鏈調(diào)用,每次被調(diào)用函數(shù)中記錄的當前根函數(shù)的編號轉(zhuǎn)換時,其內(nèi)部記錄的調(diào)用其的函數(shù)調(diào)用關系鏈的個數(shù)增加1,函數(shù)的調(diào)用關系鏈個數(shù)的初始值為0。4.為被多個函數(shù)調(diào)用關系鏈調(diào)用的函數(shù)的局部非靜態(tài)數(shù)據(jù)分配數(shù)據(jù)存儲空間(1)遍歷函數(shù)鏈表,如果函數(shù)記錄的調(diào)用關系鏈的個數(shù)大于1,執(zhí)行下面的步驟 (2)-(4);(2)從可分配數(shù)據(jù)存儲空間鏈表中找得合適的存儲塊進行相應的分配;(3)將分配的數(shù)據(jù)存儲空間從可分配數(shù)據(jù)存儲空間鏈表中去除;(4)并將相關的分配信息記錄入永久分配數(shù)據(jù)存儲空間鏈表中。5.為每個函數(shù)調(diào)用關系鏈的函數(shù)的局部非靜態(tài)數(shù)據(jù)分配可被覆蓋數(shù)據(jù)存儲空間, 從每個函數(shù)調(diào)用關系鏈的根函數(shù)開始,執(zhí)行下列步驟(圖3)(1)若當前函數(shù)的局部非靜態(tài)數(shù)據(jù)已經(jīng)分配數(shù)據(jù)存儲空間,則返回;(2)將當前可分配數(shù)據(jù)存儲空間鏈表生成一副本,在副本中按照下面的步驟為函數(shù)的局部非靜態(tài)數(shù)據(jù)分配數(shù)據(jù)存儲空間;(3)從當前函數(shù)調(diào)用關系鏈的已分配數(shù)據(jù)存儲空間鏈表中查找是否有被當前函數(shù)直接或間接調(diào)用的函數(shù)的分配數(shù)據(jù)存儲空間的信息(該調(diào)用關系可以通過步驟3中生成的信息中獲得),如果有,則將其與當前可分配數(shù)據(jù)存儲空間副本中重合的部分填入一個新建的臨時不可覆蓋數(shù)據(jù)存儲空間鏈表中;(4)從當前可分配數(shù)據(jù)存儲空間鏈表副本中去除步驟(3)中生成的臨時不可覆蓋數(shù)據(jù)存儲空間鏈表中記錄的所有的存儲空間,然后在剩余的存儲空間中為當前函數(shù)的局部非靜態(tài)數(shù)據(jù)分配數(shù)據(jù)存儲空間,并將相關分配信息記錄入當前函數(shù)調(diào)用關系鏈的已分配數(shù)據(jù)存儲空間鏈表中,并將當前函數(shù)分配的數(shù)據(jù)存儲空間從當前可分配數(shù)據(jù)存儲空間鏈表副本中去除;(5)將步驟(3)中生成的臨時不可覆蓋數(shù)據(jù)存儲空間鏈表合并到步驟⑷操作后的當前可分配數(shù)據(jù)存儲空間鏈表副本中(合并后,臨時不可覆蓋數(shù)據(jù)存儲空間鏈表為空);(6)將步驟(5)操作后的當前可分配數(shù)據(jù)存儲空間鏈表副本作為子函數(shù)的當前可分配數(shù)據(jù)存儲空間鏈表,然后遞歸執(zhí)行步驟(1)-(6),為當前函數(shù)調(diào)用的函數(shù)中未進行局部非靜態(tài)數(shù)據(jù)存儲分配的函數(shù)分配合適的數(shù)據(jù)存儲空間,直到當前函數(shù)調(diào)用關系鏈中所有的函數(shù)的局部非靜態(tài)數(shù)據(jù)都分配了數(shù)據(jù)存儲空間為止;(7)遍歷當前函數(shù)調(diào)用關系鏈的已分配數(shù)據(jù)存儲空間鏈表,合并整理出當前函數(shù)調(diào)用關系鏈使用的數(shù)據(jù)存儲空間,從可分配數(shù)據(jù)存儲空間鏈表中去除該部分數(shù)據(jù)空間;(8)如果還有未進行局部非靜態(tài)數(shù)據(jù)分配的函數(shù)調(diào)用關系鏈,按照上面步驟繼續(xù)在可分配數(shù)據(jù)存儲空間鏈表中進行分配。
圖1靜態(tài)存儲分配中函數(shù)局部非靜態(tài)數(shù)據(jù)的存儲空間分配流程圖2函數(shù)調(diào)用關系鏈示例,其中圖中的小方框代表函數(shù),小方框之間的連線代表調(diào)用關系,箭頭指向被調(diào)用函數(shù)。圖3靜態(tài)存儲分配中被單一函數(shù)調(diào)用關系鏈調(diào)用的函數(shù)局部非靜態(tài)數(shù)據(jù)存儲空間分配流程
具體實施例方式實施本發(fā)明需要建立適當?shù)臄?shù)據(jù)結(jié)構(gòu),分別表示函數(shù)節(jié)點,空間分配信息節(jié)點等, 建立函數(shù)鏈表,記錄被調(diào)用函數(shù)查詢名的查詢表,記錄函數(shù)調(diào)用關系鏈根函數(shù)信息的鏈表, 可分配數(shù)據(jù)存儲空間鏈表和其它一些輔助鏈表,這些表可以以鏈表形式組織,為了提高效率,也可以將部分表以哈希表、集合表的形式組織。建立上述數(shù)據(jù)結(jié)構(gòu)后,就可以參照本發(fā)明實施具體的局部非靜態(tài)數(shù)據(jù)存儲空間的分配。步驟如下1.讀入中間目標代碼文件中的函數(shù)信息,存入函數(shù)鏈表functionjist ;2.讀入可分配數(shù)據(jù)空間信息,存入可分配數(shù)據(jù)空間鏈表data_mem_list ;3.建立函數(shù)調(diào)用關系鏈(圖2)(1)遍歷函數(shù)鏈表functionjist,分析每個函數(shù)的函數(shù)體代碼,將其調(diào)用的函數(shù)名稱用集合callecLfunctioruset記錄下來形成被調(diào)用函數(shù)記錄;(2)遍歷函數(shù)鏈表function_list,通過查詢called_function_set,找出沒有出現(xiàn)在callecLfunctioruset中的函數(shù),將其作為每個函數(shù)調(diào)用關系鏈表的根函數(shù),將其指針放入根函數(shù)鏈表r00t_functi0n_list的節(jié)點中,并給予一個數(shù)字編號;(3)從r00t_funCti0n_liSt中記錄的每個根函數(shù)開始,采用廣度優(yōu)先搜索建立每個函數(shù)與其調(diào)用的函數(shù)間的連接,形成函數(shù)調(diào)用關系鏈,即通過查詢函數(shù)鏈表functi0n_ list,將被調(diào)用函數(shù)的指針信息填入functionjist中調(diào)用函數(shù)的結(jié)構(gòu)體的被調(diào)用函數(shù)信息表sub_function_iter_list中(重復調(diào)用只記錄一次),并通過在function_list鏈表中被調(diào)用函數(shù)的結(jié)構(gòu)體中記錄函數(shù)調(diào)用關系鏈的根函數(shù)的編號,來確定該函數(shù)是否被多個函數(shù)調(diào)用關系鏈調(diào)用,每次被調(diào)用函數(shù)中記錄的當前根函數(shù)的編號轉(zhuǎn)換時,其內(nèi)部記錄的調(diào)用其的函數(shù)調(diào)用關系鏈的個數(shù)chain_num增加1,chain_num的初始值為0。4.為被多個函數(shù)調(diào)用關系鏈調(diào)用的函數(shù)的局部非靜態(tài)數(shù)據(jù)分配數(shù)據(jù)存儲空間(1)遍歷函數(shù)鏈表functionjist,如果函數(shù)記錄的調(diào)用關系鏈的個數(shù)chain_num 大于1,執(zhí)行下面的步驟(2)-(4);(2)從可分配數(shù)據(jù)存儲空間鏈表data_mem_list中找得合適的存儲塊進行相應的分配;(3)將分配的數(shù)據(jù)存儲空間從可分配數(shù)據(jù)存儲空間鏈表data_mem_list中去除;(4)并將相關的分配信息記錄入永久分配數(shù)據(jù)存儲空間鏈表permanent_all0C_ mem_list 中。5.為每個函數(shù)調(diào)用關系鏈的函數(shù)的局部非靜態(tài)數(shù)據(jù)分配可被覆蓋數(shù)據(jù)存儲空間, 遍歷根函數(shù)鏈表r00t_fUnCti0n_list,從每個函數(shù)調(diào)用關系鏈的根函數(shù)開始,執(zhí)行下列步驟(圖3)(1)若當前函數(shù)的局部非靜態(tài)數(shù)據(jù)已經(jīng)分配數(shù)據(jù)存儲空間,則返回;
(2)將當前可分配數(shù)據(jù)存儲空間鏈表current_data_mem_liSt (對于根函數(shù),該鏈表為 data_mem_list)生成一副本 current_data_mem_duplicate_list,在副本中按照下面的步驟為函數(shù)的局部非靜態(tài)數(shù)據(jù)分配數(shù)據(jù)存儲空間;(3)從當前函數(shù)調(diào)用關系鏈的已分配數(shù)據(jù)存儲空間鏈表tmp_all0C_mem_liSt中查找是否有被當前函數(shù)直接或間接調(diào)用的函數(shù)的分配數(shù)據(jù)存儲空間的信息,如果有,則將其與當前可分配數(shù)據(jù)存儲空間鏈表副本中重合的部分填入一個新建的臨時不可覆蓋數(shù)據(jù)存儲空間鏈表tmp_used_mem_list中;(4)從當前可分配數(shù)據(jù)存儲空間鏈表副本current_data_mem_duplicate_list中去除臨時不可覆蓋數(shù)據(jù)存儲空間鏈表tmp_used_mem_list中記錄的所有的存儲空間,然后在剩余的存儲空間中為當前函數(shù)的局部非靜態(tài)數(shù)據(jù)分配數(shù)據(jù)存儲空間,并將相關分配信息記錄到當前函數(shù)調(diào)用關系鏈的已分配數(shù)據(jù)存儲空間鏈表tmp_all0C_mem_liSt中,并將當前函數(shù)分配的數(shù)據(jù)存儲空間從當前可分配數(shù)據(jù)存儲空間鏈表副本cUrrent_data_mem_ duplicate_list Φ ^ ;(5)將步驟(3)中生成的臨時不可覆蓋數(shù)據(jù)存儲空間鏈表tmp_uSed_mem_liSt合并到步驟(4)操作后的當前可分配數(shù)據(jù)存儲空間鏈表副本current_data_mem_duplicate_ list中,合并后,臨時不可覆蓋數(shù)據(jù)存儲空間鏈表tmp_uSed_mem_liSt為空;(6)將步驟(5)操作后的當前可分配數(shù)據(jù)存儲空間鏈表副本current_data_mem_ duplicate_list作為其子函數(shù)的current_data_mem_list,然后遞歸執(zhí)行步驟(1)-(6),為當前函數(shù)調(diào)用的函數(shù)中未進行局部非靜態(tài)數(shù)據(jù)存儲分配的函數(shù)分配合適的數(shù)據(jù)存儲空間, 直到當前函數(shù)調(diào)用關系鏈中所有的函數(shù)的局部非靜態(tài)數(shù)據(jù)都分配了數(shù)據(jù)存儲空間為止;(7)遍歷當前函數(shù)調(diào)用關系鏈的已分配數(shù)據(jù)存儲空間鏈表tmp_all0C_mem_liSt, 合并整理出當前函數(shù)調(diào)用關系鏈使用的數(shù)據(jù)存儲空間,從可分配數(shù)據(jù)存儲空間鏈表data_ mem_list中去除該部分數(shù)據(jù)空間;(8)如果還有未進行局部非靜態(tài)數(shù)據(jù)分配的函數(shù)調(diào)用關系鏈,按照上面步驟繼續(xù)在可分配數(shù)據(jù)存儲空間鏈表data_mem_list中進行分配。
權利要求
1.一種靜態(tài)存儲分配的局部非靜態(tài)數(shù)據(jù)的存儲空間分配方法,其特征在于步驟如下(1).讀入中間目標代碼文件中的函數(shù)信息,建立函數(shù)鏈表,在函數(shù)鏈表的節(jié)點中存儲函數(shù)信息;(2).建立可分配數(shù)據(jù)空間鏈表,根據(jù)配置文件或輸入?yún)?shù)中設置的可分配的數(shù)據(jù)空間信息,記錄每一塊可被分配的數(shù)據(jù)存儲空間,并將其放在可分配數(shù)據(jù)空間鏈表中;(3).建立函數(shù)調(diào)用關系鏈;(4).為被多個函數(shù)調(diào)用關系鏈調(diào)用的函數(shù)的局部非靜態(tài)數(shù)據(jù)分配不可被覆蓋數(shù)據(jù)存儲空間;(5).從每個函數(shù)調(diào)用關系鏈的根函數(shù)開始,以函數(shù)調(diào)用關系鏈為單位為被單一函數(shù)調(diào)用關系鏈調(diào)用的函數(shù)的局部非靜態(tài)數(shù)據(jù)分配可被覆蓋數(shù)據(jù)存儲空間。
2.如權利要求1所述的一種靜態(tài)存儲分配的局部非靜態(tài)數(shù)據(jù)的存儲空間分配方法,其特征在于步驟C3)進一步包括以下步驟(1)遍歷函數(shù)鏈表,記錄被調(diào)用的函數(shù)的函數(shù)名,建立被調(diào)用函數(shù)表;(2)根據(jù)步驟(1)形成的記錄,找出每個函數(shù)調(diào)用關系鏈表的根函數(shù),給予一個數(shù)字編號;(3)從每個根函數(shù)開始,形成函數(shù)調(diào)用關系鏈,將被調(diào)用函數(shù)的指針或位置信息填入調(diào)用函數(shù)的結(jié)構(gòu)體中,并通過在被調(diào)用函數(shù)中記錄函數(shù)調(diào)用關系鏈的根函數(shù)的編號,來確定該函數(shù)是否被多個函數(shù)調(diào)用關系鏈調(diào)用。
3.如權利要求1所述的一種靜態(tài)存儲分配的局部非靜態(tài)數(shù)據(jù)的存儲空間分配方法,其特征在于步驟(4)具體如下(1)遍歷函數(shù)鏈表,如果函數(shù)記錄的調(diào)用關系鏈的個數(shù)大于1,執(zhí)行步驟0)- );(2)從可分配數(shù)據(jù)存儲空間鏈表中找得合適的存儲塊進行相應的分配;(3)將分配的數(shù)據(jù)存儲空間從可分配數(shù)據(jù)存儲空間鏈表中去除;(4)將相關的分配信息記錄入永久分配數(shù)據(jù)存儲空間鏈表中。
4.如權利要求1或2所述的一種靜態(tài)存儲分配的局部非靜態(tài)數(shù)據(jù)的存儲空間分配方法,其特征在于每次被調(diào)用函數(shù)中記錄的當前根函數(shù)的編號轉(zhuǎn)換時,其內(nèi)部記錄的調(diào)用其的函數(shù)調(diào)用關系鏈的個數(shù)增加1,每個函數(shù)的調(diào)用關系鏈的個數(shù)的初始設定值為O。
5.如權利要求1所述的一種靜態(tài)存儲分配的局部非靜態(tài)數(shù)據(jù)的存儲空間分配方法,其特征在于判斷一個函數(shù)是否被多個函數(shù)調(diào)用關系鏈調(diào)用的方法為檢查其內(nèi)部記錄的函數(shù)調(diào)用關系鏈的個數(shù)是否大于1。
6.如權利要求1所述的一種靜態(tài)存儲分配的局部非靜態(tài)數(shù)據(jù)的存儲空間分配方法,其特征在于其特征在于步驟(5)具體如下(1)若當前函數(shù)的局部非靜態(tài)數(shù)據(jù)已經(jīng)分配數(shù)據(jù)存儲空間,返回;(2)將當前可分配數(shù)據(jù)存儲空間鏈表生成一副本,在副本中按照步驟(3)-(8)為函數(shù)的局部非靜態(tài)數(shù)據(jù)分配數(shù)據(jù)存儲空間;(3)從當前函數(shù)調(diào)用關系鏈的已分配數(shù)據(jù)存儲空間鏈表中查找是否有被當前函數(shù)直接或間接調(diào)用的函數(shù)的分配數(shù)據(jù)存儲空間的信息,如果有,則將其與當前可分配數(shù)據(jù)存儲空間副本中重合的部分填入一個新建的臨時不可覆蓋數(shù)據(jù)存儲空間鏈表中;(4)從當前可分配數(shù)據(jù)存儲空間鏈表副本中去除步驟(3)中生成的臨時不可覆蓋數(shù)據(jù)存儲空間鏈表中記錄的所有的存儲空間,在剩余的存儲空間中為當前函數(shù)的局部非靜態(tài)數(shù)據(jù)分配數(shù)據(jù)存儲空間,將相關分配信息記錄入當前函數(shù)調(diào)用關系鏈的已分配數(shù)據(jù)存儲空間鏈表中,并將當前函數(shù)分配的數(shù)據(jù)存儲空間從當前可分配數(shù)據(jù)存儲空間鏈表副本中去除;(5)將步驟(3)中生成的臨時不可覆蓋數(shù)據(jù)存儲空間鏈表合并到步驟(4)操作后的當前可分配數(shù)據(jù)存儲空間鏈表副本中;(6)將步驟(5)操作后的當前可分配數(shù)據(jù)存儲空間鏈表副本作為子函數(shù)的當前可分配數(shù)據(jù)存儲空間鏈表,然后遞歸執(zhí)行步驟(1)-(6),為當前函數(shù)調(diào)用的函數(shù)中未進行局部非靜態(tài)數(shù)據(jù)存儲分配的函數(shù)分配合適的數(shù)據(jù)存儲空間,直到當前函數(shù)調(diào)用關系鏈中所有的函數(shù)的局部非靜態(tài)數(shù)據(jù)都分配了數(shù)據(jù)存儲空間為止;(7)遍歷當前函數(shù)調(diào)用關系鏈的已分配數(shù)據(jù)存儲空間鏈表,合并整理出當前函數(shù)調(diào)用關系鏈使用的數(shù)據(jù)存儲空間,從可分配數(shù)據(jù)存儲空間鏈表中去除該部分數(shù)據(jù)空間;(8)如果還有未進行局部非靜態(tài)數(shù)據(jù)分配的函數(shù)調(diào)用關系鏈,按照上面步驟繼續(xù)在可分配數(shù)據(jù)存儲空間鏈表中進行分配。
7.如權利要求1所述的一種靜態(tài)存儲分配的局部非靜態(tài)數(shù)據(jù)的存儲空間分配方法,其特征在于為了避免為一個函數(shù)的局部非靜態(tài)數(shù)據(jù)分配數(shù)據(jù)存儲空間時,覆蓋其直接或間接調(diào)用的已經(jīng)進行了分配的函數(shù)的局部非靜態(tài)數(shù)據(jù)的數(shù)據(jù)存儲空間,為每個函數(shù)調(diào)用關系鏈建立已分配數(shù)據(jù)存儲空間鏈表,確保不會產(chǎn)生不合法的覆蓋。
8.如權利要求1所述的一種靜態(tài)存儲分配的局部非靜態(tài)數(shù)據(jù)的存儲空間分配方法,其特征在于位于同一函數(shù)調(diào)用關系鏈上的相互之間沒有調(diào)用關系的函數(shù)的局部非靜態(tài)數(shù)據(jù)的存儲空間之間能互相覆蓋,位于同一函數(shù)調(diào)用關系鏈上的相互之間具有調(diào)用關系的函數(shù)的局部非靜態(tài)數(shù)據(jù)的存儲空間之間不能互相覆蓋,位于不同函數(shù)調(diào)用關系鏈上的任意兩個函數(shù)的局部非靜態(tài)數(shù)據(jù)的數(shù)據(jù)存儲空間之間不能互相覆蓋。
全文摘要
本發(fā)明涉及編譯系統(tǒng)中靜態(tài)存儲分配中對于局部非靜態(tài)數(shù)據(jù)的存儲空間的分配,實現(xiàn)了一種以函數(shù)調(diào)用關系鏈為組織形式的更有效、更快速的局部非靜態(tài)數(shù)據(jù)的存儲空間分配方法,可用于采用靜態(tài)存儲分配的嵌入式編譯系統(tǒng)的開發(fā)設計中。本方法包括以下步驟建立函數(shù)調(diào)用關系鏈,為被多個函數(shù)調(diào)用關系鏈調(diào)用的函數(shù)的局部非靜態(tài)數(shù)據(jù)分配不可被覆蓋數(shù)據(jù)存儲空間,以函數(shù)調(diào)用關系鏈為單位為被單一函數(shù)調(diào)用關系鏈調(diào)用的函數(shù)的局部非靜態(tài)數(shù)據(jù)分配可被覆蓋數(shù)據(jù)存儲空間。
文檔編號G06F12/02GK102467452SQ201010546810
公開日2012年5月23日 申請日期2010年11月16日 優(yōu)先權日2010年11月16日
發(fā)明者于忠華, 何燕, 趙敬超 申請人:北京中電華大電子設計有限責任公司