安全C语言的验证条件生成器的设计与实现
摘要 | 第5-6页 |
ABSTRACT | 第6-7页 |
第1章 绪论 | 第12-16页 |
1.1 研究背景 | 第12-13页 |
1.2 本文概述 | 第13-16页 |
1.2.1 研究工作 | 第13-14页 |
1.2.2 主要贡献 | 第14页 |
1.2.3 章节安排 | 第14-16页 |
第2章 安全C语言验证工具 | 第16-24页 |
2.1 安全C语言简介 | 第16页 |
2.2 基于Hoare逻辑的程序验证工具 | 第16-17页 |
2.3 验证工具框架 | 第17-19页 |
2.4 验证条件生成器 | 第19-21页 |
2.4.1 验证条件生成器的作用 | 第19页 |
2.4.2 两类验证条件 | 第19-20页 |
2.4.3 堆指针操作函数 | 第20-21页 |
2.5 验证条件生成器与其他模块的接口 | 第21-23页 |
2.5.1 与前端的接口 | 第21-22页 |
2.5.2 与形状分析模块的接口 | 第22页 |
2.5.3 与自动定理证明器的接口 | 第22-23页 |
2.6 本章小结 | 第23-24页 |
第3章 验证条件生成器的设计与实现 | 第24-48页 |
3.1 程序点断言范式化 | 第24页 |
3.2 模块化验证 | 第24-26页 |
3.2.1 为一个C语言文件生成验证条件的演算 | 第24-25页 |
3.2.2 为一个函数进行产生验证条件的演算 | 第25-26页 |
3.3 各类语句演算规则的设计 | 第26-33页 |
3.3.1 赋值语句 | 第27-29页 |
3.3.2 循环语句 | 第29-30页 |
3.3.3 跳转语句 | 第30-32页 |
3.3.4 函数调用语句 | 第32页 |
3.3.5 选择语句 | 第32-33页 |
3.3.6 复合语句 | 第33页 |
3.3.7 空语句 | 第33页 |
3.4 演算规则前后事务 | 第33-43页 |
3.4.1 赋值语句前全称量词的展开 | 第33-36页 |
3.4.2 赋值语句前聚集类型的展开 | 第36-37页 |
3.4.3 赋值语句前后对谓词的展开和折叠 | 第37-38页 |
3.4.4 符号断言和形状图断言展开的一致性 | 第38-39页 |
3.4.5 循环不变形状图推断信息搜集 | 第39-43页 |
3.4.6 其他前后事务 | 第43页 |
3.5 程序点检查 | 第43-45页 |
3.5.1 下标表达式越界检查 | 第43页 |
3.5.2 数据不变式的检查 | 第43-44页 |
3.5.3 其他检查 | 第44-45页 |
3.6 生成验证条件 | 第45-47页 |
3.6.1 循环入口处和出口处验证条件 | 第45-46页 |
3.6.2 函数出口处 | 第46页 |
3.6.3 指定程序点 | 第46-47页 |
3.6.4 函数调用点 | 第47页 |
3.7 本章小结 | 第47-48页 |
第4章 栈指针程序的验证 | 第48-54页 |
4.1 指针的三元属性 | 第48-49页 |
4.1.1 指针三元属性的定义 | 第48-49页 |
4.1.2 栈指针三元属性的实现 | 第49页 |
4.2 栈指针操作程序演算规则 | 第49-51页 |
4.2.1 函数入口 | 第49-50页 |
4.2.2 循环入口 | 第50-51页 |
4.2.3 对栈上数据域赋值 | 第51页 |
4.2.4 栈指针赋值 | 第51页 |
4.3 根据三元属性进行路径别名判断 | 第51-52页 |
4.4 根据三元属性进行程序点检查 | 第52页 |
4.5 本章小结 | 第52-54页 |
第5章 验证实例介绍 | 第54-64页 |
5.1 冒泡排序算法的验证 | 第54-58页 |
5.1.1 函数入口处 | 第54-55页 |
5.1.2 普通的变量赋值语句 | 第55-56页 |
5.1.3 循环语句 | 第56-57页 |
5.1.4 对数组元素赋值 | 第57-58页 |
5.1.5 函数出口处 | 第58页 |
5.2 矩阵分块相乘算法的验证 | 第58-60页 |
5.3 栈指针程序的验证 | 第60-63页 |
5.3.1 函数入口 | 第60-61页 |
5.3.2 变量声明 | 第61-62页 |
5.3.3 指针赋值语句 | 第62页 |
5.3.4 循环入口 | 第62页 |
5.3.5 对指针指向数据域赋值 | 第62-63页 |
5.4 本章小结 | 第63-64页 |
第6章 总结及展望 | 第64-66页 |
6.1 总结和相关工作对比 | 第64页 |
6.2 不足和进一步工作展望 | 第64-66页 |
参考文献 | 第66-70页 |
附录1 矩阵分块相乘算法 | 第70-74页 |
致谢 | 第74-76页 |
在读期间发表的学术论文与取得的其他研究成果 | 第76页 |