C程序精确形状分析中的规范语言设计
| 摘要 | 第1-6页 |
| Abstract | 第6-8页 |
| 目录 | 第8-11页 |
| 第1章 绪论 | 第11-19页 |
| ·研究背景 | 第11-16页 |
| ·C程序的安全性 | 第12-13页 |
| ·程序静态分析 | 第13-15页 |
| ·规范语言 | 第15-16页 |
| ·本文概述 | 第16-19页 |
| ·研究工作 | 第16页 |
| ·主要贡献 | 第16-17页 |
| ·章节安排 | 第17-19页 |
| 第2章 SHAPECHECKER简介 | 第19-27页 |
| ·ShapeChecker总体框架 | 第19-21页 |
| ·编译框架LLVM | 第21-24页 |
| ·LLVM总体结构 | 第21-22页 |
| ·LIVM IR简介 | 第22-24页 |
| ·符号执行 | 第24-26页 |
| ·符号执行算法 | 第25页 |
| ·符号执行面临的问题 | 第25-26页 |
| ·本章小结 | 第26-27页 |
| 第3章 规范语言的设计 | 第27-41页 |
| ·ACSL简介 | 第27-28页 |
| ·IRSL规范语言 | 第28-34页 |
| ·断言语言 | 第29-30页 |
| ·形状谓词 | 第30-32页 |
| ·函数规范 | 第32-34页 |
| ·函数行为规范的构建 | 第34-37页 |
| ·程序状态 | 第34-36页 |
| ·行为规范的构建过程 | 第36-37页 |
| ·支持的C标准库函数 | 第37-40页 |
| ·malloc()函数行为规范 | 第37-38页 |
| ·free()函数行为规范 | 第38页 |
| ·strcat()函数行为规范 | 第38-40页 |
| ·本章小结 | 第40-41页 |
| 第4章 规范化和抽象化 | 第41-53页 |
| ·规范化 | 第41-42页 |
| ·抽象化 | 第42-50页 |
| ·单链表表段的抽象规则 | 第42-44页 |
| ·双链表表段的抽象规则 | 第44-48页 |
| ·二叉树的抽象规则 | 第48-50页 |
| ·数组谓词的抽象 | 第50页 |
| ·本章小结 | 第50-53页 |
| 第5章 实例分析 | 第53-65页 |
| ·一维数组程序示例 | 第53-56页 |
| ·函数行为规范 | 第53-55页 |
| ·抽象化和规范化操作 | 第55-56页 |
| ·单链表的程序示例 | 第56-59页 |
| ·函数行为规范 | 第56-57页 |
| ·抽象化操作 | 第57-58页 |
| ·规范化操作 | 第58页 |
| ·错误检测 | 第58-59页 |
| ·双链表的程序示例 | 第59-62页 |
| ·函数行为规范 | 第59-60页 |
| ·抽象化操作 | 第60-62页 |
| ·规范化操作 | 第62页 |
| ·调用C库函数的程序示例 | 第62-64页 |
| ·本章小结 | 第64-65页 |
| 第6章 实现及实验结果 | 第65-73页 |
| ·实现工作 | 第65-69页 |
| ·实验结果 | 第69-71页 |
| ·本章小结 | 第71-73页 |
| 第7章 结束语 | 第73-75页 |
| ·论文工作总结 | 第73-74页 |
| ·进一步研究方向 | 第74-75页 |
| 参考文献 | 第75-79页 |
| 致谢 | 第79-81页 |
| 在读期间发表的学术论文与取得的研究成果 | 第81页 |