课程大纲

课程大纲

编译程序高级教程

课程编码:180086081202M3002H 英文名称:Advanced Compiling Techniques 课时:40 学分:2.00 课程属性:专业课 主讲教师:李炼

教学目的要求
本课程为计算机系统结构专业硕士研究生的专业基础课,同时也可作为计算机软件与理论专业研究生的专业基础课。课程介绍了程序设计语言的基本实现原理和技术,主要内容包括形式语言基础知识、词法分析、语法分析及语法制导翻译、语言的解释执行和编译执行实现、现代编译器介绍、数据流分析方法和理论、先进程序分析方法、程序优化、代码生成等编译理论和技术。本课程能帮助学生深刻理解程序设计语言的语义及其实现方法,对从事编译系统等系统软件方向研究的学生有很好的意义,也可以使其他学生从中得到启发。

预修课程
C++程序设计

大纲内容
第一章 程序设计语言实现概论 李炼
第1节 程序设计语言的实现方法 0.8学时
第2节 解释器,编译器和虚拟机简介 0.8学时
第3节 编译的阶段 0.8学时
第4节 编译程序的结构 0.8学时
第二章 词法分析,语法分析以及形式语言简介 李炼
第1节 词法分析器的作用 0.8学时
第2节 语法分析器的作用 0.8学时
第3节 文法的直观概念 0.8学时
第4节 乔姆斯基语言族 0.8学时
第三章 语法制导的翻译 李炼
第1节 上下文无关语言及其语法树 0.8学时
第2节 自上而下翻译及自下而上翻译 0.8学时
第3节 语法制导的定义 0.8学时
第4节 语法分析器的作用 0.8学时
第四章 语法树遍历和解释器实现 李炼
第1节 语法树遍历方法和实现模式 1.0学时
第2节 类型检查器 1.0学时
第3节 解释器的实现和说明 1.0学时
第五章 简单中间语言和控制流分析 李炼
第1节 简单中间语言指令 0.6学时
第2节 基本块识别 0.6学时
第3节 控制流图 0.6学时
第4节 dominator和post-dominator 0.6学时
第5节 自然循环的识别和优化 0.6学时
第六章 SSA中间表示和LLVM 李炼
第1节 SSA中间表示 0.8学时
第2节 支配边界 0.8学时
第3节 SSA构建算法 0.8学时
第4节 LLVM编译器介绍 0.8学时
第七章 数据流分析I 李炼
第1节 可用表达式、活跃变量、到达定值分析 2.0学时
第2节 常规中端编译优化方法 1.0学时
第八章 数据流分析II 李炼
第1节 格的理论 1.0学时
第2节 通用数据流分析方法 1.0学时
第3节 基于SSA的优化方法 1.0学时
第九章 指针分析 李炼
第1节 过程内指针分析 1.0学时
第2节 Andersen 指针分析方法 1.0学时
第3节 Steensgarrd 指针分析方法 1.0学时
第十章 程序分析方法 李炼
第1节 上下文敏感、流敏感、路径敏感介绍 1.0学时
第2节 CFL-reachability分析方法 1.0学时
第3节 IFDS分析框架 1.0学时
第十一章 代码生成 李炼
第1节 运行环境 0.6学时
第2节 代码生成器设计中的问题 0.6学时
第3节 目标机器 0.6学时
第4节 下次引用信息 0.6学时
第5节 一个简单的代码生成器 0.6学时
第十二章 程序分析小组研究工作介绍 李炼
第1节 研究工作介绍 3.0学时
第十三章 课程内容复习 李炼
第1节 课程内容复习 3.0学时
第十四章 期末考试 李炼
第1节 期末考试 2.0学时

教材信息
1、 <<编译原理>>第二版 Alfred V.Aho等著,赵建华等译 2009年1月 机械工业出版社

参考书
1、 编译原理 吕映芝 1998年 清华大学出版社

课程教师信息
李炼,中科院计算所研究员,中科天齐信息技术有限公司创始人。多年以来一直从事程序设计语言相关方面的系统研究,专注于程序分析技术及程序分析工具开发:其在中科院计算技术研究所领导开发的软件静态分析工具wukong在检测能力上大幅度超出同类型工具,已经部署于包括国内头部IT企业、央企、国家部委在内的多家企事业单位。近年来先后在SOSP/FSE/CCS/USENIX SECURITY/ASE/NDSS/CGO等国际权威期刊和会议发表论文50余 篇,并获得ASE2019杰出论文奖以及CCS2022最佳论文提名。李炼获得中科院优秀导师奖(2021),以及国科大领雁奖(2021,2022)。