You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
# PW6 实验报告
|
|
|
|
|
|
|
|
|
|
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处理函数,能很好的约定变量的作用域,不容易引起变量的越界
|
|
|
|
|
|
|
|
|
|
## 实验设计
|
|
|
|
|
|
|
|
|
|
## 实验难点及解决方案
|
|
|
|
|
|
|
|
|
|
## 实验总结
|
|
|
|
|
|
|
|
|
|
## 实验反馈
|
|
|
|
|
|
|
|
|
|
## 组间交流
|