# USTC: Principles and Techniques of Compiler

## 课程简介

- 所属大学：中国科学技术大学
- 先修要求：数据结构、计算机系统基础、C++ 编程基础
- 编程语言：C++
- 课程难度：🌟🌟🌟🌟
- 预计学时：100小时

这门课程的理论部分内容广泛，既涵盖了传统编译原理课程的词法分析、语法分析、语法制导翻译、中间代码翻译，又覆盖了运行时管理、机器无关与面向机器的代码优化。实验部分则提供了 C++ 语言编写的Cminusf编译器框架代码，于6个实验中逐步构建一个具备现代完整流程的编译器。与其他编译原理课程的实验不同的是，本课程的实验采用现代LLVM的子集作为中间代码，更具前瞻性，同时包括了后端代码的生成和中间代码优化的部分，堪称国际一流的编译原理课程。

- 课程实验使用脚本提供全面的自动化测试，并于课程主页提供了完整的教程。
- 课程包含全套开源的课件、实验框架代码、实验教程，对初学者友好。
- 课程实验循序渐进，逐渐增加难度，能让不同基础的学生都有收获。
- 课程实验中Lab1使用Flex和Bison实现编译器前端，Lab2实现LightIR(LLVM子集)中间代码生成，Lab3实现后端代码生成龙芯汇编语言，Lab4实现中间代码优化，Lab5实现机器无关优化，Lab6实现寄存器分配。

## 课程资源

- 课程网站：<https://ustc-compiler-principles.github.io/2023>
- 课程视频：<https://www.bilibili.com/video/BV1D7421N7c4>
- 课程教材：见课程网站
- 课程作业：<https://ustc-compiler-principles.github.io/textbook>
