Effects of Pointers on Data Dependences(2)

2021-09-24 20:06

A ne-grainedclassi cationofdata-dependencesforlanguages,suchasC,thatlettheprogrammerdirectlymanipulatememory.

Empiricalresultsthatillustratethedistributionofdatadependencesintovariouscategories. Anewslicingtechniquethatallowsforbuildingslicesbyconsideringonlyasubsetofdatadependences,basedontheirrelevance.

Acasestudythatshowstheresultsoftheapplicationoftheslicingtechniquetoarealexample.

2Background

Data- owanalysistechniquesrequirethecontrol- owrelationoftheprogrambeinganalyzed.This

Inthissection,wede nedatadependences.Wealsobrie ydescribealiasanalysesandprogramslicing.relationcanberepresentedasacontrol- owgraph.Acontrol- owgraph(CFG)containsnodes,whichrepresentstatements,andedges,whichrepresentpotential owofcontrolamongthestatements.Inaddition,

Data dependences, which relate statements that compute data values to statements that use those values, are useful for automating a variety of program-comprehension-related activities, such as reverse engineering, impact analysis, and debugging. Unfortunat

12

def={x} use={}def={y} use={}def={} use={x,y}

7

def={} use={y}

1 begin M2 read x3 read y

4 if x > y then5 read x6 print x else

8 print y endif9 end M

34

def={x} use={}def={} use={x}

56

8

Figure1:Sampleprogramtoillustratede nitions,uses,anddatadependences(above);control- owgraphfortheprogramannotatedwithdefandusesets(below).

CFGcanalsobebuiltatthebasic-blocklevel;insuchaCFG,eachnoderepresentsasequenceofsingle-entry,single-exit

statements.

1A

Data dependences, which relate statements that compute data values to statements that use those values, are useful for automating a variety of program-comprehension-related activities, such as reverse engineering, impact analysis, and debugging. Unfortunat

1.2.3.4.5.6.7.8.9.10.11.

algorithmComputeReachingDefsinputCFGcontrol- owgraphforprogram

GEN(n)setofde nitionsthataregeneratedatnodenKILL(n)setofde nitionsthatarekilledatnoden

outputIN(n)setofde nitionsthatreachnoden

OUT(n)setofde nitionsthatreachtheendofnoden

declarechange agtoindicateifthevalueofanOUT(n)changedfromapreviousiteration

oldoutvalueofOUT(n)fromthepreviousiteration

beginComputeReachingDefs

foreachnoden∈CFGdoOUT(n)=GEN(n)endforchange=truewhilechangedo

change=falseforeachnoden∈CFGdo

OUT(p),wherepisapredecessorofnintheCFGIN(n)=

oldout=OUT(n)

OUT(n)=GEN(n)∪(IN(n) KILL(n))

ifoldout=OUT(n)thenchange=trueendifendforendwhile

endComputeReachingDefs

Figure2:Thealgorithmforcomputingreachingde nitions.

Data dependences, which relate statements that compute data values to statements that use those values, are useful for automating a variety of program-comprehension-related activities, such as reverse engineering, impact analysis, and debugging. Unfortunat

1.2.3.4.5.6.7.8.9.10.11.

inti;main(){

int*p;

intj,sum1,sum2;sum1=0;sum2=0;readi,j;

while(i<10){

if(j<0){

p=&sum1;}

else{

p=&sum2;}

*p=add(j,*p);readj;}

sum1=add(j,sum1);printsum1,sum2;}

12.13.14.15.16.17.18.19.20.21.

intadd(intval,intsum){

int*q,k;readk;

if(sum>100){

i=9;}

sum=sum+i;if(i<k){

q=&val;}

else{

q=&k;}

sum=sum+*q;i=i+1;returnsum;}

Figure3:ProgramSum.

slicecanalsobecomputedintheforwarddirection:aforwardsliceincludesthosestatementsinPthatarein uenced

bythevaluesofthevariablesinVats.

2A

Data dependences, which relate statements that compute data values to statements that use those values, are useful for automating a variety of program-comprehension-related activities, such as reverse engineering, impact analysis, and debugging. Unfortunat

Figure4:Control- owgraphsforprogramSum(Figure2)withde niteandpossiblede nitionandusesetsateachnode.

Data dependences, which relate statements that compute data values to statements that use those values, are useful for automating a variety of program-comprehension-related activities, such as reverse engineering, impact analysis, and debugging. Unfortunat

Table1:Def-usetypesbasedonthetypesofde nitionsanduses.

De nitede nition

def-usetype3def-usetype4

Table2:Classi cationofΠ—pathsfromde nitionstouses—afterincorporatingtheoccurrencesofde nitekillingpaths.

BasetypeofΠallde nitedef-clear

π∈Π:πisde nitekilling

somede nitedef-clear

π∈Π:πisde nitekilling

allpossibledef-clear

π∈Π:πisde nitekilling

PRD-KDPRD-KExtendedtypeofΠ

DRD-K

Data dependences, which relate statements that compute data values to statements that use those values, are useful for automating a variety of program-comprehension-related activities, such as reverse engineering, impact analysis, and debugging. Unfortunat

Table3:Classi cationofdef-useassociations:24typesthatresultfromacrossproductofdef-usetypes(Table1)andthesecondalternativeforpathclassi cation(column3ofTable2).

Effects of Pointers on Data Dependences(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:1游记-2011厦门的美食美景-吃货的最爱

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: