# lab2 实验报告 学号 姓名 ## 问题1: getelementptr 请给出 `IR.md` 中提到的两种 getelementptr 用法的区别,并稍加解释: - `%2 = getelementptr [10 x i32], [10 x i32]* %1, i32 0, i32 %0` - `%2 = getelementptr i32, i32* %1 i32 %0` ## 问题2: cpp 与 .ll 的对应 请说明你的 cpp 代码片段和 .ll 的每个 BasicBlock 的对应关系。 ## 问题3: Visitor Pattern 分析 `calc` 程序在输入为 `4 * (8 + 4 - 1) / 2` 时的行为: 1. 请画出该表达式对应的抽象语法树(使用 `calc_ast.hpp` 中的 `CalcAST*` 类型和在该类型中存储的值来表示),并给节点使用数字编号。 2. 请指出示例代码在用访问者模式遍历该语法树时的遍历顺序。 序列请按如下格式指明(序号为问题 3.1 中的编号): 3->2->5->1 ## 实验难点 描述在实验中遇到的问题、分析和解决方案。 ## 实验反馈 吐槽?建议?