| 第一章 绪论 | 第1-11页 |
| ·嵌入式系统及其对编译系统的要求 | 第7页 |
| ·ZLTCC编译系统简介 | 第7-9页 |
| ·相关的工作 | 第9-11页 |
| 第二章 编译系统的自动生成和优化 | 第11-24页 |
| ·编译系统的体系结构 | 第11-12页 |
| ·编译程序的自动生成 | 第12-17页 |
| ·编译程序生成器的结构 | 第12-13页 |
| ·词法分析程序的自动生成 | 第13-14页 |
| ·语法分析程序的自动生成 | 第14-15页 |
| ·语义分析程序生成器 | 第15-16页 |
| ·代码生成程序的自动生成 | 第16-17页 |
| ·编译后端技术研究 | 第17-24页 |
| ·中间代码的优化 | 第18-19页 |
| ·局部优化策略 | 第19-20页 |
| ·循环优化策略 | 第20页 |
| ·全局优化策略 | 第20页 |
| ·代码生成 | 第20-21页 |
| ·代码生成的信息表示 | 第21-22页 |
| ·寄存器分配 | 第22-23页 |
| ·窥孔优化策略 | 第23-24页 |
| 第三章 GCC编译器内核剖析 | 第24-46页 |
| ·GCC的设计思想 | 第24-25页 |
| ·GCC体系结构 | 第25-27页 |
| ·GCC的后端自动生成器 | 第27-31页 |
| ·“gen~*”生成器 | 第27-31页 |
| ·RTL(Register Transfer Language) | 第31-33页 |
| ·RTL简介 | 第31-32页 |
| ·函数的RTL表示 | 第32-33页 |
| ·目标机器描述(Machine Description) | 第33-40页 |
| ·模板 | 第34-38页 |
| ·标准指令 | 第38-40页 |
| ·宏定义 | 第40页 |
| ·后端及优化分析 | 第40-46页 |
| ·RTL生成(RTL Generater) | 第40-42页 |
| ·寄存器扫描(Register Scan) | 第42页 |
| ·跳转优化(Jump Optimization) | 第42-43页 |
| ·基于SSA的优化 | 第43页 |
| ·删除公共子表达式(Common Subexpression Elimination) | 第43页 |
| ·循环优化(Loop optimization) | 第43页 |
| ·数据流分析(Data Flow Analysis) | 第43页 |
| ·指令合并(Instructions Combination) | 第43页 |
| ·指令调度(Instruction Scheduling) | 第43-44页 |
| ·寄存器分配(Register Allocation) | 第44页 |
| ·延迟分支调度(Delay Branch Scheduing) | 第44-45页 |
| ·汇编代码生成 | 第45-46页 |
| 第四章 移植工作 | 第46-70页 |
| ·移植的思路和方法 | 第46页 |
| ·目标机器体系结构 | 第46-50页 |
| ·寄存器 | 第47页 |
| ·存储空间 | 第47-48页 |
| ·MIPS-X指令集 | 第48-50页 |
| ·目标机器ABI(Application Binary Interface) | 第50-53页 |
| ·MIPS-X的数据表示 | 第50-51页 |
| ·MIPS-X的函数调用 | 第51-53页 |
| ·交叉编译器在MIPS-X上的移植 | 第53-59页 |
| ·移植目标机头文件 | 第53-55页 |
| ·移植目标机描述文件 | 第55-59页 |
| ·移植目标机C文件 | 第59页 |
| ·移植问题及优化 | 第59-66页 |
| ·内存寻址问题 | 第59-61页 |
| ·寄存器分配问题 | 第61-62页 |
| ·延时槽的处理 | 第62-63页 |
| ·指令的属性 | 第63-64页 |
| ·指令的分割 | 第64-66页 |
| ·GCC自身的错误 | 第66页 |
| ·测试 | 第66-70页 |
| 第五章 总结与展望 | 第70-71页 |
| 参考文献 | 第71-73页 |
| 致谢 | 第73页 |