摘要 | 第1-4页 |
Abstract | 第4-10页 |
第1章 绪论 | 第10-19页 |
·背景 | 第11-12页 |
·GCC编译系统体系结构 | 第12-14页 |
·编译器优化技术 | 第14-15页 |
·编译器验证技术相关研究 | 第15-18页 |
·本文的主要内容和工作 | 第18页 |
·论文组织 | 第18页 |
·小结 | 第18-19页 |
第2章 GCC优化分析 | 第19-33页 |
·去除冗余优化 | 第19-22页 |
·局部公共子表达式删除 | 第19-20页 |
·全局公共子表达式删除 | 第20-21页 |
·支持懒惰代码移动的一般部分冗余去除 | 第21-22页 |
·循环优化 | 第22-28页 |
·代码外提 | 第23页 |
·归纳变量的检测与删除 | 第23-24页 |
·强度削弱 | 第24-25页 |
·循环展开 | 第25-26页 |
·循环合并(Loop Jamming) | 第26-27页 |
·测试外提(Unswitching)-常量比较条件提取 | 第27-28页 |
·分支跳转优化 | 第28-30页 |
·指令预取优化 | 第29页 |
·IF转换支持 | 第29-30页 |
·分支预测 | 第30页 |
·跳转优化 | 第30页 |
·指令组合优化 | 第30-31页 |
·指令调度 | 第31页 |
·基于着色图的寄存器分配 | 第31-32页 |
·寄存器优化 | 第32页 |
·小结 | 第32-33页 |
第3章 GCC安全性分析 | 第33-61页 |
·去除冗余优化模块 | 第34-38页 |
·局部公共子表达式消除子模块 | 第34-35页 |
·全局公共子表达式消除子模块 | 第35-37页 |
·支持懒惰代码移动的一般部分冗余去除模块 | 第37-38页 |
·循环优化 | 第38-42页 |
·代码外提 | 第38-39页 |
·归纳变量的检测与删除 | 第39-40页 |
·强度削弱 | 第40-41页 |
·循环展开 | 第41-42页 |
·测试外提(Unswitching)-常量比较条件提取 | 第42页 |
·分支跳转优化 | 第42-47页 |
·指令预取优化 | 第42-43页 |
·IF转换支持 | 第43-45页 |
·分支预测 | 第45-46页 |
·跳转优化 | 第46-47页 |
·指令组合 | 第47-50页 |
·指令调度 | 第50-52页 |
·指令依赖关系计算 | 第50页 |
·指令的链表调度 | 第50-51页 |
·指令的扩展基本块调度(EBB调度) | 第51-52页 |
·可视化指令调度信息 | 第52页 |
·基于着色图的寄存器分配 | 第52-54页 |
·建立冲突图 | 第53-54页 |
·图着色 | 第54页 |
·添加溢出代码 | 第54页 |
·寄存器优化 | 第54-60页 |
·全局寄存器分配 | 第55-57页 |
·将伪寄存器重载为实际寄存器 | 第57-58页 |
·减少寄存器重载引起的负载 | 第58页 |
·移动/修改寄存器 | 第58-59页 |
·寄存器到堆栈转换 | 第59-60页 |
·小结 | 第60-61页 |
第4章 GCC安全性验证 | 第61-78页 |
·总体方案描述 | 第61-68页 |
·基本思路 | 第62-63页 |
·实施步骤 | 第63-66页 |
·编译器代码分析 | 第63页 |
·安全性保障断言和验证代码附加框架 | 第63-65页 |
·恶意代码嵌入位置分析和嵌入 | 第65-66页 |
·安全性确认测试 | 第66页 |
·参与人员角色与约束 | 第66-67页 |
·输出状态验证的方法研究 | 第67-68页 |
·实例分析 | 第68-77页 |
·强度削弱优化模块的安全性验证 | 第68-77页 |
·功能说明及代码分析 | 第68页 |
·恶意代码嵌入位置分析 | 第68-70页 |
·附加验证代码 | 第70页 |
·恶意代码嵌入 | 第70-74页 |
·安全性验证 | 第74-77页 |
·小结 | 第77-78页 |
第5章 总结 | 第78-80页 |
参考文献 | 第80-83页 |
致谢 | 第83-84页 |
作者简历 | 第84页 |