编译程序高级教程
课程编码:280216081202M3002
英文名称:Advanced Compiling Techniques
课时:40
学分:2.00
课程属性:专业课
主讲教师:李鹏等
教学目的要求
本课程为计算机系统结构专业硕士研究生的专业基础课,同时也可作为计算机软件与理论专业研究生的专业基础课。课程介绍了程序设计语言的基本实现原理和技术,主要内容包括形式语言基础知识、词法分析、语法分析及语法制导翻译、语言的解释执行和编译执行实现、现代编译器介绍、数据流分析方法和理论、先进程序分析方法、程序优化、代码生成等编译理论和技术。本课程能帮助学生深刻理解程序设计语言的语义及其实现方法,对从事编译系统等系统软件方向研究的学生有很好的意义,也可以使其他学生从中得到启发。
预修课程
C++程序设计
大纲内容
第一章 程序设计语言实现概论
第1节 程序设计语言的实现方法 0.7学时 邢明杰
第2节 解释器,编译器和虚拟机简介 0.7学时 邢明杰
第3节 编译的阶段 0.8学时 邢明杰
第4节 编译程序的结构 0.8学时 邢明杰
第二章 词法分析,语法分析以及形式语言简介
第1节 词法分析器的作用 0.7学时 李鹏
第2节 语法分析器的作用 0.7学时 李鹏
第3节 文法的直观概念 0.8学时 李鹏
第4节 乔姆斯基语言族 0.8学时 李鹏
第三章 语法制导的翻译
第1节 上下文无关语言及其语法树 0.7学时 李鹏
第2节 自上而下翻译及自下而上翻译 0.7学时 李鹏
第3节 语法制导的定义 0.8学时 李鹏
第4节 语法分析器的作用 0.8学时 李鹏
第四章 语法树遍历和解释器实现
第1节 语法树遍历方法和实现模式 1学时 李鹏
第2节 类型检查器 1学时 李鹏
第3节 解释器的实现和说明 1学时 李鹏
第五章 简单中间语言和控制流分析
第1节 简单中间语言指令 0.6学时 李鹏
第2节 基本块识别 0.6学时 李鹏
第3节 控制流图 0.6学时 李鹏
第4节 dominator和post-dominator 0.6学时 李鹏
第5节 自然循环的识别和优化 0.6学时 李鹏
第六章 SSA中间表示和LLVM
第1节 SSA中间表示 0.7学时 李鹏
第2节 支配边界 0.7学时 李鹏
第3节 SSA构建算法 0.8学时 李鹏
第4节 LLVM编译器介绍 0.8学时 李鹏
第七章 数据流分析I
第1节 可用表达式、活跃变量、到达定值分析 2学时 李鹏
第2节 常规中端编译优化方法 1学时 李鹏
第八章 数据流分析II
第1节 格的理论 1学时 邢明杰
第2节 通用数据流分析方法 1学时 邢明杰
第3节 基于SSA的优化方法 1学时 邢明杰
第九章 指针分析
第1节 过程内指针分析 1学时 邢明杰
第2节 Andersen 指针分析方法 1学时 邢明杰
第3节 Steensgarrd 指针分析方法 1学时 邢明杰
第十章 程序分析方法
第1节 上下文敏感、流敏感、路径敏感介绍 1学时 邢明杰
第2节 CFL-reachability分析方法 1学时 邢明杰
第3节 IFDS分析框架 1学时 邢明杰
第十一章 代码生成
第1节 运行环境 0.6学时 邢明杰
第2节 代码生成器设计中的问题 0.6学时 邢明杰
第3节 目标机器 0.6学时 邢明杰
第4节 下次引用信息 0.6学时 邢明杰
第5节 一个简单的代码生成器 0.6学时 邢明杰
第十二章 程序分析小组研究工作介绍
第1节 研究工作介绍 3学时 邢明杰
第十三章 课程内容复习
第1节 课程内容复习 3学时 邢明杰
第十四章 期末考试
第1节 期末考试 2学时 李鹏
教材信息
1、
<<编译原理>>第二版
Alfred V.Aho等著,赵建华等译
2009年1月
机械工业出版社
参考书
1、
编译原理
吕映芝
1998年
清华大学出版社
课程教师信息
李鹏,博士,中科院软件所副研究员。已发表在Micro、IJCAI、IEEE TC、IEEE TCAD、ACM TODAES、DAC、ICCAD、FPGA等权威国际期刊与会议发表论文40余篇。2013年优化多面体模型在高层次综合的代码生成,获CODES-ISSS’13最佳论文奖;2015年使用屋顶模型优化卷积神经网络在FPGA上的实现,获FPGA’15最佳论文提名奖,单篇论文引用率2000+。
邢明杰,中国科学院软件研究所高级工程师。从2005年开始从事编译器、工具链相关工作,参与多项国家、院重要科技项目,主持多家公司合作项目,涉及的方面包括:指令集架构支持、程序优化、并行编程模型、异构编程框架、领域专用编程语言和编译系统等。