摘要 | 第5-6页 |
ABSTRACT | 第6-7页 |
第一章 绪论 | 第11-15页 |
1.1 引言 | 第11页 |
1.2 国内外研究状况 | 第11页 |
1.3 课题的研究意义 | 第11-12页 |
1.4 论文的主要工作 | 第12-14页 |
1.5 论文的结构安排 | 第14-15页 |
第二章 语法分析和符号表概述 | 第15-26页 |
2.1 语法分析简介 | 第15-18页 |
2.2 类型系统和符号表简介 | 第18-25页 |
2.2.1 类型表示 | 第18-21页 |
2.2.2 符号表示 | 第21-23页 |
2.2.3 符号表组织 | 第23-25页 |
2.3 本章小结 | 第25-26页 |
第三章 中间代码生成器的设计与实现 | 第26-46页 |
3.1 三地址码简介 | 第26-27页 |
3.2 中间代码生成需要的数据结构 | 第27-29页 |
3.2.1 中间代码表示 | 第27-28页 |
3.2.2 中间代码组织 | 第28-29页 |
3.3 中间代码生成器的算法框架 | 第29-32页 |
3.4 中间代码翻译的具体实现 | 第32-45页 |
3.4.1 表达式翻译 | 第32-39页 |
3.4.1.1 基础表达式翻译 | 第32-33页 |
3.4.1.2 后缀表达式翻译 | 第33-35页 |
3.4.1.3 一元表达式翻译 | 第35-37页 |
3.4.1.4 二元表达式翻译 | 第37-38页 |
3.4.1.5 条件表达式翻译 | 第38页 |
3.4.1.6 赋值表达式翻译 | 第38-39页 |
3.4.2 结构化语句翻译 | 第39-45页 |
3.4.2.1 标号回填 | 第39-40页 |
3.4.2.2 循环语句翻译 | 第40-42页 |
3.4.2.3 switch语句翻译 | 第42-44页 |
3.4.2.4 goto和break、continue语句翻译 | 第44-45页 |
3.5 本章小结 | 第45-46页 |
第四章 汇编代码生成器的设计与实现 | 第46-67页 |
4.1 汇编代码生成简介 | 第46-47页 |
4.2 汇编代码生成器的数据表示 | 第47-51页 |
4.2.1 寄存器描述符 | 第47-49页 |
4.2.2 汇编程序的内存布局 | 第49-51页 |
4.2.3 名字的运行时刻地址 | 第51页 |
4.3 汇编代码生成器的算法框架 | 第51-56页 |
4.3.1 中间代码起止表 | 第52页 |
4.3.2 汇编代码生成器执行流程 | 第52-54页 |
4.3.3 中间代码指令翻译的算法框架 | 第54-56页 |
4.4 汇编代码翻译的具体实现 | 第56-66页 |
4.4.1 数据对象的定义 | 第56-57页 |
4.4.2 寄存器分配 | 第57-59页 |
4.4.3 汇编指令的翻译 | 第59-66页 |
4.4.3.1 数据传输指令的翻译 | 第59-60页 |
4.4.3.2 算术运算指令的翻译 | 第60-63页 |
4.4.3.3 控制转移指令的翻译 | 第63-64页 |
4.4.3.4 函数调用和返回指令的翻译 | 第64-66页 |
4.4.3.5 指针操作的翻译 | 第66页 |
4.5 本章小结 | 第66-67页 |
第五章 软件测试及性能分析 | 第67-77页 |
5.1 功能测试 | 第67-70页 |
5.1.1 中间代码生成测试 | 第68-69页 |
5.1.2 汇编代码生成测试 | 第69页 |
5.1.3 整体测试 | 第69-70页 |
5.2 性能分析 | 第70-71页 |
5.3 目标代码优化 | 第71-76页 |
5.3.1 等价类 | 第71-72页 |
5.3.2 消除冗余的加载指令 | 第72-73页 |
5.3.3 消除公共表达式计算 | 第73-74页 |
5.3.4 优化结果测试 | 第74-76页 |
5.4 本章小结 | 第76-77页 |
第六章 总结与展望 | 第77-79页 |
6.1 当前工作总结 | 第77-78页 |
6.2 下一步工作展望 | 第78-79页 |
致谢 | 第79-80页 |
参考文献 | 第80-82页 |