编译原理(研讨课)
课程编码:B0911016Y 英文名称:Practice of Compiler Principles 课时:40 学分:2.00 课程属性:专业必修课 主讲教师:崔慧敏
首先,本课程学习中,学生需要掌握LLVM中词法分析、语法分析、代码生成的基本流程,并能够进行简单的修改。我们围绕在工业界和学术界广泛使用的LLVM平台,设计了一系列与实际紧密结合的实验内容。为了体现我们的课程适应技术发展趋势的思想,我们在LLVM上精心设计了三个实验,可以让学生对编译器的前端词法语法分析、中间代码访问、中间代码生成三个重要阶段的原理都能有深入的理解。在实验过程中,学生还可以掌握从大型开源系统中梳理脉络、定位目标模块、扩展相应功能的本领,这是未来计算机行业不可或缺的重要技术。
其次,本课程学习中,学生需要理解实际编译器中对代码实施优化的经典手段和技术。我们通过7-8课时关于编译优化的介绍,作为编译原理理论课的外延进行讲授,让学生对编译器的常规优化(包括经典编译优化方法与时机、经典循环优化、经典访存优化)有较为深入的理解。
最后,我们在课程中讲授新型编译技术,使学生了解一门技术如何随着时代的发展而变迁,旨在培养学生在学术方向的前瞻敏感性。我们在研讨课中补充讲授了实际芯片编译器中常用的优化技术,对比几个不同的编译基础设施在优化方面的异同,同时也会介绍随着大数据、数据中心、智能化的发展,编译技术的新机会和新挑战。在讲授过程中,希望学生能够建立起学术上敏感性和前瞻性。
序号 | 授课内容 | 知识点 | 备注 |
1 | 课程介绍 |
|
|
2 | Compiler, Assembler, Loader and Linker |
| 布置课程实验内容,布置LLVM论文阅读 |
3 | 编译方法学 |
|
|
4 | RISCV实验讲授 |
| 选定各自组的实验内容 |
5 | LLVM实验讲授 |
| 学会LLVM的安装 |
6 | 经典编译器介绍 |
| 学生汇报LLVM的报告 |
7 | 二进制编译技术 |
|
|
8 | LLVM实验研讨 RISCV实验研讨 |
| 课程答疑,确定大家能够完成最简单的流程 部署实验下一步的要求 |
9 | 论文研讨 | 学生对最新的编译技术论文进行汇报和研讨 |
|
10 | 经典编译优化 |
|
|
11 | 实验研讨 | 学生对实验第一部分的内容进行研讨 |
|
12 | LLVM实验研讨 RISCV实验研讨
|
| 由助教老师进行详细的实验讲解 通过4课时的实验,学生可以基本清楚实验二流程 |
13 | |||
14 | 经典编译优化 |
|
|
15 | 实验研讨+论文研讨 | 学生对实验第二部分的内容进行研讨 学生对编译前沿论文进行研讨 |
|
16 | LLVM实验研讨 RISCV实验研讨
| 1.介绍LLVM中代码生成机制,和我们实验的代码生成流程 2. RISCV的代码生成流程,引导学生完成最简单的代码生成
| 由助教老师进行详细的实验讲解 通过4课时的实验,学生可以走通实验三流程 |
17 | |||
18 | |||
19 | RISCV实验指导 | 带领学生完成常用的两个优化 | 进行两个优化的实验讲解,通过4课时的实验,带领学生完成两个常用的优化,如循环不变量外提、公共子表达式删除、冗余指令删除等。 |
20 |
章节/学时分配 | 讲课 | 习题课 | 实验课 | 上机课 | 讨论课 | 其它 |
第1课/2学时 | 2 |
|
|
|
|
|
第2课/2学时 | 2 |
|
|
|
|
|
第3课/2学时 | 2 |
|
|
|
|
|
第4课/2学时 |
|
| 2 |
|
|
|
第5课/2学时 |
|
| 2 |
|
|
|
第6课/2学时 | 2 |
|
|
|
|
|
第7课/2学时 | 2 |
|
|
|
|
|
第8课/2学时 |
|
| 2 |
|
|
|
第9课/2学时 |
|
|
|
| 2 |
|
第10课/2学时 | 2 |
|
|
|
|
|
第11课/2学时 |
|
| 2 |
|
|
|
第12课/2学时 |
|
| 2 |
|
|
|
第13课/2学时 |
|
|
|
| 2 |
|
第14课/2学时 | 2 |
|
|
|
|
|
第15课/2学时 |
|
| 2 |
|
|
|
第16课/2学时 |
|
| 2 |
|
|
|
第17课/2学时 |
|
|
|
| 2 |
|
第18课/2学时 | 2 |
|
|
|
|
|
第19课/2学时 |
|
| 2 |
|
|
|
第20课/2学时 |
|
| 2 |
|
|
|