Skip to content

Commit

Permalink
update step 9
Browse files Browse the repository at this point in the history
  • Loading branch information
Ksitta committed Sep 5, 2024
1 parent cd6f3a8 commit 90b8342
Show file tree
Hide file tree
Showing 14 changed files with 21 additions and 678 deletions.
10 changes: 2 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# MiniDecaf 编译实验

> 助教在这里有一些想说的:实验文档看起来会有一些长,是因为编译器本身就是一个庞大的系统,我们希望提供尽可能全面的内容来帮助大家理解框架的构成,忽略框架和编译本身没有关系的知识。请大家认真阅读文档,并且尽可能按照文档去动手试一试,而不是直接开始动手写作业。
> 实验手册指北:实验文档看起来会有一些长,是因为编译器本身就是一个庞大的系统,我们希望提供尽可能全面的内容来帮助大家理解框架的构成,忽略框架和编译本身没有关系的知识。请大家认真阅读文档,并且尽可能按照文档去动手试一试,而不是直接开始动手写作业。
## 实验概述
MiniDecaf [^1] 是一个 C 的子集,去掉了`include/define`等预处理指令,多文件编译支持,以及结构体/指针等语言特性。 本学期的编译实验要求同学们通过多次“思考-实现-重新设计”的过程,一步步实现从简单到复杂的 MiniDecaf 语言的完整编译器,能够把 MiniDecaf 代码编译到 RISC-V 汇编代码。进而深入理解编译原理和相关概念,同时具备基本的编译技术开发能力,能够解决编译技术问题。MiniDecaf 编译实验分为多个 stage,每个 stage 包含多个 step,共包含 12 个 step。**每个 step 大家都会完成一个可以运行的编译器**,把不同的 MiniDecaf 程序代码编译成 RISC-V 汇编代码,可以在 QEMU/SPIKE 硬件模拟器上执行。随着实验内容一步步推进,MiniDecaf 语言将从简单变得复杂。每个步骤都会增加部分语言特性,以及支持相关语言特性的编译器结构或程序(如符号表、数据流分析方法、寄存器分配方法等)。下面是采用 MiniDecaf 语言实现的快速排序程序,与 C 语言相同。
Expand All @@ -24,15 +24,9 @@ int qsort(int a[], int l, int r) {
2024 年秋季学期基本沿用了 2023 年秋季学期《编译原理》课程的语法规范。为了贴合课程教学内容,提升训练效果,课程组设计了比较完善的编译器框架,包括词法分析、语法分析、语义分析、中间代码生成、数据流分析、寄存器分配、目标平台汇编代码生成等步骤。每个 step 同学们都会面对一个完整的编译器流程,但不必担心,实验开始的几个 step 涉及的编译器框架知识都比较初级,随着课程实验的深入,将会循序渐进地引入各个编译器功能模块,并通过文档对相关技术进行分析介绍,便于同学们实现相关编译功能模块。
<!-- 实验框架相对于 2022 年的实验框架进行了以下修改:
- 为了统一作业难度和评分并且简化同学们的工作量,今年的框架仅提供 python 语言实现
- 删除了部分不必要的测试样例和语法规范,例如:对于for(;;)这种语法的处理,其本质与while(1)没有区别,以及对于函数多次声明的处理等测试样例。这些例子没有起到对于编译知识理解的作用,反而增加了同学们的工作量。
- 修改了部分实验顺序,在保留核心知识点的同时,期望降低同学们实验的难度。
- 修改了实验指导的排版、内容,删除了C++框架部分内容,增加了更多的指导内容。 -->
## 实验起点和基本要求
本次实验一共设置 13 个步骤(其中 step0 为实验框架熟悉,不需要修改框架代码)。后续的 step1-13 我们将由易到难完成 MiniDecaf 语言的所有特性,由于编译器的边界情况很多,你**只需通过我们提供的正例与负例即可**。
本次实验一共设置 13 个步骤(其中 step 0 和 step 1 为实验框架熟悉,不需要修改框架代码)。后续的 step 2-13 我们将由易到难完成 MiniDecaf 语言的所有特性,由于编译器的边界情况很多,你**只需通过我们提供的正例与负例即可**。
我们以 stage 组织实验,各个 stage 组织如下:
Expand Down
28 changes: 0 additions & 28 deletions docs/ref/intro.md

This file was deleted.

77 changes: 0 additions & 77 deletions docs/ref/java-xxy.md

This file was deleted.

1 change: 0 additions & 1 deletion docs/ref/pics/sf-dzy.drawio

This file was deleted.

3 changes: 0 additions & 3 deletions docs/ref/pics/sf-dzy.svg

This file was deleted.

3 changes: 0 additions & 3 deletions docs/ref/pics/ts_stack_frame.svg

This file was deleted.

3 changes: 0 additions & 3 deletions docs/ref/pics/ts_workflow.svg

This file was deleted.

137 changes: 0 additions & 137 deletions docs/ref/python-dzy.md

This file was deleted.

Loading

0 comments on commit 90b8342

Please sign in to comment.