1、你可以选择题目难度你可以寻求多方帮助但是,你不能不做拷贝 编译技术 课程设计计算机学院 杨海燕题目n 根据 给定的文法 实现编译器,产生中间代码(四元式),生成面向特定体系结构的目标代码。 文法n 类 Pascal、类 C语言的文法n PL/0n C0PL/0文法n 教材上的文法略做改动n 文法说明n 具有常量、变量、整数、无数据类型(缺省为整型)、过程(无参数)、赋值语句、 if-then-else、 while-do/do-while语句、repeat-until语句、过程调用、复合语句、读语句、写语句n 示例C0文法n 类 C语言的文法n 文法说明n 具有常量、变量、整数、整型、函数(带
2、参数,有 /无返回值)、赋值语句、 if-then-else、 while语句、函数调用、复合语句、读语句、写语句(带字符串), return语句 n 示例扩充 PL/0或 C0文法n 进行了语法成分上的扩充n 文法说明n 具有常量、变量、整数、实数、整型、实型、字符型、过程(带参数)、函数(带参数)、赋值语句、 if-then-else、 while语句、 for语句、 repeat-until语句、 case语句、过程调用、函数调用、复合语句、读语句、写语句(带字符串)n 示例扩充 PL/0 C0 代码生成和优化n 代码生成n 目标体系结构为 X86和 MIPSn 流图、基本块、四元式都要
3、有。采用 DAG图表示基本块内部的,需要将 DAG图同时用四元式表达n 代码生成 X86或 MIPS汇编码n 直接生成机器码的可以获得加分n PL/0注意 DISPLAY表或访问链的生成n 临时寄存器的申请 /使用需要完成(不易掌握)代码生成和优化n 基本优化完成 :n 基本块内部的公共子表达式删除n 基本的数据流分析(变量的活性分析,为全局寄存器分配准备)n 全局寄存器分配n 着色算法n 基于访问统计的分配算法n (选作)其他优化,例如复制传播、循环强度削弱等,可以自行选作,成功完成都有加分作业题目 1n 难度等级:很简单 n 目标:完成编译器及解释执行程序,解释执行程序对编译器产生的 PCODE能解释执行,产生运行结果n 文法: PL/0文法(与教材上的文法略有差别)n 优化:无n 中间代码:无n 目标码: PCODEn 最高分: 65