摘要 | 第3-5页 |
ABSTRACT | 第5-6页 |
1 绪论 | 第14-20页 |
1.1 研究背景 | 第14页 |
1.2 可配置处理器简介 | 第14-16页 |
1.2.1 可配置处理器发展现状 | 第15-16页 |
1.2.2 处理器为什么需要可配置 | 第16页 |
1.3 编译工具参考设计 | 第16-18页 |
1.3.1 MIMOLA | 第16-17页 |
1.3.2 LCC: Little C Compiler | 第17页 |
1.3.3 CoSy | 第17-18页 |
1.3.4 GNU 编译工具 | 第18页 |
1.4 研究内容和论文组织 | 第18-20页 |
2 编译工具结构分析与研究 | 第20-45页 |
2.1 GNU 编译工具概述 | 第20-21页 |
2.2 GAS 汇编器分析 | 第21-30页 |
2.2.1 Binutils 工具集参考框架分析 | 第21-23页 |
2.2.2 GAS 工作流程 | 第23-24页 |
2.2.3 GAS 中的重要数据结构 | 第24-26页 |
2.2.4 BFD 库 | 第26-29页 |
2.2.5 Binutils 处理器架构相关部分 | 第29-30页 |
2.3 GCC 编译器参考框架分析 | 第30-40页 |
2.3.1 GCC 编译系统结构 | 第30-31页 |
2.3.2 GCC 的中间语言 RTL | 第31-34页 |
2.3.3 GCC 的机器描述 MD | 第34-39页 |
2.3.4 机器描述与编译之间的接口 | 第39页 |
2.3.5 GCC 处理器相关部分 | 第39-40页 |
2.4 GNU 编译工具的可配置性 | 第40-41页 |
2.5 可配置目标平台简介 | 第41-42页 |
2.5.1 TOP 指令集架构概述 | 第41-42页 |
2.6 TOP-32 指令格式 | 第42-44页 |
2.7 本章小结 | 第44-45页 |
3 可配置汇编器的设计与实现 | 第45-63页 |
3.1 汇编器的可配置框架设计 | 第45-51页 |
3.1.1 可配置汇编器的结构 | 第45-46页 |
3.1.2 可配置的需求和部件 | 第46-47页 |
3.1.3 指令部件 | 第47-48页 |
3.1.4 通用编码部件 | 第48页 |
3.1.5 操作码部件 | 第48-50页 |
3.1.6 操作数部件 | 第50-51页 |
3.2 汇编器具体实现 | 第51-61页 |
3.2.1 指令集的静态定义 | 第51-52页 |
3.2.2 汇编语句的词法和语法分析 | 第52-59页 |
3.2.3 汇编语句的动态解析编码 | 第59-60页 |
3.2.4 机器指令的反向解析编码 | 第60-61页 |
3.3 汇编器可配置接口概要 | 第61-62页 |
3.4 本章小结 | 第62-63页 |
4 可配置编译器设计与实现 | 第63-89页 |
4.1 编译器可配置框架 | 第63-73页 |
4.1.1 可配置编译器结构 | 第63-64页 |
4.1.2 可配置编译器的需求分析 | 第64-65页 |
4.1.3 约束条件和可配置部件 | 第65-66页 |
4.1.4 指令部件 | 第66-69页 |
4.1.5 寄存器部件 | 第69-70页 |
4.1.6 立即数部件 | 第70-71页 |
4.1.7 配置接口的解释器 | 第71-73页 |
4.2 编译器的具体实现 | 第73-88页 |
4.2.1 移动存贮类指令的支持 | 第74-79页 |
4.2.2 逻辑算术类指令的支持 | 第79-83页 |
4.2.3 比较和跳转类指令的支持 | 第83-84页 |
4.2.4 应用程序二进接口(ABI)定义 | 第84-88页 |
4.3 本章小节 | 第88-89页 |
5 编译工具的可配置性验证 | 第89-108页 |
5.1 编译工具测试概述 | 第89页 |
5.2 正确性验证 | 第89-93页 |
5.2.1 汇编器的正确性测试 | 第89-91页 |
5.2.2 编译器的正确性测试 | 第91-93页 |
5.3 可配置性验证 | 第93-107页 |
5.3.1 汇编器的可配置性测试 | 第93-102页 |
5.3.2 编译器的可配置性测试 | 第102-107页 |
5.4 本章小结 | 第107-108页 |
6 总结与展望 | 第108-110页 |
6.1 本文总结 | 第108-109页 |
6.2 未来研究与展望 | 第109-110页 |
参考文献 | 第110-112页 |
致谢 | 第112-113页 |
攻读学位期间发表的学术论文 | 第113-115页 |