LLVM Kaleidoscope 第 7 章:可变量
7.1 前言
欢迎来到 我的第一个基于 LLVM 的语言前端 教程第七章。在前六章我们构建了一门小而强的函数式编程语言, 从中我们学到了如何去解析程序文本,构建与表示 AST,生成 LLVM IR 以及优化冗余代码和实现即时编译。
尽管 Kaleidoscope 作为一门函数式语言已经足够优秀,但事实上其函数式特性使得为其生成 LLVM IR 显得 “过于简单” 了。特别是,函数式的风格令我们特别容易直接构建出 SSA 形式的 LLVM IR – 而 SSA 经常将那些想用 LLVM 实现一门包含变量的命令式语言的初学者挡在门外。
幸运的是,你并不需要直接在前端生成 SSA form: 尽管偶尔结果出人意料,但 LLVM 提供了非常健壮的 SSA 构建支持。