[发明专利]一种符号执行方法、电子设备以及存储介质有效
| 申请号: | 201811602959.7 | 申请日: | 2018-12-26 |
| 公开(公告)号: | CN111367786B | 公开(公告)日: | 2021-06-08 |
| 发明(设计)人: | 李默;俞科技;陆晓峰 | 申请(专利权)人: | 华为技术有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 王仲凯 |
| 地址: | 518129 广东*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 符号 执行 方法 电子设备 以及 存储 介质 | ||
1.一种符号执行方法,其特征在于,包括:
确定代码基本块,所述代码基本块包括父节点、第一子节点、第二子节点以及结束节点,所述代码基本块的预设代码执行顺序包括第一执行路径以及第二执行路径,所述第一执行路径按代码执行顺序依次降低的排序依次包括所述父节点、所述第一子节点和所述结束节点,所述第二执行路径按代码执行顺序依次降低的排序依次包括所述父节点、所述第二子节点和所述结束节点,且所述第一子节点和所述第二子节点之间无代码执行的先后顺序;
根据所述父节点确定初始定义数据、第一约束条件以及第二约束条件,所述第一约束条件为执行所述第一子节点的条件,所述第二约束条件为执行所述第二子节点的条件;
根据所述第一子节点对所述初始定义数据进行携带所述第一约束条件的赋值操作以生成第一存储数据集合,所述第一存储数据集合包括所述第一约束条件、所述第一子节点所定义的数据以及所述初始定义数据;
根据所述第二子节点对所述初始定义数据进行携带所述第二约束条件的赋值操作以生成第二存储数据集合,所述第二存储数据集合包括所述第二约束条件、所述第二子节点所定义的数据以及所述第一存储数据集合。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一子节点对所述初始定义数据进行携带所述第一约束条件的赋值操作以生成第一存储数据集合包括:
获取所述第一子节点所定义的数据;
生成所述第一存储数据集合,所述第一存储数据集合用于指示,在所述初始定义数据满足所述第一约束条件时,根据所述第一子节点所定义的数据对所述初始定义数据进行赋值,在所述初始定义数据不满足所述第一约束条件时,所述初始定义数据保持不变。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述第二子节点对所述初始定义数据进行携带所述第二约束条件的赋值操作以生成第二存储数据集合包括:
获取所述第二子节点所定义的数据;
生成所述第二存储数据集合,所述第二存储数据集合用于指示,在所述初始定义数据满足所述第二约束条件时,根据所述第二子节点所定义的数据对所述初始定义数据进行赋值,在所述初始定义数据不满足所述第二约束条件时,根据所述第一存储数据集合对所述初始定义数据进行赋值。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述确定代码基本块之后,所述方法还包括:
确定执行树,所述执行树包括所述父节点、所述第一子节点、所述第二子节点以及所述结束节点,所述执行树所包括的所述父节点、所述第一子节点、所述第二子节点以及所述结束节点的代码执行顺序依次降低。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述根据所述第一子节点对所述初始定义数据进行携带所述第一约束条件的赋值操作以生成第一存储数据集合之后,所述方法还包括:
将所述第一存储数据集合写入至内存,以使所述内存的存储状态值为所述第一存储数据集合。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第二子节点对所述初始定义数据进行携带所述第二约束条件的赋值操作以生成第二存储数据集合之后,所述方法还包括:
将所述第二存储数据集合写入至所述内存,以使所述内存的存储状态值为所述第二存储数据集合。
7.根据权利要求6所述的方法,其特征在于,所述第一存储数据集合以条件选择算符的方式存储于所述内存中,所述第二存储数据集合以条件选择算符的方式存储于所述内存中。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述第一子节点以及所述第二子节点中,有1个或0个为空。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811602959.7/1.html,转载请声明来源钻瓜专利网。





