CN109656568A - 按需的可约程序控制流图图可达性索引方法 - Google Patents

按需的可约程序控制流图图可达性索引方法 Download PDF

Info

Publication number
CN109656568A
CN109656568A CN201811627966.2A CN201811627966A CN109656568A CN 109656568 A CN109656568 A CN 109656568A CN 201811627966 A CN201811627966 A CN 201811627966A CN 109656568 A CN109656568 A CN 109656568A
Authority
CN
China
Prior art keywords
node
level
coding
hlc
depth
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.)
Granted
Application number
CN201811627966.2A
Other languages
English (en)
Other versions
CN109656568B (zh
Inventor
逄龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Heilongjiang Institute Of Industrial Technology
Original Assignee
Heilongjiang Institute Of Industrial Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Heilongjiang Institute Of Industrial Technology filed Critical Heilongjiang Institute Of Industrial Technology
Priority to CN201811627966.2A priority Critical patent/CN109656568B/zh
Publication of CN109656568A publication Critical patent/CN109656568A/zh
Application granted granted Critical
Publication of CN109656568B publication Critical patent/CN109656568B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software 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为节点M的层次线性化编码;m表示节点M所处区域层次深度;分别为HLCM从有向流图根节点到当前节点经历的区域头节点层内顺序编码,i∈[0,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 +
其中,上标“+”表示多个。
CN201811627966.2A 2018-12-28 2018-12-28 按需的可约程序控制流图图可达性索引方法 Active CN109656568B (zh)

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 true CN109656568A (zh) 2019-04-19
CN109656568B 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111752691A (zh) * 2020-06-22 2020-10-09 深圳鲲云信息科技有限公司 Ai计算图的排序方法、装置、设备及存储介质
CN112416761A (zh) * 2020-11-11 2021-02-26 北京京航计算通讯研究所 一种基于广度优先搜索的测试用例生成方法及装置
CN114461198A (zh) * 2021-12-27 2022-05-10 上海交通大学四川研究院 基于可视化低代码的程序生成方法、装置、设备及介质
CN117369795A (zh) * 2023-12-06 2024-01-09 中国科学院自动化研究所 用于无人机决策的行为树模型可达性分析方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103399902A (zh) * 2013-07-23 2013-11-20 东北大学 一种并行环境下的有向图可达性链表生成及查询方法
CN105164638A (zh) * 2013-04-23 2015-12-16 起元科技有限公司 控制由计算系统执行的任务
US20160117155A1 (en) * 2014-10-24 2016-04-28 Thomson Licensing Control flow graph flattening device and method
CN106227573A (zh) * 2016-07-11 2016-12-14 北京信息科技大学 基于控制流图的函数调用路径提取方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105164638A (zh) * 2013-04-23 2015-12-16 起元科技有限公司 控制由计算系统执行的任务
CN103399902A (zh) * 2013-07-23 2013-11-20 东北大学 一种并行环境下的有向图可达性链表生成及查询方法
US20160117155A1 (en) * 2014-10-24 2016-04-28 Thomson Licensing Control flow graph flattening device and method
CN106227573A (zh) * 2016-07-11 2016-12-14 北京信息科技大学 基于控制流图的函数调用路径提取方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
杨克等: ""精准执行可达性分析:理论与应用"", 《软件学报》 *
逄龙等: ""流敏感按需指针别名分析算法"", 《计算机研究与发展》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111752691A (zh) * 2020-06-22 2020-10-09 深圳鲲云信息科技有限公司 Ai计算图的排序方法、装置、设备及存储介质
WO2021259041A1 (zh) * 2020-06-22 2021-12-30 深圳鲲云信息科技有限公司 Ai计算图的排序方法、装置、设备及存储介质
CN111752691B (zh) * 2020-06-22 2023-11-28 深圳鲲云信息科技有限公司 Ai计算图的排序方法、装置、设备及存储介质
CN112416761A (zh) * 2020-11-11 2021-02-26 北京京航计算通讯研究所 一种基于广度优先搜索的测试用例生成方法及装置
CN114461198A (zh) * 2021-12-27 2022-05-10 上海交通大学四川研究院 基于可视化低代码的程序生成方法、装置、设备及介质
CN114461198B (zh) * 2021-12-27 2024-05-28 上海交通大学四川研究院 基于可视化低代码的程序生成方法、装置、设备及介质
CN117369795A (zh) * 2023-12-06 2024-01-09 中国科学院自动化研究所 用于无人机决策的行为树模型可达性分析方法及装置
CN117369795B (zh) * 2023-12-06 2024-03-01 中国科学院自动化研究所 用于无人机决策的行为树模型可达性分析方法及装置

Also Published As

Publication number Publication date
CN109656568B (zh) 2022-04-05

Similar Documents

Publication Publication Date Title
CN109656568A (zh) 按需的可约程序控制流图图可达性索引方法
Yu et al. Graph reachability queries: A survey
CN103823823B (zh) 基于频繁项集挖掘算法的反规范化策略选择方法
CN104462582B (zh) 一种基于结构和内容二级过滤的Web数据相似性检测方法
CN102331966A (zh) 面向路径的软件测试数据进化生成系统
CN106156082A (zh) 一种本体对齐方法及装置
Allahviranloo et al. A new distance measure and ranking method for generalized trapezoidal fuzzy numbers
CN108984830A (zh) 一种基于模糊网络分析的建筑能效评价方法及装置
CN106021480A (zh) 一种基于网格划分的并行空间划分方法及其系统
CN109272182A (zh) 一种基于可变模糊决策理论的水资源效益动态评价方法
Kiran et al. Tree-seed programming for modelling of Turkey electricity energy demand
CN107451210A (zh) 一种基于查询松弛结果增强的图匹配查询方法
CN116244333A (zh) 一种基于代价因子校准的数据库查询性能预测方法及系统
Qiu et al. An approach to filling firms' knowledge gaps based on organisational knowledge structure
CN101930566B (zh) 基于平行系统的水利实验模拟系统及实验模拟方法
CN111327706B (zh) 远程抄表数据处理方法、装置、燃气表系统及燃气云平台
CN113361774A (zh) 一种生态空间集约利用优化方法及系统
Crawford et al. EPiC: Introducing a database of hybrid environmental flow coefficients for construction materials
Hyun-Sik et al. Carbon dioxide emissions of Korea and Japan and its transmission via international trade
CN108108168A (zh) 结合代码演化信息构造代码坏味训练数据集的方法
CN106611187A (zh) 一种多维尺度的异构代价敏感决策树构建方法
Sun et al. Production Scheduling Optimization of Garment Intelligent Manufacturing System Based on Big Data
CN109445843A (zh) 一种基于类多层网络的软件类重要性度量方法
Li et al. Exploration Practice of Data Mastery Traceability Algorithm Based on Knowledge Graph in Data Governance of Electric Power Industry
Whitehead et al. Understanding economic complexity: an application to the MER sector

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