中文摘要 | 第1-3页 |
英文摘要 | 第3-4页 |
致谢 | 第4-7页 |
第一章 绪论 | 第7-21页 |
1. 1 为什么要用编译器 | 第7-8页 |
1. 2 与编译器相关的程序 | 第8-10页 |
1. 3 翻译步骤 | 第10-14页 |
1. 4 编译器中的主要数据结构 | 第14-15页 |
1. 5 编译器结构中的其他问题 | 第15-17页 |
1. 6 自举与移植 | 第17-21页 |
第二章 GCC编译器 | 第21-35页 |
2. 1 GCC简介 | 第21-22页 |
2. 1. 1 GNUC的起源与发展 | 第21页 |
2. 1. 2 GCC的步骤 | 第21-22页 |
2. 2 词法分析和语法分析 | 第22-28页 |
2. 2. 1 GCC词法分析程序的主要功能 | 第22页 |
2. 2. 2 词法分析程序的流程图及其说明 | 第22-24页 |
2. 2. 3 GCC语法和语义分析程序的主要功能 | 第24-26页 |
2. 2. 4 语法和语义分析程序的流程图及其说明 | 第26-28页 |
2. 3 中间代码产生 | 第28-32页 |
2. 3. 1 GCC的中间语言 | 第28-30页 |
2. 3. 2 RTL中间代码的生成 | 第30-31页 |
2. 3. 3 为控制语句产生RTL代码 | 第31-32页 |
2. 4 编译优化 | 第32-33页 |
2. 4. 1 基于RTL的优化 | 第32-33页 |
2. 4. 2 寄存器分配 | 第33页 |
2. 5 汇编代码生成 | 第33-35页 |
第三章 为subDLX模型移植GCC | 第35-59页 |
3. 1 技术背景 | 第35-36页 |
3. 2 编译器设计 | 第36-40页 |
3. 2. 1 为什么选择GCC | 第36-37页 |
3. 2. 2 GCC的设计思想 | 第37-38页 |
3. 2. 3 GCC的系统结构与流程 | 第38-40页 |
3. 3 虚拟处理器(subDLX)模型 | 第40-42页 |
3. 3. 1 subDLX的寄存器 | 第40页 |
3. 3. 2 subDLX的数据类型 | 第40页 |
3. 3. 3 subDLX的寻址模式 | 第40-41页 |
3. 3. 4 subDLX的指令集 | 第41-42页 |
3. 4 目标机(subDLX)描述宏 | 第42-47页 |
3. 4. 1 subDLX的存储格式 | 第43-44页 |
3. 4. 2 subDLX的寄存器使用 | 第44-45页 |
3. 4. 3 subDLX栈的布局 | 第45-46页 |
3. 4. 4 subDLX函数的入口、出口及调用约定 | 第46页 |
3. 4. 5 给subDLX汇编输出分区 | 第46-47页 |
3. 5 虚拟处理器(subDLX)的机器描述 | 第47-51页 |
3. 6 机器描述与编译之间的接口 | 第51-57页 |
3. 7 本章小结 | 第57-59页 |
第四章 基于GCC RTL中间代码,为特定DSP设计C编译器 | 第59-70页 |
4. 1 RTL中间语言 | 第59-62页 |
4. 1. 1 标准RTL语句--INSN | 第59-60页 |
4. 1. 2 RTL基本元素--rtx | 第60-61页 |
4. 1. 3 RTL操作码简介 | 第61页 |
4. 1. 4 RTL机器模式 | 第61-62页 |
4. 2 基于RTL中间代码,为特定DSP设计C编译器结构简介 | 第62-63页 |
4. 3 基于RTL中间语言的汇编代码生成 | 第63-69页 |
4. 3. 1 代码生成方法 | 第63-64页 |
4. 3. 2 代码生成和优化器结构 | 第64-65页 |
4. 3. 3 RTL语句展开 | 第65页 |
4. 3. 4 RTL操作数结构分析 | 第65-68页 |
4. 3. 5 RTL基本指令提取 | 第68页 |
4. 3. 6 从RTL行为级描述到汇编代码输出 | 第68-69页 |
4. 4 本章小结 | 第69-70页 |
全文总结 | 第70-71页 |
参考文献 | 第71-73页 |
作者攻读硕士学位期间发表或合作发表的论文 | 第73页 |