[发明专利]循环语句中变量抽象取值的迭代求精方法无效
申请号: | 201110400173.9 | 申请日: | 2011-12-05 |
公开(公告)号: | CN102495800A | 公开(公告)日: | 2012-06-13 |
发明(设计)人: | 金大海;宫云战;赵云山;肖庆;王思岚 | 申请(专利权)人: | 北京邮电大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京派特恩知识产权代理事务所(普通合伙) 11270 | 代理人: | 张颖玲;王黎延 |
地址: | 100876 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 循环 语句 变量 抽象 迭代求精 方法 | ||
1.一种循环语句中变量抽象取值的迭代求精方法,其特征在于,所述方法包括:
根据控制流图CFG进行数据流迭代,得到上次迭代区间LastDomain;
根据循环头节点LoopHead的循环条件进行循环语句块的数据流迭代,得到本次迭代区间ThisDomain;
将LastDomain和ThisDomain进行加宽Widening操作。
2.根据权利要求1所述的方法,其特征在于,所述根据CFG进行数据流迭代,得到上次迭代区间LastDomain为:
根据CFG进行数据流迭代,得到LoopHead的循环语句的直接前驱PreHeadNode的区间和循环回边性质的前驱PostHeadNode的区间,将所述PreHeadNode的区间和PostHeadNode的区间取并集得到上次迭代区间LastDomain。
3.根据权利要求2所述的方法,其特征在于,所述根据LoopHead的循环条件进行循环语句块的数据流迭代,得到本次迭代区间ThisDomain为,
根据LoopHead的循环条件进行循环语句块的数据流迭代,生成新PostHeadNode的区间,将上次迭代得到的PreHeadNode的区间与新PostHeadNode区间取并集,得到本次迭代区间ThisDomain。
4.根据权利要求1所述的方法,其特征在于,所述将LastDomain和ThisDomain进行Widening操作之后,该方法还包括:
判定与LastDomain相比Widening后的区间发生改变时,将Widening后的区间作为新的LastDomain;
重复根据LoopHead的循环条件进行循环语句块的数据流迭代,得到本次迭代区间ThisDomain,将LastDomain和ThisDomain进行Widening操作的步骤。
5.根据权利要求1所述的方法,其特征在于,所述将LastDomain和ThisDomain进行Widening操作之后,该方法还包括:
判定与LastDomain相比Widening后的区间没有发生改变,将Widening后的区间记为中间迭代区间InterDomain,作为收窄Narrowing操作的输入;
按循环条件进行循环语句块的数据流迭代,得到本次迭代区间ThisDomain;
判断与InterDomain相比ThisDomain是否发生改变,如果发生变化,将InterDomain与ThisDomain执行Narrowing操作;如果没有发生变化,数据流迭代终止。
6.根据权利要求5所述的方法,其特征在于,所述按循环条件进行循环语句块的数据流迭代,得到本次迭代区间ThisDomain为:
按循环条件进行循环语句块的数据流迭代,得到PreHeadNode的区间与PostHeadNode的区间,将所述PreHeadNode的区间和PostHeadNode的区间取并集得到本次迭代区间ThisDomain。
7.根据权利要求5所述的方法,其特征在于,所述将InterDomain与ThisDomain执行Narrowing操作之后,该方法还包括:
将Narrowing后的区间记为新的InterDomain;
重复按循环条件进行循环语句块的数据流迭代,得到本次迭代区间ThisDomain,判断与InterDomain相比ThisDomain是否发生改变的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110400173.9/1.html,转载请声明来源钻瓜专利网。