From 712dd334d4dd01f23d36079e907c42a687441a12 Mon Sep 17 00:00:00 2001 From: stivenkingsberg Date: Fri, 22 Dec 2023 16:19:08 +0800 Subject: [PATCH] add part of the report --- report/contribution.md | 12 ++++++------ report/report.md | 25 ++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/report/contribution.md b/report/contribution.md index b2257ca..7b4b7f3 100644 --- a/report/contribution.md +++ b/report/contribution.md @@ -2,16 +2,16 @@ ## 贡献详述 -### 组员1 张三 +我们每个人分别完成了实验一、实验二的两个代码文件,同时实验三我们一人写了一半的函数。陈应豪负责上面一半,李璐豪负责下面一半 -### 组员2 李四 +### 组员1 陈应豪 -### 组员3 王五 +### 组员2 李璐豪 ## 评定结果 | 组员姓名 | 贡献百分比 | | :-----: | :-------: | -| 张三 | xx% | -| 李四 | xx% | -| 王五 | xx% | +| 陈应豪 | 50% | +| 李璐豪 | 50% | + diff --git a/report/report.md b/report/report.md index c43624a..5300493 100644 --- a/report/report.md +++ b/report/report.md @@ -1,9 +1,32 @@ # PW6 实验报告 -学号1 姓名1 学号2 姓名2 学号3 姓名3 +PB21000117 陈应豪 ## 问题回答 +### task1 + +- `while`语句块的布局特点是将循环体、循环条件和循环结束语块分成三个bb块。 + - cond_bb是条件。如果为真就跳转到true_bb,否则跳转到false_bb + - true_bb是循环体。每次结束后跳到cond_bb + - false_bb是循环结束语块 +- `Func`语块是一个单独的语句块。在调用函数的时候使用call的方法来调用函数,然后把变量传入到函数中 + +### task2 + + 请给出`SysYFIR.md`中提到的两种getelementptr用法的区别, 并解释原因: + + - `%2 = getelementptr [10 x i32], [10 x i32]* %1, i32 0, i32 %0` + - `%2 = getelementptr i32, i32* %1, i32 %0` + +区别:第一种先说明了数组的类型和数组指针,然后再根据偏移类型和偏移值算出地址;第二种方式是用普通的指针而非数组指针做基址加偏移。 + +原因是数据结构不同 + +### task3 + +使用scope处理函数,能很好的约定变量的作用域,不容易引起变量的越界 + ## 实验设计 ## 实验难点及解决方案