Lab 2 实验指导

在你使用 clang 测试生成样例中的部分代码时,需要注意 C 语言中存在 ++-- 运算符,连写的 +- 会首先被词法分析识别成 ++-- 运算符,导致编译失败,你需要在连写的 +- 之间加上空格。miniSysY 的文法中不会出现 ++-- 运算符,你在词法分析时不需要为此预留额外的兼容代码。

下面是一个例子:

int main() {
    return 1 +-+ (- - -15) / 0x5;
}
define dso_local i32 @main(){
    %x0 = sub i32 0, 15
    %x1 = sub i32 0, %x0
    %x2 = sub i32 0, %x1
    %x3 = sub i32 0, %x2
    %x4 = sdiv i32 %x3, 5
    %x5 = add i32 1, %x4
    ret i32 %x5
}

关于 LLVM IR 的进一步介绍:LLVM 中的 SSALLVM IR 中最重要的概念,以及编译器设计的提示

results matching ""

    No results matching ""