摘要 | 第5-6页 |
ABSTRACT | 第6-7页 |
第一章 绪论 | 第10-15页 |
1.1 背景分析 | 第10-11页 |
1.2 国内外研究现状 | 第11-14页 |
1.2.1 代码语法差异分析技术现状 | 第11-12页 |
1.2.2 程序补丁分析技术研究现状 | 第12-14页 |
1.3 论文结构 | 第14-15页 |
第二章 基于LLVM中间表示的代码差异分析技术设计与实现 | 第15-25页 |
2.1 代码差异分析技术概述 | 第15页 |
2.2 LLVM IR差异判定准则 | 第15-17页 |
2.2.1 LLVM中间表示语言 | 第15-16页 |
2.2.2 差异判定准则 | 第16-17页 |
2.3 LLVM各个结构层的差异判断准则 | 第17-19页 |
2.3.1 模块层 | 第17页 |
2.3.2 函数层 | 第17页 |
2.3.3 基本块层 | 第17页 |
2.3.4 指令层 | 第17-19页 |
2.4 函数层同构子图搜索算法 | 第19-23页 |
2.4.1 高度相等的同构子图搜索算法 | 第20-22页 |
2.4.2 子图分割与图内基本块匹配的算法 | 第22-23页 |
2.5 实现细节 | 第23页 |
2.6 本章小结 | 第23-25页 |
第三章 程序多版本分析系统的设计与实现 | 第25-35页 |
3.1 多版本分析系统设计 | 第25-34页 |
3.1.1 动态符号执行 | 第25-26页 |
3.1.2 统一版本的程序 | 第26-27页 |
3.1.3 执行模式与模式切换 | 第27页 |
3.1.4 状态分离与状态合并 | 第27-28页 |
3.1.5 乐观合并点搜索算法 | 第28-32页 |
3.1.6 程序差异分析算法 | 第32-34页 |
3.2 实现细节 | 第34页 |
3.3 本章小结 | 第34-35页 |
第四章 基于动态符号执行的程序多版本分析系统的评估 | 第35-46页 |
4.1 代码差异分析工具的评估 | 第35-36页 |
4.1.1 实验对象以及实验环境 | 第35页 |
4.1.2 研究问题 | 第35页 |
4.1.3 结果分析 | 第35-36页 |
4.2 多版本分析系统的评估 | 第36-44页 |
4.2.1 实验对象以及实验环境 | 第36-38页 |
4.2.2 MD-Diff程序集的评估结果 | 第38-39页 |
4.2.3 CoreBench程序集的评估结果 | 第39-40页 |
4.2.4 案例分析 | 第40-44页 |
4.3 本章小结 | 第44-46页 |
第五章 总结与展望 | 第46-48页 |
5.1 本文工作总结 | 第46-47页 |
5.2 未来研究方向 | 第47-48页 |
参考文献 | 第48-52页 |
附录A: SIR程序集sed程序LLVM IR代码节选 | 第52-53页 |
致谢 | 第53-54页 |
攻读学位期间发表的学术论文目录 | 第54页 |