[发明专利]一种基于控制流图的数据流分析方法及装置有效
申请号: | 201910422869.8 | 申请日: | 2019-05-21 |
公开(公告)号: | CN110321458B | 公开(公告)日: | 2021-10-15 |
发明(设计)人: | 唐云善;刘德欣;杨维永;邹旎彬;马森;高庆;张世琨 | 申请(专利权)人: | 国家电网有限公司;北京大学;南瑞集团有限公司;南京南瑞信息通信科技有限公司;国网江苏省电力有限公司 |
主分类号: | G06F16/90 | 分类号: | G06F16/90;G06F16/901 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王庆龙;苗晓静 |
地址: | 100031 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 控制 数据流 分析 方法 装置 | ||
本发明实施例提供一种基于控制流图的数据流分析方法及装置,其中方法包括:对控制流图进行简化处理,简化后的控制流图包括控制流条件中的所有条件变量以及与所述条件变量有关的节点与边;遍历所述简化后的控制流图中的所有控制流路径,以判断所述控制流图是否符合分析条件;若符合分析条件,则以所述简化后的控制流图的每条控制流路径作为状态节点构建状态图;根据所述状态图生成循环摘要。本发明实施例具有准确、快速预测循环执行次数、生成循环摘要的优势。
技术领域
本发明实施例涉及计算机技术领域,更具体地,涉及一种基于控制流图的数据流分析方法及装置。
背景技术
控制流图(Control Flow Graph,CFG)为一有向图,是一个过程或程序的抽象表现,在静态分析过程中被建立并维护为一个抽象数据结构。控制流图表示一个过程内所有基本块的可能执行流向,即一个程序执行过程中可能遍历的所有路径。建立程序控制流图使得程序抽象结构更为规范和可读,为后续进行数据流分析提供了极大的便利。
控制流图可由解析抽象语法树(abstract syntax tree,AST)转化得到,可以看作是比AST更细粒度的程序中间表示。通过以下两步即可完成从AST到CFG的转换:(1)用BasicBlock对象把属于一个基本块的AST节点收集到数组里,并且记录CFG的入边和出边。(2)连接源和目标BasicBlock形成CFG节点之间的边,并且记录下跳转的条件。
数据流分析指在控制流图的基础上通过迭代分析得到感兴趣的数据流结果,包括可达定义分析、活跃变量分析、可用表达式分析等。这些分析是建立在划分好基本块和流图的基础上,通过在控制流图中的迭代、传递和合并完成对流图中不动点状态的计算。现有的数据流区间分析方法处理循环是困难的,一般只能跳过或者模拟一定次数的运算。
发明内容
本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的基于控制流图的数据流分析方法及装置。
第一个方面,本发明实施例提供一种基于控制流图的数据流分析方法,包括:
对控制流图进行简化处理,简化后的控制流图包括控制流条件中的所有条件变量以及与所述条件变量有关的节点与边;
遍历所述简化后的控制流图中的所有控制流路径,以判断所述控制流图是否符合分析条件;
若符合分析条件,则以所述简化后的控制流图的每条控制流路径作为状态节点构建状态图;
根据所述状态图生成循环摘要;
其中,所述分析条件为条件变量在任意一次循环执行过程前后改变量为同一常量;所述状态图中记录两状态节点进行状态转移时的约束条件、触发条件以及条件变量在状态转移后的赋值。
第二个方面,本发明实施例提供一种基于控制流图的数据流分析装置,包括:
简化模块,用于对控制流图进行简化处理,简化后的控制流图包括控制流条件中的所有条件变量以及与所述条件变量有关的节点与边;
分析判断模块,用于遍历所述简化后的控制流图中的所有控制流路径,以判断所述控制流图是否符合分析条件;
状态图构建模块,用于若符合分析条件,则以所述简化后的控制流图的每条控制流路径作为状态节点构建状态图;
摘要生成模块,用于根据所述状态图生成循环摘要;
其中,所述分析条件为条件变量在任意一次循环执行过程前后改变量为同一常量;所述状态图中记录两状态节点进行状态转移时的约束条件、触发条件以及条件变量在状态转移后的赋值。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的方法的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国家电网有限公司;北京大学;南瑞集团有限公司;南京南瑞信息通信科技有限公司;国网江苏省电力有限公司,未经国家电网有限公司;北京大学;南瑞集团有限公司;南京南瑞信息通信科技有限公司;国网江苏省电力有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910422869.8/2.html,转载请声明来源钻瓜专利网。