-
Notifications
You must be signed in to change notification settings - Fork 6.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[COURSE] Add USTC Principles and Techniques of Compiler (#671)
- Loading branch information
1 parent
0f98fc2
commit bc10573
Showing
3 changed files
with
47 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# USTC: Principles and Techniques of Compiler | ||
|
||
## Descriptions | ||
|
||
- Offered by: University of Science and Technology of China (USTC) | ||
- Prerequisites: | ||
- Programming Languages: | ||
- Difficulty: 🌟🌟🌟🌟 | ||
- Class Hour: 100 hours | ||
|
||
The theoretical part of this course covers a wide range of topics, including lexical analysis, syntax analysis, syntax-directed translation, and intermediate code translation from traditional compiler principles courses, as well as runtime management and both machine-independent and machine-specific code optimization. The practical component provides C++ code for the Cminusf compiler framework, allowing students to progressively build a fully functional modern compiler over six labs. Unlike other compiler courses, this course uses a subset of modern LLVM as the intermediate code, offering a forward-looking approach and including backend code generation and intermediate code optimization, making it a world-class compiler course. | ||
|
||
- The course labs use scripts to provide comprehensive automated testing, with complete tutorials available on the course homepage. | ||
- The course includes a full set of open-source course materials, lab framework code, and lab tutorials, making it beginner-friendly. | ||
- The labs progress gradually, increasing in difficulty, ensuring that students with varying levels of prior knowledge can benefit. | ||
- In Lab 1, Flex and Bison are used to implement the compiler frontend. Lab 2 involves generating intermediate code with LightIR (a subset of LLVM). Lab 3 covers backend code generation for the Loongson assembly language. Lab 4 focuses on intermediate code optimization. Lab 5 implements machine-independent optimization, and Lab 6 deals with register allocation. | ||
|
||
## Course Resources | ||
|
||
- Course Website: <https://ustc-compiler-principles.github.io/2023> | ||
- Recordings: <https://www.bilibili.com/video/BV1D7421N7c4> | ||
- Textbook: See the course website | ||
- Assignments: <https://ustc-compiler-principles.github.io/textbook> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# 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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters