diff --git "a/docs/\347\274\226\350\257\221\345\216\237\347\220\206/USTC-Compilers.en.md" "b/docs/\347\274\226\350\257\221\345\216\237\347\220\206/USTC-Compilers.en.md" new file mode 100644 index 000000000..30d2b9f38 --- /dev/null +++ "b/docs/\347\274\226\350\257\221\345\216\237\347\220\206/USTC-Compilers.en.md" @@ -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: +- Recordings: +- Textbook: See the course website +- Assignments: \ No newline at end of file diff --git "a/docs/\347\274\226\350\257\221\345\216\237\347\220\206/USTC-Compilers.md" "b/docs/\347\274\226\350\257\221\345\216\237\347\220\206/USTC-Compilers.md" new file mode 100644 index 000000000..1baa9a1d0 --- /dev/null +++ "b/docs/\347\274\226\350\257\221\345\216\237\347\220\206/USTC-Compilers.md" @@ -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实现寄存器分配。 + +## 课程资源 + +- 课程网站: +- 课程视频: +- 课程教材:见课程网站 +- 课程作业: diff --git a/mkdocs.yml b/mkdocs.yml index 70a5b2d66..ea6a105f4 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -235,6 +235,7 @@ nav: - "Stanford CS143: Compilers": "编译原理/CS143.md" - "NJU 编译原理": "编译原理/NJU-Compilers.md" - "KAIST CS420: Compiler Design": "编译原理/CS420.md" + - "USTC 编译原理与技术": "编译原理/USTC-Compilers.md" - 编程语言设计与分析: - "Stanford CS242: Programming Languages": "编程语言设计与分析/CS242.md" - "NJU 软件分析": "编程语言设计与分析/NJU-SoftwareAnalysis.md"