This commit is contained in:
Yinmin Zhong 2024-04-14 14:31:02 +08:00
parent 0546e3f455
commit daeadf7c73
2 changed files with 2 additions and 1 deletions

View file

@ -8,7 +8,7 @@
- 课程难度:🌟🌟🌟🌟
- 预计学时60 小时
北京大学的编译原理实践课程旨在实现一个从精简版的 C 语言 —— SysY 编译到 RISC-V 汇编的编译器。和其他提供了框架代码的课程不同,该课程给予了你极大的自由度,测试程序只会对你输出的汇编代码的正确性进行测试,而不会对你编译器的具体设计甚至使用的编程语言做任何限制。你需要从一个空文件夹开始一步步构建出独属于你自己的编译器。但平地起高楼即使对于北大的同学也是相当有难度的,因此课程助教[@MaxXing](https://github.com/MaxXSoft)在2022年对课程实验进行重大升级为课程专门设计了一种中间表示 Koopa IR (intermediate representation)。Koopa IR 在设计上更为合理,在形式上类似于 LLVM IR但简化了相当多的内容只专注于实践需要的部分。与此同时还为 Koopa IR 设计了配套的运行时库,你可以借助这套运行时库轻松地解析/生成/修改/输出 Koopa IR完全不需要对其他无用的细节做过多考虑。另外还有一份保姆级的文档将构建编译器这样一个大工程循序渐进地拆分成了9个小步骤让任何愿意花时间的同学都可以更容易地实现自己的编译器。
北京大学的编译原理实践课程旨在实现一个从精简版的 C 语言 —— SysY 编译到 RISC-V 汇编的编译器。和其他提供了框架代码的课程不同,该课程给予了你极大的自由度,测试程序只会对你输出的汇编代码的正确性进行测试,而不会对你编译器的具体设计甚至使用的编程语言做任何限制。你需要从一个空文件夹开始一步步构建出独属于你自己的编译器。但平地起高楼即使对于北大的同学也是相当有难度的,因此课程助教 [@MaxXing](https://github.com/MaxXSoft) 在2022年对课程实验进行重大升级为课程专门设计了一种中间表示 Koopa IR (intermediate representation)。Koopa IR 在设计上更为合理,在形式上类似于 LLVM IR但简化了相当多的内容只专注于实践需要的部分。与此同时还为 Koopa IR 设计了配套的运行时库,你可以借助这套运行时库轻松地解析/生成/修改/输出 Koopa IR完全不需要对其他无用的细节做过多考虑。另外还有一份保姆级的文档将构建编译器这样一个大工程循序渐进地拆分成了9个小步骤让任何愿意花时间的同学都可以更容易地实现自己的编译器。
以下内容摘自 @MaxXing 在其 [Blog](https://blog.maxxsoft.net/index.php/archives/145/) 中对该课程实验的介绍:

View file

@ -219,6 +219,7 @@ nav:
- "Stanford CS346: Database System Implementation": "数据库系统/CS346.md"
- "CMU 15-799: Special Topics in Database Systems": "数据库系统/15799.md"
- 编译原理:
- "PKU 编译原理实践": "编译原理/PKU-Compilers.md"
- "Stanford CS143: Compilers": "编译原理/CS143.md"
- "NJU 编译原理": "编译原理/NJU-Compilers.md"
- 编程语言设计与分析: