999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

上下文敏感的橫向傳播方法?

2021-06-29 08:41:42鄧朝日劉鵬輝顧夢園
計算機與數字工程 2021年6期
關鍵詞:效率分析

鄧朝日 劉鵬輝 顧夢園

(中國電子科技集團公司第三十二研究所 上海 201808)

1 引言

指針分析是最基礎的靜態分析,解答了一個指針可能指向哪個對象的問題。上下文無關指針分析方法能夠區分不同調用點的相同函數,合并所有調用。基于包含的指針分析方法[1]是其中一類重要的分析方法。二元決策圖[2]在處理高度上下文敏感的指針分析時體現出較好的性能,但沒有執行預定義約束,所以在進一步可擴展性分析[3~4]中沒有體現出優越性。而Woongsik Choi等[5]發表的在調用圖之上進行的上下文敏感指針分析和環消除算法(環消除算法)除了在時間分析效率上仍有改進空間之外,能夠兼顧高上下文敏感性和高可擴展性。慶幸的是近二十年來出現很多基于包含的指針分析改進算法[6],其中Fahndrich[7]、Pearce[8~9]、Harderkopf[10]、Pereira[11]陸續發表了不同的基于約束圖進行的環消除算法。尤其Pereira[11]的橫向傳播(Wave Propagation,WP)最優秀,能大大提高分析的時間和空間效率。因而,本文將直觀準確地表述上下文敏感橫向算法并提出更有效實現環消除算法上下文敏感的WP算法。最后在CIL[12]下用OCaml語言實現分析,并對代碼行范圍20.000~290.000的6個程序進行分析,分析結果表明,上下文敏感的橫向傳播算法時間效率優于環消除算法。

2 約束圖及約束圖初始化

2.1 新的約束圖

一方面,所有結點都有屬性ct和cs:其中ct的值為上下文集,表示在該集下該變量被另一變量所指向,以上變量均為上下文無關;cs值為false時,結點所對應的變量上下文無關,相反上下文敏感。例a? {ρb},若b具備上下文無關性,a具備上下文敏感性,則圖中有結點a(cs為true,ct為空)和b(false和ρ分別是cs和ct的值),既在上下文ρ下,b被a所指向。白色圓圈代表該變量上下文敏感,黑色圓圈代表該變量上下文無關。

另一方面,邊分為三種類型:普通邊(實線箭頭);返回邊(調用返回用虛線箭頭表示),表示接收返回變量值的變量的邊被返回變量所指向;調用邊(函數被調用用實線箭頭表示),即形參的邊的邊被實參所指向。邊E(v,w,γ,ρ)上的標識為ρ(ρ為?時邊上無標識)。v、w分別為邊頭和尾結點;γ為類別:普通邊值為1,調用邊值為2、返回邊值為3;若變量v要被變量w包含(在ρ下),則1為γ的值,且上下文集為ρ;若該邊為函數調用(在點m處),則2為γ的值,m為ρ的值,其中實參為v、形參為w;若調用返回為該邊類型,則3為γ的值,m為ρ的值,其中返回變量為v、獲取其值的變量為w。如(b,a,1,ρ)為普通邊,對應于a?ρb;(b,f。,2,ι)為調用邊,(f·,a,3,ι)為返回邊,均對應于a? (fb)1。

2.2 初始化約束圖

上下文敏感是指,a既不是被取地址的局部變量,或全局變量,也不是堆變量。上下文無關是指a是被取地址的局部變量、或全局變量,再或者堆變量。假設函數的指針以及函數的調用圖[5]已經被上下文無關指針分析求出,變量無重名。

?即為初始的約束集中值的上下文標識,也是初始的約束集中變量約束的上下文標識,ρι=(ι,?,⊥)是一個上下文,其對應每個調用點ι。ρ1=(1,?,⊥)是點1的上下文、ρ2=(2,?,⊥)是點2的上下文。y,x,q,p均為上下文無關,w,v,d,s,c,a,e,b,t,均為上下文敏感。

圖1(a)用相同名字的結點代替集中的所有變量,所有結點的cs屬性被初始化;值約束將繼而被設置,其右側變量的屬性將被設置相應的值,例如?為b中ct的值,該結果是由a??b導致的;后為每個變量約束添一邊到圖,此邊的屬性將被初始化,例如(e,c,1,?)的增加是由c??e所導致;函數調用約束繼而被增加,例如,邊(t,v,3,1)、(a,s,2,1)和(b,t,2,1)的增加是由v?(fa,b)1所導致。

當?為右下標為x的ct屬性值時(例如指向集中的xρ),在指向集中x是結點x的表示方式。

3 橫向傳播(具備上下文敏感性)

文中未說明符號同文獻[5]、文獻[11]。

3.1 新的橫向傳播方法框架

新WP方法如Algorithm 1,其為條件始終為真的while循環:輸入為一原始約束圖G=(V,E),輸出為圖中各結點到其指向集的映射;先調用Algo?rithm2在圖中探索并合并環;再調用Algorithm4進行差異傳播[6];后調用Algorithm5處理復雜約束以添加新邊,如無新邊添加終止循環。

Algorithm1

1:while true

2:{Algorithm 2;Algorithm4;Algorithm5

3:if no edge has been added

4:break}

3.2 環探測和消除

Algorithm3結合文獻[5]中的探測環方法:探測只由ρ值為?的普通邊組成的環(第2行條件)。

Algorithm2 Input:G=(V,E)

1:I←0

2:for all v such that D(v)≠⊥

3:Algorithm 3

4:for all v such that R(v)≠v

5:unify(v,R(v))

如圖1(b),探測出由(e,c,1,?)(c,e,1,?)組成的環,合并c,e為c,則c,e指向集為q?。

unify合并環的觸發條件:環內每個結點的cs賦為false的前提是,環內有上下文無關的節點數量為一個及其以上;每個結點源的指向集共同組成環內節點的指向集;選一結點為代表。

Algorithm3.Input:a node v。

3.3 差異傳播

Algorithm4(差異傳播)結合規則[5]trans1、trans2、param1、param2、ret1、ret2、ret3,其對不同邊及變量的cs屬性等其他條件而采用對應操作。如Algorithm4第8~13行處理普通邊,第6~9行處理規則trans1。

圖1(b)經差異傳播后如圖1(c)。因(a,s,2,1)為調用邊且s的cs值為true,則其上差異傳播由Al?gorithm4第17~19行處理(param1),后{pρ1}為s的指向集;類似的,通過在(d,t,2,2)、(c,s,2,2)、(b,t,2,1)上進行差異化傳播,{xρ1,yρ2}和{pρ1,qρ2}分別是t和s的指向集。因t的值等于true,同樣v的cs值也等于true且(t,v,3,1)是返回邊,又由于x.ct|1=ρ1|1=(1,?,⊥)|1=?(Restriction操作[5]),則據Algo?rithm4第27~29行處理(ret1),后v指向集為{x?};在(t,w,3,2)上差異傳播后,w指向集為{y?}。

Algorithm4第35~38行:在w、v均不上下文敏感的情況下,trans2、ret3呈現出:要v指向w,則需要置ct等于?;在w是上下敏感的且v是上下文無關的情況下,v可直接指向w指向的變量。

3.4 復雜約束的處理

算法5(即Algorithm5)結合ret1~3[5]和load1~2,用來處理復雜約束(除函數調用外)。

如處理復雜約束*s?t后,圖1(c)變為圖1(d)。{pρ1,qρ2}為s的指向集,如圖1(c)所示。例如,因為pρ1中t的cs值是true,且圖1(c)中無(t,p,1,ρ 1),所以按照算法5(既Algorithm5)第6~8行處理,添加該邊并在此邊上執行一次差異傳播,如Algo?rithm5第15行,后p的指向集為{x?};

圖1 示例源程序的分析示例

因處理復雜約束*s?t后,再執行一次Algo?rithm 1while循環后,已無新邊可添加,分析結束。

4 實驗

因新算法用WP方法[11,15]改進環消除算法[5],WP方法不影響被改進方法的精度,其目的是提高分析的效率。因此新算法的時效數據是實驗要重點進行驗證的指標項。

為了驗證新算法的時間和環消除效率,測試方法與文獻[4]保持一致。其中實驗環境如下:主機內存12GB;CPU為Intel Core i7,主頻為3.91GHz;實驗代碼用OCaml語言和BuBDDy[14]的hash-consing實現,并在CIL[12]下分析,實驗數據為為先后6次分別對sqlite、python、tar、named、povray、make等程序開展的分析結果數據進行平均計算,測試結果如表2給出了6次分析的平均值及其波動范圍。

其中,表1各列含義如下。

第3列為為程序中所有可能上下文;

第4列為上下文敏感變量數量;

第5列為上下文無關變量數量;

第6列代碼行數(預處理后)。

另外,通過依次對同一個源程序進行環消除算法和新算法分析,并對比各自所消耗的時間記錄于表2。經過分析,新算法的時間效率相比于環消除算法有所提升。

表1 實驗源程序列表

表2 分析時間

5 結語

本文通過結合WP方法和環消除算法提出一新算法。測試說句體現環消除效率以及時間效率被新算法改善,同時能夠保證換消除技術的精確性。未來將致力于在專業領域中實踐該新算法。

猜你喜歡
效率分析
隱蔽失效適航要求符合性驗證分析
提升朗讀教學效率的幾點思考
甘肅教育(2020年14期)2020-09-11 07:57:42
注意實驗拓展,提高復習效率
電力系統不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
效率的價值
商周刊(2017年9期)2017-08-22 02:57:49
電力系統及其自動化發展趨勢分析
跟蹤導練(一)2
“錢”、“事”脫節效率低
中國衛生(2014年11期)2014-11-12 13:11:32
中西醫結合治療抑郁癥100例分析
在線教育與MOOC的比較分析
主站蜘蛛池模板: 无码高潮喷水在线观看| 欧美一级专区免费大片| 国产欧美又粗又猛又爽老| 成人日韩精品| 精品视频一区在线观看| 国产对白刺激真实精品91| 四虎永久在线精品国产免费| 国产亚洲欧美在线人成aaaa| 久久99蜜桃精品久久久久小说| a色毛片免费视频| 成人福利在线免费观看| 久久国产精品影院| 亚洲高清无码久久久| 成年A级毛片| 国产一区二区三区免费| 午夜日韩久久影院| 精品国产一区91在线| 国产三级毛片| 欧美日韩一区二区三区在线视频| 99青青青精品视频在线| 国产精品无码AV中文| 久久国产亚洲偷自| 亚洲综合色区在线播放2019| 国产午夜一级淫片| 国产成人区在线观看视频| 黄色污网站在线观看| 性69交片免费看| 深爱婷婷激情网| 在线欧美日韩| 欧美亚洲一区二区三区导航| 久久久久人妻一区精品色奶水 | 国产美女在线观看| 国内a级毛片| 国产精品视频第一专区| 又爽又大又光又色的午夜视频| 美女国产在线| 欧美三级日韩三级| 欧美激情成人网| 99视频在线免费| 九九视频免费在线观看| 亚洲看片网| 视频国产精品丝袜第一页| 亚洲视频色图| 久久婷婷五月综合色一区二区| 国产高清精品在线91| 国产福利拍拍拍| 久久综合结合久久狠狠狠97色| 成人免费一区二区三区| 91探花在线观看国产最新| 成色7777精品在线| 永久天堂网Av| 精品国产成人国产在线| 成人精品视频一区二区在线| 日本色综合网| 亚洲精品国产日韩无码AV永久免费网 | 久久国产精品77777| 久久天天躁狠狠躁夜夜躁| 国产精品视频免费网站| 人与鲁专区| 91视频青青草| 免费A∨中文乱码专区| 91久久青青草原精品国产| 伊人久综合| 九九香蕉视频| 欧美中文字幕第一页线路一| 无码aⅴ精品一区二区三区| 欧美人与牲动交a欧美精品 | 国产精品99在线观看| 久热re国产手机在线观看| 亚洲中文字幕av无码区| 国内丰满少妇猛烈精品播| 国产亚洲精品自在线| 在线观看亚洲国产| www成人国产在线观看网站| 亚洲AⅤ波多系列中文字幕| 成年人国产视频| 亚洲精品国产乱码不卡| 国产欧美日韩va另类在线播放| 亚洲午夜国产精品无卡| 国产第一页第二页| 国产黑丝视频在线观看| 亚洲一级毛片在线观播放|