基于Isabelle的汇编指令模拟系统及其自动化翻译辅助验证工具
摘要 | 第4-5页 |
Abstract | 第5页 |
第1章 .引言 | 第9-14页 |
1.1. 研究背景 | 第9页 |
1.2. 相关工作 | 第9-12页 |
1.2.1. PSOS | 第10页 |
1.2.2. UCLA secure Unix | 第10页 |
1.2.3. flint | 第10-11页 |
1.2.4. verisoft XT | 第11页 |
1.2.5. sel4/L4.verified | 第11-12页 |
1.2.6. VTOS形式化验证框架 | 第12页 |
1.3. 研究内容 | 第12-13页 |
1.4. 本文的组织结构 | 第13-14页 |
第2章. 构建模型的思路 | 第14-17页 |
2.1. Isabelle工具简介 | 第14-15页 |
2.1.1. 常用关键字 | 第14页 |
2.1.2. 基本类型与类型定义 | 第14-15页 |
2.1.3. 函数定义 | 第15页 |
2.1.4. 定理证明 | 第15页 |
2.1.5. 集合内涵与word | 第15页 |
2.2. 研究工作的目标 | 第15-17页 |
2.2.1. 构建一个强一致性的模拟系统 | 第15-16页 |
2.2.2. 实现一个自动翻译和辅助验证工具 | 第16-17页 |
第3章. 模拟系统构建 | 第17-36页 |
3.1. 寄存器组的模拟 | 第17-19页 |
3.2. 指令集的构建 | 第19-21页 |
3.3. 内存和状态集的构建 | 第21-22页 |
3.4. 带标志位的运算器 | 第22-25页 |
3.4.1. 常用标志位 | 第22-23页 |
3.4.2. 在计算中引入标志位的修改 | 第23-25页 |
3.5. 指令的取出、解释和执行 | 第25-26页 |
3.5.1. 指令的取出 | 第25页 |
3.5.2. 指令的解释和执行 | 第25-26页 |
3.6. 常用指令的模拟 | 第26-34页 |
3.6.1. 数据传送指令 | 第26-29页 |
3.6.2. 算术运算指令 | 第29-30页 |
3.6.3. 逻辑运算指令 | 第30-33页 |
3.6.4. 程序转移指令 | 第33-34页 |
3.7. 一致性说明 | 第34-36页 |
3.7.1. 系统架构的一致性 | 第34页 |
3.7.2. 指令集的一致性 | 第34页 |
3.7.3. 状态的一致性 | 第34-35页 |
3.7.4. 程序执行流程的一致性 | 第35-36页 |
第4章 .模拟运行以及验证方法 | 第36-39页 |
4.1. 翻译指令 | 第36页 |
4.2. 初始化系统状态 | 第36-37页 |
4.3. 模拟运行 | 第37页 |
4.4. 验证流程 | 第37-39页 |
第5章. 自动化翻译辅助验证工具的实现 | 第39-45页 |
5.1. 指令的翻译及代码段的初始化 | 第39-40页 |
5.2. 数据的初始化 | 第40-41页 |
5.2.1. 其他内存的初始化(字符串常量) | 第40-41页 |
5.2.2. 变量的起始地址生成 | 第41页 |
5.3. 状态的其他成员的初始化 | 第41页 |
5.4. 结构体成员偏移的自动生成 | 第41-42页 |
5.5. 辅助验证 | 第42-45页 |
5.5.1. 初始状态满足的条件P0 | 第42页 |
5.5.2. 每条汇编指令对应的状态变化 | 第42-45页 |
第6章 .模拟与验证的演示 | 第45-55页 |
6.1. c代码 | 第45页 |
6.2. 反汇编 | 第45-46页 |
6.3. 指令翻译以及系统的初始化 | 第46-49页 |
6.4. 程序模拟运行和状态查看 | 第49-50页 |
6.5. 形式化验证 | 第50-55页 |
6.5.1. 初始状态满足的条件P0 | 第50-52页 |
6.5.2. 第一步的证明 | 第52页 |
6.5.3. 从第N步到第N+1步 | 第52-53页 |
6.5.4. 定理的证明 | 第53-55页 |
第7章. 总结与展望 | 第55-56页 |
致谢 | 第56-57页 |
参考文献 | 第57-59页 |
攻读硕士学位期间参与的科研项目 | 第59-61页 |