程序优化与程序变换方法的研究
| 摘要 | 第1-6页 |
| Abstract | 第6-8页 |
| 目录 | 第8-11页 |
| 图目录 | 第11-12页 |
| 表目录 | 第12-13页 |
| 第1章 绪论 | 第13-19页 |
| ·研究背景 | 第13-14页 |
| ·相关工作与研究现状 | 第14-16页 |
| ·程序变换工具的研究现状 | 第14-15页 |
| ·指向分析的研究现状 | 第15-16页 |
| ·研究内容 | 第16-18页 |
| ·C到C/CUDA的程序变换工具 | 第16-17页 |
| ·结构体数组分拆工具 | 第17-18页 |
| ·针对堆内存对象的结构分析算法 | 第18页 |
| ·论文组织 | 第18-19页 |
| 第2章 相关知识与工具 | 第19-33页 |
| ·相关概念 | 第19-21页 |
| ·LLVM编译器 | 第21-27页 |
| ·Clang AST的介绍 | 第21-25页 |
| ·LLVM IR的介绍 | 第25-26页 |
| ·LLVM Debug机制 | 第26-27页 |
| ·程序变换工具POET | 第27-31页 |
| ·POET的设计理念 | 第27-28页 |
| ·POET脚本语言的语法 | 第28-29页 |
| ·POET的使用方法 | 第29-31页 |
| ·本章小结 | 第31-33页 |
| 第3章 DPOET的设计与实现 | 第33-45页 |
| ·POET编程的复杂性 | 第33-35页 |
| ·DPOET设计原理 | 第35-36页 |
| ·DPOET脚本格式 | 第36-38页 |
| ·初始遍的格式 | 第37页 |
| ·变换遍的格式 | 第37-38页 |
| ·DPOET的使用 | 第38-40页 |
| ·DPOET的安装 | 第38-39页 |
| ·一个使用DPOET的简单例子 | 第39-40页 |
| ·C到CUDA变换的支持 | 第40-41页 |
| ·实验结果 | 第41-43页 |
| ·实验环境 | 第41页 |
| ·测试用例介绍 | 第41-42页 |
| ·实验方法 | 第42页 |
| ·实验结果分析 | 第42-43页 |
| ·本章小结 | 第43-45页 |
| 第4章 结构体数组的分拆 | 第45-57页 |
| ·结构体数组分拆介绍 | 第45-47页 |
| ·structTrans配置文件的格式 | 第47页 |
| ·structTrans的变换规则 | 第47-52页 |
| ·结构体数组的变换 | 第48-49页 |
| ·指向结构体的指针变量的变换 | 第49-52页 |
| ·structTrans的实现 | 第52-53页 |
| ·实验分析 | 第53-56页 |
| ·实例的介绍 | 第53页 |
| ·structTrans的使用 | 第53页 |
| ·变换结果 | 第53-56页 |
| ·本章小结 | 第56-57页 |
| 第5章 针对于堆内存对象的结构分析 | 第57-71页 |
| ·问题描述 | 第57-58页 |
| ·指向图 | 第58-59页 |
| ·基本结构 | 第58-59页 |
| ·对象节点的属性 | 第59页 |
| ·指向图的推导过程 | 第59-60页 |
| ·过程内分析 | 第60-64页 |
| ·初始化处理 | 第61页 |
| ·函数形参的处理 | 第61-62页 |
| ·基本块内的处理 | 第62-63页 |
| ·基本块之间的处理 | 第63-64页 |
| ·过程间分析算法 | 第64-67页 |
| ·获取函数的摘要图 | 第64-65页 |
| ·过程间分析的算法 | 第65-66页 |
| ·上下文结合 | 第66-67页 |
| ·实验结果 | 第67-69页 |
| ·结果的DOT图格式 | 第67页 |
| ·实例分析 | 第67-68页 |
| ·实验结果 | 第68-69页 |
| ·本章小结 | 第69-71页 |
| 第6章 结束语 | 第71-73页 |
| ·主要贡献 | 第71-72页 |
| ·不足和将来的工作 | 第72-73页 |
| 参考文献 | 第73-75页 |
| 致谢 | 第75-77页 |
| 在读期间发表的学术论文与取得的研究成果 | 第77页 |