From bc10573cdbccf78d1e65c68f95071585a9d55b96 Mon Sep 17 00:00:00 2001 From: ZHAOYANG ZHANG <97776294+hanquanjushi@users.noreply.github.com> Date: Mon, 21 Oct 2024 12:53:09 +0800 Subject: [PATCH] [COURSE] Add USTC Principles and Techniques of Compiler (#671) --- docs/编译原理/USTC-Compilers.en.md | 23 +++++++++++++++++++++++ docs/编译原理/USTC-Compilers.md | 23 +++++++++++++++++++++++ mkdocs.yml | 1 + 3 files changed, 47 insertions(+) create mode 100644 docs/编译原理/USTC-Compilers.en.md create mode 100644 docs/编译原理/USTC-Compilers.md diff --git a/docs/编译原理/USTC-Compilers.en.md b/docs/编译原理/USTC-Compilers.en.md new file mode 100644 index 00000000..30d2b9f3 --- /dev/null +++ b/docs/编译原理/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/编译原理/USTC-Compilers.md b/docs/编译原理/USTC-Compilers.md new file mode 100644 index 00000000..1baa9a1d --- /dev/null +++ b/docs/编译原理/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 70a5b2d6..ea6a105f 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"