欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于離線約束圖的指針分析方法

文檔序號:9826130閱讀:441來源:國知局
一種基于離線約束圖的指針分析方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明屬于靜態(tài)程序分析領(lǐng)域,涉及一種指針分析方法。
【背景技術(shù)】
[0002]指針分析是一種靜態(tài)程序分析技術(shù),它的目標(biāo)是靜態(tài)確定一個指針變量能夠指向哪些地址(變量或函數(shù)的存儲位置),也就是靜態(tài)確定一個指針變量在程序運行時所有可能的值。指針分析以程序源代碼(或某種中間代碼表示)作為輸入,輸出該程序所包含的指針指向信息。由于指針(引用)在C/C++(Java)程序中被廣泛使用,許多靜態(tài)程序分析技術(shù)需要根據(jù)指針指向信息來解析程序中包含的間接引用,指針分析的結(jié)果直接影響其它靜態(tài)程序分析技術(shù)的有效性,指針分析作為許多靜態(tài)程序分析技術(shù)的使能技術(shù)一直是一項重要的議題。
[0003]目前軟件系統(tǒng)和工業(yè)級源代碼庫的規(guī)模越來越大(如數(shù)百萬代碼行甚至數(shù)千萬代碼行),對于動態(tài)性較弱、使用指針較少、規(guī)模較小的程序,現(xiàn)有的指針分析技術(shù)已經(jīng)較為成熟,可以很好地分析處理這些程序。然而,對于規(guī)模更大、動態(tài)性更強的程序,現(xiàn)有指針分析算法還存在許多問題,需要進一步地研究:(I)如何在不影響指向信息精度的條件下,提高指針分析算法的效率和可擴展性;(2)如何提高指針分析算法的精度,同時盡可能地保證算法的效率和可擴展性;(3)如何設(shè)計適用于并發(fā)程序的指針分析算法等。
[0004]在設(shè)計一個指針分析算法時,首先需要對程序的元素(如程序語句,函數(shù),結(jié)構(gòu)體等)進行建模,這些建模策略也被稱為分析維度;如流敏感性,上下文敏感性,域敏感性等。從理論上來說,精確的指針分析是非常困難的:當(dāng)允許動態(tài)內(nèi)存分配時,過程內(nèi)流敏感指向分析是不可判定的;當(dāng)不允許動態(tài)內(nèi)存分配時,過程內(nèi)流敏感指向分析是PSPACE-完全問題;當(dāng)不允許動態(tài)內(nèi)存分配時,對于包含任意數(shù)目指針間接訪問操作符的程序來說,流不敏感指向分析是NP-Hard問題。這些復(fù)雜性結(jié)論表明現(xiàn)有的指針分析算法都是近似算法,都需要在算法的精度、效率和可擴展性之間進行折衷。
[0005]流敏感性和上下文敏感性是兩個獨立的分析維度;流敏感性關(guān)注的是分析算法如何處理函數(shù)內(nèi)的控制流信息:流敏感分析和流不敏感分析;上下文敏感性側(cè)重的是分析算法如何處理函數(shù)間的調(diào)用信息:上下文敏感分析和上下文不敏感分析。一個指針分析算法根據(jù)其處理函數(shù)內(nèi)的控制流信息時所采取的策略可以被劃分為流敏感分析或流不敏感分析;同時根據(jù)其處理函數(shù)間調(diào)用信息時所使用的策略可以被劃分為上下文敏感分析或上下文不敏感分析。因此,同時考慮流敏感性和上下文敏感性,現(xiàn)有的指針分析算法將被劃分成以下四類:流不敏感上下文不敏感算法、流不敏感上下文敏感算法、流敏感上下文不敏感算法、流敏感上下文敏感算法。
[0006]總的來說,基于合并的流不敏感上下文不敏感算法(Steensgaard指針分析)具有較好的效率和可擴展性(scalability),但是指針分析的精度很差;基于包含的流不敏感上下文不敏感、流敏感上下文不敏感算法和流敏感上下文敏感算法具有更好的精度,但是指針分析過程的效率和可擴展性將會變得很差。為了在算法的精度、效率和可擴展性之間獲得一個較好的折衷,基于包含的流不敏感上下文不敏感算法一直是指針分析領(lǐng)域的研究熱點之一O
[0007]對基于包含的流不敏感(上下文不敏感)指針分析算法的研究主要是圍繞如何設(shè)計有效的在線循環(huán)檢測技術(shù),因為在線循環(huán)檢測技術(shù)能夠在不影響指向信息精度的條件下,顯著地提高基于包含的指針分析算法的效率和可擴展性。
[0008]對基于包含的流不敏感(上下文不敏感)指針分析算法來說,在線循環(huán)檢測過程需要被多次觸發(fā);因此,在設(shè)計在線循環(huán)檢測技術(shù)時就存在一個難點:如何確定在線循環(huán)檢測的頻度來控制指針分析算法的開銷,也就是說,在約束求解的過程中,決定什么時候觸發(fā)循環(huán)檢測。在確定在線循環(huán)檢測的頻度時存在兩個極端:一方面,如果每添加一條有向邊到約束圖中,約束求解算法就觸發(fā)一次循環(huán)檢測;在這種情形下,很多循環(huán)檢測過程是不必要的,因為約束圖此時并沒有形成循環(huán),過早觸發(fā)循環(huán)檢測將產(chǎn)生大量不必要的時間開銷用于搜索約束圖;另一方面,如果約束求解算法沒有及時觸發(fā)循環(huán)檢測,也就是說,有向邊不斷地被加入到約束圖中,約束圖存在很多未被檢測出來的循環(huán);在這種情形下,結(jié)點的指向信息將沿著這些循環(huán)被冗余傳播。沒有及時觸發(fā)循環(huán)檢測將會影響算法的效率以及會減少循環(huán)檢測和合并本身所帶來的收益。因此,在設(shè)計一個在線循環(huán)檢測技術(shù)來改進基于包含的指針分析算法時,設(shè)計者需要在循環(huán)檢測的開銷和指向信息沿著未被檢測出來的循環(huán)被冗余傳播的開銷之間做出權(quán)衡,從而提高基于包含的指針分析算法的效率和可擴展性。不同的在線循環(huán)檢測技術(shù)代表了對基于包含的指針分析算法的不同改進。
[0009]Hardekopf等人提出了一種有趣的在線循環(huán)檢測技術(shù)LCD ( I az y cycledetect1n),Hardekopf等人基于這種在線循環(huán)檢測技術(shù)實現(xiàn)了一個基于包含的指針分析算法,稱為LCD算法。LCD基于如下策略進行在線循環(huán)檢測:在沿著有向邊進行指向信息傳播之前,LCD首先判斷這條有向邊的源結(jié)點和目的結(jié)點是否具有相同的指向集;如果這兩個結(jié)點具有相同的指向集,LCD認(rèn)為此時約束圖中存在一個循環(huán),并觸發(fā)深度優(yōu)先搜索過程去尋找約束圖中存在的循環(huán)。LCD來源于這樣一個想法:因為在指針分析算法終止時,同一個循環(huán)中的結(jié)點將具有相同的指向集;所以,當(dāng)有向邊的兩個結(jié)點具有相同的指向集時,約束圖中很可能存在循環(huán)。LCD的優(yōu)點在于:與其它在線循環(huán)檢測技術(shù)相比,LCD采用的循環(huán)檢測策略是惰性的,也就是說,只有在約束圖中非常可能存在循環(huán)的情況下,LCD才會觸發(fā)循環(huán)檢測。這種在線循環(huán)檢測策略極大地降低了在線循環(huán)檢測過程本身的開銷,實驗結(jié)果表明,與其它在線循環(huán)檢測技術(shù)相比,LCD的實際效果很好。LCD的缺陷在于:(I)這種在線循環(huán)檢測策略的有效性依賴于這樣一個假設(shè):有向邊的兩個結(jié)點具有相同的指向集通常是因為這兩個結(jié)點在同一個循環(huán)中。如果上述假設(shè)經(jīng)常不成立,LCD的在線循環(huán)檢測策略將導(dǎo)致LCD在約束圖中不存在循環(huán)的情況下去搜索約束圖,這將極大地影響指針分析算法的效率;(2)對SPEC2000測試集,絕大多數(shù)LCD觸發(fā)的深度優(yōu)先搜索過程是沒有發(fā)現(xiàn)循環(huán)的(平均99.7 % ),也就是說,LCD觸發(fā)的深度優(yōu)先搜索過程絕大多數(shù)是多余的,只有極少數(shù)的優(yōu)先搜索過程能夠發(fā)現(xiàn)并合并循環(huán)。因此,LCD的效率可以被進一步地提高,如果可以顯著地減少上述LCD觸發(fā)的多余的深度優(yōu)先搜索過程。由于在線循環(huán)檢測策略能夠顯著地提高基于包含的流不敏感指針分析算法的效率和可擴展性,因此,如何設(shè)計更有效的在線循環(huán)檢測策略(包括如何進一步改進IXD)仍然是個熱點,值得進一步深入研究。

【發(fā)明內(nèi)容】

[0010]技術(shù)問題:本發(fā)明針對基于包含的指針分析算法LCD存在的不足,提供一種能夠在不影響指向信息精度的前提下提高指針分析的效率的基于離線約束圖的指針分析方法ADD。
[0011]技術(shù)方案:本發(fā)明的基于離線約束圖的指針分析方法ADD,包括以下步驟:
[0012](I)根據(jù)輸入約束集,構(gòu)造離線約束圖;
[0013](2)在所述離線約束圖中觸發(fā)一次深度優(yōu)先搜索,得到一個有向無環(huán)圖和多個循環(huán),并記錄循環(huán)信息;
[0014](3)在所述有向無環(huán)圖中,根據(jù)結(jié)點的拓?fù)湫蛴嬎忝總€結(jié)點的祖先集和后裔集;同時在所述有向無環(huán)圖中,利用Lengauer and Tarjan算法計算該圖對應(yīng)的支配樹或支配森林;
[0015](4)在所述支配樹或支配森林中,計算指針等價的頂層變量對信息;<
當(dāng)前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
锡林郭勒盟| 松江区| 华池县| 扬州市| 兰西县| 瓮安县| 綦江县| 壶关县| 会同县| 开阳县| 岳普湖县| 南丰县| 建瓯市| 大庆市| 衡水市| 兰州市| 新兴县| 突泉县| 凯里市| 镇康县| 措勤县| 香河县| 桐乡市| 千阳县| 台东县| 平山县| 诸城市| 郁南县| 山东省| 宁河县| 浮山县| 板桥市| 龙胜| 象山县| 三原县| 邢台县| 阿勒泰市| 澄城县| 电白县| 黄梅县| 台州市|