CN109656568B - 按需的可约程序控制流图图可达性索引方法 - Google Patents
按需的可约程序控制流图图可达性索引方法 Download PDFInfo
- Publication number
- CN109656568B CN109656568B CN201811627966.2A CN201811627966A CN109656568B CN 109656568 B CN109656568 B CN 109656568B CN 201811627966 A CN201811627966 A CN 201811627966A CN 109656568 B CN109656568 B CN 109656568B
- Authority
- CN
- China
- Prior art keywords
- node
- depth
- coding
- control flow
- hlc
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供按需的可约程序控制流图图可达性索引方法,属于计算机程序分析技术领域。本发明利用深度优先策略遍历程序控制流图中所有节点;以区域层次深度作为度量权重,通过加权工作列表存储待编码节点;该加权工作列表是由堆数据结构实现,插入列表的节点根据区域层次深度排序,保证顶端节点的层次最深,弹出列表的节点是按区域层次深度优先策略排序的节点。本发明解决了现有控制流图图可达性索引技术时空开销较大的问题。本发明可用于按需程序分析。
Description
技术领域
本发明涉及图可达性索引方法,属于计算机程序分析技术领域。
背景技术
按需程序分析是在用户给定分析目标后,只计算分析与目标相关信息,而不计算全局信息的一种分析策略。如何快速确定程序控制流图(Control Flow Graph,CFG)中与分析目标相关联范围的图可达性查询是决定按需分析效率的关键。但是,当前图可达性算法主要针对稀疏有向无环图,缺少对程序控制流图中非生成树边和循环体内有向环子图的优化与处理,处理效率低。
按需的程序分析对可达性查询的预处理时间和查询时间都比较敏感。双标签法具有常数时间复杂度的可达性查询特点,可以很好的满足程序按需分析的要求。但是,由于命令式语言结构化编程对应的控制流图是典型的稀疏图,而结构化编程中的循环结构和分支结构都包含非树边,同时双标签法建立标签的时空复杂度受非树边的影响较大,因而,双标签法在构建可达性索引的时空效率受到控制流图中常见的分支、循环结构的限制。另外双标签法研究对象是一般有向图,缺少针对程序流程图特点的处理,所以时空开销较大。
发明内容
本发明为解决现有控制流图图可达性索引技术时空开销较大的问题,提供了按需的可约程序控制流图图可达性索引方法。
本发明所述按需的可约程序控制流图图可达性索引方法,通过以下技术方案实现:
利用深度优先策略遍历程序控制流图中所有节点;以区域层次深度作为度量权重,通过加权工作列表存储待编码节点;该加权工作列表是由堆数据结构实现,插入列表的节点根据区域层次深度排序,保证顶端节点的层次最深,弹出列表的节点是按区域层次深度优先策略排序的节点;具体为:
步骤一、初始化工作列表;
步骤二、根据节点区域层次深度排序,遍历工作列表进行编码;返回当前工作列表内区域层次深度最大的节点进行编码处理;
步骤三、根据步骤二中返回的节点出度继续处理:
当只有一个后续节点且未进行编码时,在同层内延续编码,并以当前区域层次深度作为权重加入到工作列表中;
当有多个后续节点时,先检验该节点有没有编码,然后根据区域层次深度差异进行编码:若后续节点所处区域层次深度小于当前区域层次深度,则该后续节点是当前区域的出口节点,该出口节点编码同层延续其支配节点编码;若后续节点区域层次深度大于或等于当前区域层次深度,该后续节点是当前节点的分支节点,其编码追加层次获得。
本发明最为突出的特点和显著的有益效果是:
本发明所涉及的按需的可约程序控制流图图可达性索引方法,利用控制流图中区域结构所隐含的层次顺序关系,建立表达多重从属关系的可达性索引,将非树边和循环体的影响限制在临近区域内,不仅避免计算有向图非生成树边的可达性传递闭包,而且整合了程序控制流图中有向环子图的编码与图可达性判断。本发明在保证查询复杂度增加可接受复杂度的条件下,着重处理非树边作用下的可达性信息存储方式以提升整体可达性信息索引和查询效率,时空复杂度与控制流图的规模呈线性关系,相比现有方法,平均时空开销降低约20%。
附图说明
图1为实施例中测试程序的控制流图;
图2为实施例中测试程序对应的支配树结构;
图3为实施例中测试程序对应的区域结构图;
图4为实施例中测试程序对应的区域结构树;
图5为实施例中测试程序的控制流图层次线性化编码图。
具体实施方式
具体实施方式一:本实施方式给出的按需的可约程序控制流图图可达性索引方法,具体包括以下步骤:
利用深度优先策略遍历程序控制流图中所有节点;以区域层次深度作为度量权重,通过加权工作列表(Worklist)存储待编码节点;该加权工作列表是由堆数据结构实现,插入列表的节点根据区域层次深度排序(如下文层次线性化编码算法代码的第②行、第行、第行),保证顶端节点的层次最深,弹出列表的节点是按区域层次深度优先策略排序的节点(如第④行);具体为:
步骤一、初始化工作列表,如第①~②行;
步骤二、然后根据节点区域层次深度排序,遍历工作列表进行编码;第④行返回当前工作列表内区域层次深度最大的节点进行编码处理;
步骤三、根据步骤二中返回的节点出度继续处理:
当有多个后续节点时,先检验该节点有没有编码,如第行,然后根据区域层次深度差异进行编码:若后续节点所处区域层次深度小于当前区域层次深度,则该后续节点是当前区域的出口节点,该出口节点编码同层延续其支配节点编码,如第行;若后续节点区域层次深度大于或等于当前区域层次深度,该后续节点是当前节点的分支节点,根据编码结构可知,后续节点其编码追加层次获得,如第行。
以下是层次线性化编码(hierarchical linearization coding,HLC)算法(输入:入口节点entry,区域信息region,支配树信息DT;
输出:控制流图中各节点的HLC编码):
具体实施方式二:本实施方式与具体实施方式一不同的是,所述进行编码过程对应的层次线性化编码域具体为:
HLCDomain={G,DT,RT,ST,HLC,≤R}
该域是六元组。其中,HLCDomain表示层次线性化编码域,其包括层次线性化编码结构、其上的从属关系以及构造该结构所依赖的信息;G是程序控制流图,是有向图,G=(V,E);|V|=n,n为节点;|E|=m,m表示节点所处区域层次深度(边的数目);DT是程序控制流图对应的支配树;RT是程序控制流图对应的区域结构树,ST=(V,EST)是根据区域层次深度优先遍历G产生的生成树,对应的非树边ENST=E-EST;HLC是根据生成树设置的节点编码;≤R是定义在该编码上的偏序关系,以反映节点在生成树上的从属关系。
层次线性化编码利用了区域结构所隐含的层次顺序关系,将回边和交叉边的局部层次特点蕴含其中,统一表达控制流图的顺序关系和非树边作用下的层次关系。层次关系分为层次内顺序关系和层次间从属关系。根据区域结构,按区域层次深度优先遍历程序控制流图,产生对应的生成树ST。在遍历过程中,根据编码结构和编码规则,为控制流节点赋予层次线性化编码。
其他步骤及参数与具体实施方式一相同。
具体实施方式三:本实施方式与具体实施方式二不同的是,所述层次线性化编码结构具体为:
HLCM=(HLCparent,LCM)=(LC0 M,LC1 M,…,LCm-1 M,LCM)=(LC(0,m-1) M,LCM)=LC(0,m) M
其中,HLCM为节点M的层次线性化编码;m表示节点M所处区域层次深度;LC0 M,LC1 M,…,LCi M分别为HLCM从有向流图根节点到当前节点经历的区域头节点层内顺序编码,i∈[0,m];LCM=LCm M是节点M所在最底层区域内顺序编码;HLCparent为父节点的层次线性化编码。
其他步骤及参数与具体实施方式一或二相同。
具体实施方式四:本实施方式与具体实施方式三不同的是,所述节点M所在最底层区域内顺序编码的构成为:
LCM=BranchNumM,×SeqNumM
其中,BranchNumM表示节点M所在分支序号,SeqNumM表示节点M所在分支内序号。
其他步骤及参数与具体实施方式一、二或三相同。
具体实施方式五:本实施方式与具体实施方式三或四不同的是,所述HLCparent具体为:
HLCparent:=Φ|HierarchicalLinearizationCoding
其中,“:=”表示赋值;“|”表示或者;Φ为终结符号,表示为空;例如,根节点的父节点编码HLCparent为空。
层次线性化编码由递归方式定义,具体由两部分组成:父层区域入口节点的层次线性化编码HierarchicalLinearizationCoding和当前区域内顺序编码LCM构成,父层区域入口节点的层次线性化编码HierarchicalLinearizationCoding具体为:
HierachicalLinearizationCoding:=HLCparent×LCM
HierachicalLinearizationCoding∈LCM +
其中,上标“+”表示多个。
其他步骤及参数与具体实施方式一、二、三或四相同。
实施例
采用以下实施例验证本发明的有益效果:
层次线性化编码方法主要针对程序流程图中语句的图可达性问题,因此,采用面向共享内存模型的PARSEC程序测试集合中若干程序和开源程序(Bind-9.0.6-P1,MySQL-5.0.26)的控制流图作为测试对象,测试程序包括:Named、checkzone、checkconf、mysqld、x264。实验过程是:首先,采用GCC-LLVM编译该测试集生成LLVM字节码;然后通过LLVM中优化分析程序获取测试程序的控制流图。测试环境为IntelB980型号CPU(2.4GHz主频)、2GB内存和Ubuntu 12.04(64b)操作系统,
首先在获取的控制流图上应用本发明提出的层次线性化编码方法:
如图1是实例程序(Named)的控制流图,图2是对应的支配树结构,图3是对应的区域结构图,其中Region-1至Region-5分别表示不同区域,图4是对应的区域结构树,图5中,入口节点A无非回边前驱,所以LCparent为空,编码为第0分支第1序号节点,即LCA=01,HLCA=HLCparent,LCA=LCA=(0,1)。节点B有唯一非回边前驱A;且A为非分支节点,所以同层直接延续节点A编码,即第0分支第2序号节点;同理,HLCB=(0,2);节点C唯一非回边前驱B为分支节点,为了分别排序各分支顺序,需要扩张节点C编码,所以HLCparent=HLCB,作为节点B的第0分支第1节点,LCC=(0,1);HLCC=HLCB;LCC=0201;节点D与节点C相似,作为分支节点C的第0分支第1节点需要扩:HLCparent=HLCC,HLCD=HLCC,LCD=(0,2)(0,1)(0,1);
节点E所处区域层次深度低于父节点,即为汇聚节点,应该约简父节点D编码而延续临近节点C的分支继续编码。节点G与节点D都是节点E的父节点,但由于节点D是节点E的直接支配节点,所以与节点G不同,具体对应的控制结构为IF-THEN结构。节点E与临近分支节点D属于同一层次,所以其HLCparent=HLCc;作为节点C第0分支第2节点,LCE=(0,2);HLCE=(0,2)(0,1)(0,2);节点F与唯一非回边前驱非分直接点E同区域,因此同层直接延续结E编码,HLCF=(0,2)(0,1)(0,3);节点H是区域入口节点,与节点C、节点D相同;节点M、节点I和节点K属同汇聚节点。
然后在获取的控制流图上应用重新实现的双标签法。本发明方法(HLC)与双标签法(DL)运行的时空开销运行结果如表1所示:
表1运行结果表
构建时空复杂度与控制流图的规模关系,本发明方法(HLC)与双标签法(DL)运行的时空复杂度对比如下表2:
表2时空复杂度对比
由表1、表2可以看出,本发明方法能够提升整体可达性信息索引和查询效率,时空复杂度与控制流图的规模呈线性关系;相比双标签法,平均时空开销降低约20%。
本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (5)
1.按需的可约程序控制流图图可达性索引方法,其特征在于,所述方法具体包括以下步骤:
利用深度优先策略遍历程序控制流图中所有节点;以区域层次深度作为度量权重,通过加权工作列表存储待编码节点;该加权工作列表是由堆数据结构实现,插入列表的节点根据区域层次深度排序,保证顶端节点的层次最深,弹出列表的节点是按区域层次深度优先策略排序的节点;具体为:
步骤一、初始化工作列表;
步骤二、根据节点区域层次深度排序,遍历工作列表进行编码;返回当前工作列表内区域层次深度最大的节点进行编码处理;
步骤三、根据步骤二中返回的节点出度继续处理:
当只有一个后续节点且未进行编码时,在同层内延续编码,并以当前区域层次深度作为权重加入到工作列表中;
当有多个后续节点时,先检验该节点有没有编码,然后根据区域层次深度差异进行编码:若后续节点所处区域层次深度小于当前区域层次深度,则该后续节点是当前区域的出口节点,该出口节点编码同层延续其支配节点编码;若后续节点区域层次深度大于或等于当前区域层次深度,该后续节点是当前节点的分支节点,该后续节点编码追加层次获得。
2.根据权利要求1所述按需的可约程序控制流图图可达性索引方法,其特征在于,所述进行编码过程对应的层次线性化编码域具体为:
HLCDomain={G,DT,RT,ST,HLC,≤R}
其中,HLCDomain表示层次线性化编码域,其包括层次线性化编码结构、其上的从属关系以及构造该结构所依赖的信息;G是程序控制流图,是有向图,G=(V,E);|V|=n,n为节点;|E|=m,m表示节点所处区域层次深度;DT是程序控制流图对应的支配树;RT是程序控制流图对应的区域结构树,ST=(V,EST)是根据区域层次深度优先遍历G产生的生成树,对应的非树边ENST=E-EST;HLC是根据生成树设置的节点编码;≤R是定义在该编码上的偏序关系。
3.根据权利要求2所述按需的可约程序控制流图图可达性索引方法,其特征在于,所述层次线性化编码结构具体为:
HLCM=(HLCparent,LCM)=(LC0 M,LC1 M,…,LCm-1 M,LCM)=(LC(0,m-1) M,LCM)=LC(0,m) M
其中,HLCM为节点M的层次线性化编码;m表示节点M所处区域层次深度;LC0 M,LC1 M,…,LCi M分别为HLCM从有向流图根节点到当前节点经历的区域头节点层内顺序编码,i∈[0,m];LCM=LCm M是节点M所在最底层区域内顺序编码;HLCparent为父节点的层次线性化编码。
4.根据权利要求3所述按需的可约程序控制流图图可达性索引方法,其特征在于,所述节点M所在最底层区域内顺序编码的构成为:
LCM=BranchNumM×SeqNumM
其中,BranchNumM表示节点M所在分支序号,SeqNumM表示节点M所在分支内序号。
5.根据权利要求3或4所述按需的可约程序控制流图图可达性索引方法,其特征在于,所述HLCparent具体为:
HLCparent:=Φ|HierarchicalLinearizationCoding
其中,“:=”表示赋值;Φ为终结符号,表示为空;父层区域入口节点的层次线性化编码HierarchicalLinearizationCoding为:
HierachicalLinearizationCoding:=HLCparent×LCM
HierachicalLinearizationCoding∈LCM +
其中,上标“+”表示多个。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811627966.2A CN109656568B (zh) | 2018-12-28 | 2018-12-28 | 按需的可约程序控制流图图可达性索引方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811627966.2A CN109656568B (zh) | 2018-12-28 | 2018-12-28 | 按需的可约程序控制流图图可达性索引方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109656568A CN109656568A (zh) | 2019-04-19 |
CN109656568B true CN109656568B (zh) | 2022-04-05 |
Family
ID=66117722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811627966.2A Active CN109656568B (zh) | 2018-12-28 | 2018-12-28 | 按需的可约程序控制流图图可达性索引方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109656568B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111752691B (zh) * | 2020-06-22 | 2023-11-28 | 深圳鲲云信息科技有限公司 | Ai计算图的排序方法、装置、设备及存储介质 |
CN112416761B (zh) * | 2020-11-11 | 2023-07-07 | 北京京航计算通讯研究所 | 一种基于广度优先搜索的测试用例生成方法及装置 |
CN114461198B (zh) * | 2021-12-27 | 2024-05-28 | 上海交通大学四川研究院 | 基于可视化低代码的程序生成方法、装置、设备及介质 |
CN117369795B (zh) * | 2023-12-06 | 2024-03-01 | 中国科学院自动化研究所 | 用于无人机决策的行为树模型可达性分析方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103399902A (zh) * | 2013-07-23 | 2013-11-20 | 东北大学 | 一种并行环境下的有向图可达性链表生成及查询方法 |
CN105164638A (zh) * | 2013-04-23 | 2015-12-16 | 起元科技有限公司 | 控制由计算系统执行的任务 |
CN106227573A (zh) * | 2016-07-11 | 2016-12-14 | 北京信息科技大学 | 基于控制流图的函数调用路径提取方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3012762A1 (en) * | 2014-10-24 | 2016-04-27 | Thomson Licensing | Control flow graph flattening device and method |
-
2018
- 2018-12-28 CN CN201811627966.2A patent/CN109656568B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105164638A (zh) * | 2013-04-23 | 2015-12-16 | 起元科技有限公司 | 控制由计算系统执行的任务 |
CN103399902A (zh) * | 2013-07-23 | 2013-11-20 | 东北大学 | 一种并行环境下的有向图可达性链表生成及查询方法 |
CN106227573A (zh) * | 2016-07-11 | 2016-12-14 | 北京信息科技大学 | 基于控制流图的函数调用路径提取方法 |
Non-Patent Citations (2)
Title |
---|
"流敏感按需指针别名分析算法";逄龙等;《计算机研究与发展》;20150715;第52卷(第07期);第1620-1630页 * |
"精准执行可达性分析:理论与应用";杨克等;《软件学报》;20171009;第29卷(第01期);第1-22页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109656568A (zh) | 2019-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109656568B (zh) | 按需的可约程序控制流图图可达性索引方法 | |
Zhang et al. | Treepi: A novel graph indexing method | |
EP3572952A1 (en) | Unified optimization of iterative analytical query processing | |
CN109033303B (zh) | 一种基于约简锚点的大规模知识图谱融合方法 | |
Chen et al. | Optimizing statistical information extraction programs over evolving text | |
Wang et al. | Skyline preference query based on massive and incomplete dataset | |
Theodoridis et al. | Range queries involving spatial relations: A performance analysis | |
US20130060753A1 (en) | Optimization Method And Apparatus | |
Yuan et al. | Iterative graph feature mining for graph indexing | |
CN109326328A (zh) | 一种基于谱系聚类的古生物谱系演化分析方法 | |
Singh et al. | A Literature survey based on DBSCAN algorithms | |
Körber et al. | Index-accelerated pattern matching in event stores | |
CN113010525B (zh) | 一种基于pid的海洋时空大数据并行knn查询处理方法 | |
CN110097934A (zh) | 一种心电本体概念的属性特征约简方法 | |
Mendes et al. | FGNG: A fast multi-dimensional growing neural gas implementation | |
CN105354243B (zh) | 基于归并聚类的并行化频繁概率子图搜索方法 | |
Fouad et al. | Correlated high utility itemset mining based on item decomposition | |
CN116049510A (zh) | 企业最终股东的分析方法、系统、设备及介质 | |
Singh et al. | A review and analysis on knowledge discovery and data mining techniques | |
US11386155B2 (en) | Filter evaluation in a database system | |
Chen et al. | Detecting trajectory outliers based on spark | |
CN114637752A (zh) | 一种连接查询语句处理方法、装置、设备及存储介质 | |
CN107894992A (zh) | 一种gis点缓冲区分析方法及系统 | |
Aliperti et al. | A fuzzy density-based clustering algorithm for streaming data | |
Pai et al. | Workload-aware and Learned Z-Indexes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |