LLVM IR 笔记

                     

贡献者: 待更新

  • 本词条处于草稿阶段。
预备知识 LLVM 笔记

   LLVM IR (Intermediate Representation) 是 LLVM 的一个 portable 的中间语言。使用 LLVM 的编译器会先把高级语言编译成 IR,然后再做进一步优化。LLVM IR 的语法和汇编语言类似。

   以下是一个函数例子:计算两个整数相加。

define i32 @add(i32 %a, i32 %b) {
  %sum = add i32 %a, %b
  ret i32 %sum
}

   另一个完整的例子,可以编译运行

代码 1:test.ll
; Declare the main function
define i32 @main() {
    ; Allocate stack space for a single 32-bit integer
    %var = alloca i32

    ; Store the value 42 into the variable
    store i32 42, i32* %var

    ; Load the value of the variable into a register
    %val = load i32, i32* %var

    ; Return the value of the variable
    ret i32 %val
}

   编译:

llvm-as test.ll -o test.bc # 编译成 bitcode
clang test.bc -o test # 编译成可执行文件
./test # 执行
echo $? # 查看返回值(exit status)


致读者: 小时百科一直以来坚持所有内容免费,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 10 元,我们一个星期内就能脱离亏损, 并保证在接下来的一整年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利