USTC 编译原理和技术 2023¶
课程信息¶
课程简介
本课程是计算机科学与技术专业的核心课,旨在深入探讨程序设计语言的设计和实现技术,涵盖与程序设计语言理论相关的知识,并培养学生将课程中学到的概念和技术应用于软件设计和开发的能力。内容包括编译器构建的基本原理,包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。同时,本课程结合现代编译技术和趋势,使用 LLVM 和龙芯后端,基于自主设计的教学实验框架“建木”,设计现代化的编译器工具。
授课信息¶
- 时间:1~15 周,1(6,7) 和 3(3,4)
- 地点:高新校区 GT-B212
- 主讲教师:李诚(主页)
-
助教:
- 龚平(gpzlx1@mail.ustc.edu.cn)
- 李晓奇(lxq@mail.ustc.edu.cn)
- 贺嘉(hej148@mail.ustc.edu.cn)
- 刘良宇(lly@mail.ustc.edu.cn)
- 陈清源(qychen@mail.ustc.edu.cn)
- 金泽文(zevin@mail.ustc.edu.cn)
- 许坤钊(xkz@mail.ustc.edu.cn)
- 傅申(fushen@mail.ustc.edu.cn)
- 杨柏森(ybs87@mail.ustc.edu.cn)
- QQ 群:805431263
- 录课视频(需校内统一身份认证):https://v.ustc.edu.cn/1/2023-1/capture-course/011163.02/detail
- 希冀实验平台(作业及实验提交):http://cscourse.ustc.edu.cn/
- 实验框架已公开,见参考资料2
公告¶
- 2023-09-03:课程平台介绍 已发布
- 2023-09-08:Lab0 已发布,Deadline:2023 年 9 月 15 日
- 2023-09-13:第一次作业:2.1a、2.2、2.3a、2.4h、2.7c、2.15(教材1),Deadline:2023 年 9 月 20 日
- 2023-09-15:Lab1 已发布,Deadline:2023 年 9 月 28 日
- 2023-09-25:第二次作业:3.1a、3.2a、3.10、3.11、3.17、3.19a(教材1),Deadline:2023 年 10 月 7 日 14:00
- 2023-10-05:Lab2 已发布,注意分阶段 Deadline
- 2023-10-11:第三次作业:3.27、3.37、4.3、4.5、4.9(教材1),Deadline:2023 年 10 月 18 日 16:00
- 2023-11-01:Lab3 已发布,注意分阶段 Deadline
- 2023-11-01:第四次作业已发布,Deadline:2023 年 11 月 8 日 17:25
- 2023-11-14:第五次作业:4.13、4.15、5.5、6.5、6.6(教材1),Deadline:2023 年 11 月 21 日 09:00
- 2023-11-27:Lab4 已发布,Deadline:2023 年 12 月 18 日
- 2023-12-08:第六次作业:7.2c、7.5、7.12、8.1e、8.2e、8.6(教材1),Deadline:2023 年 12 月 20 日 24:00
- 2023-12-08:第七次作业:9.1、9.2、9.3、9.15af(教材1),Deadline:2024 年 1 月 3 日 24:00
- 2024-01-14:建木杯–编译原理创新实验 已发布
教学课件¶
日期 | 标题 | 课件 |
---|---|---|
2023-09-04 | 编译原理和技术导论 | part1 |
2023-09-06 | 词法分析 | part1, part2, part3 |
2023-09-11 | 语法分析 - 上下文无关文法 | part1 |
2023-09-13 | 语法分析 - 自顶向下 - 递归下降 | part2 |
2023-09-18 | 语法分析 - 自顶向下 - LL(1) 文法 | part3 |
2023-09-20 | 语法分析 - 自底向上 - 移进规约 & LR 分析器的简单模型 | part4, part5 |
2023-09-25 | 语法分析 - 简单的 LR 方法 & 规范的 LR 方法 | part6, part7 |
2023-09-27 | 中间代码表示 | part1 |
2023-10-07 | 语法制导翻译 - 语法制导定义 & S/L 属性的定义 | part1, part2 |
2023-10-11 | 语法制导翻译 - 语法制导翻译方案 & L 属性定义的翻译方案 | part3, part4 |
2023-10-16 | 中间代码翻译 - 简单语句、控制流与布尔表达式 | part1, part2 |
2023-10-18 | 中间代码翻译 - 标号回填与布尔表达式 | part3 |
2023-10-30 | 中间代码翻译 - 标号回填与控制流语句 | part4 |
2023-11-01 | 中间代码翻译 - 类型表达式 & 符号表与声明语句 | part5, part6 |
2023-11-06 | 中间代码翻译 - 数组寻址 & 运行时管理 - 存储组织 | part7, part1 |
2023-11-08 | 运行时管理 - 栈式分配 & 代码生成 - 概述与简单机器模型 | part2, part1 |
2023-11-13 | 机器无关代码优化 - 常见的优化方式 | part1 |
2023-11-15 | 机器无关代码优化 - 数据流与到达定值、可用表达式分析、数据流与活跃变量分析 | part2, part3, part4 |
2023-11-20 | 机器无关代码优化 - 数据流与活跃变量分析、基本块内的优化 & 寄存器分配方法 | part4, part5, part1 |
2023-11-22 | 静态类型检查 & 流图中的循环 | part1, part1 |
2023-11-27 | 运行时刻环境 - 非局部变量的访问 | part2 |
2023-11-29 | 面向目标机器的代码优化 | part1 |
2023-12-04 | guest lecture | 无 slides |
2023-12-06 | guest lecture | 无 slides |
2023-12-13 | 复习课 | slides |
参考资料¶
教材和参考书¶
- [1] 陈意云、张昱,编译原理(第 3 版),高等教育出版社,2014
- [2] 李诚、徐伟,现代编译器设计与实现(实验讲义版本,高等教育出版社待出版,2023)。教材资源及实验框架
- A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman 著,赵建华等译,编译原理,机械工业出版社,2017
其他资料¶
- Stanford 课程主页:http://web.stanford.edu/class/cs143/
- MIT 课程主页:http://6.035.scripts.mit.edu/fa18/