AI简介
这是一本专为那些已经了解编译器概念,并希望快速熟悉LLVM基础设施和其所提供的丰富库的程序员而编写的入门书籍。本书涵盖了从语言解析器到抽象语法树(AST) ,再到LLVM IR的生成,以及最终生成目标机器代码的整个过程。
书中首先介绍了LLVM工具的模块化设计和LLVM中间表示,并探讨了LLVM提供的一些工具。接着,我们学习了如何使用LLVM基础设施提供的一些基本函数调用来构建LLVM IR。在构建IR的过程中,我们了解了如何发射函数到模块,如何实现内存操作,以及如何使用getelementptr指令获取聚合数据结构中元素的地址。
在优化IR的过程中,我们学习了如何使用opt工具进行基本转换优化,以及如何使用Pass和Pass Manager进行更高级的优化。我们还学习了如何优化selectionDAG,以及如何通过指令简化和指令组合来优化IR。
在生成目标机器代码的过程中,我们学习了如何实现函数帧降低,以及如何生成TOY架构的指令。我们还学习了如何将目标机器注册到LLVM中,以便LLVM知道如何处理该目标机器的代码。