LLVM Cookbook
作者: [印]Pandey,M.、Sarda,S. [译]王欢明
语言: 中文
出版年份: 2016
下载链接:
书籍均收集自互联网,仅供学习和研究使用,请莫用于商业用途。谢谢合作。

书籍摘要

《LLVM Cookbook中文版》是一本由Mayur Pandey和Suyog Sarda合著、王欢明翻译的编译器技术书籍,于2016年6月由电子工业出版社出版。该书以任务驱动的方式,系统地介绍了LLVM编译器框架的设计、使用以及如何基于LLVM开发编译器的前端、优化器和后端,是一本兼具理论与实战的编译技术指南。

核心内容概述

本书共分为9章,内容涵盖了LLVM的基础架构、编译器前端开发、优化技术、代码生成以及LLVM在各种项目中的应用实践。

  • 第1章:LLVM设计与使用
    介绍了LLVM的模块化设计理念,包括如何下载、安装LLVM和Clang,以及如何使用LLVM进行交叉编译、代码转换和执行。本章还探讨了LLVM的多种前端工具,如C语言前端Clang、Go语言前端llgo以及DragonEgg插件。

  • 第2章:实现编译器前端
    通过实现一个简单的TOY语言编译器,展示了如何从定义语言语法开始,逐步实现词法分析器、语法分析器,并生成LLVM IR代码。本章详细介绍了词法分析、语法分析以及抽象语法树(AST)的构建过程。

  • 第3章:扩展前端并增加JIT支持
    在TOY语言的基础上,增加了条件控制结构(如if/then/else)、循环结构以及自定义运算符的支持,并引入了即时编译(JIT)技术,使编译器能够动态执行代码。

  • 第4章:准备优化
    介绍了LLVM优化框架的核心——Pass机制,包括如何编写自定义Pass、使用opt工具运行Pass,以及如何在Pass中调用其他分析和优化工具。本章还探讨了多级优化策略和Pass管理器的使用。

  • 第5章:实现优化
    深入讨论了多种优化技术,如无用代码消除、内联转换、内存优化、循环优化、表达式重组和向量化等。通过具体示例,展示了如何编写和实现这些优化Pass。

  • 第6章:平台无关代码生成器
    描述了从LLVM IR到目标平台机器码的转换过程,包括SelectionDAG的构建、合法化、优化以及指令选择和调度。本章还介绍了如何使用TableGen工具描述目标平台的指令集和架构特性。

  • 第7章:机器码优化
    聚焦于机器码层面的优化技术,如公共子表达式消除、活动周期分析、寄存器分配、尾调用优化和兄弟调用优化等。这些优化技术直接作用于生成的机器码,进一步提升代码的执行效率。

  • 第8章:实现LLVM后端
    详细介绍了如何为一个目标平台实现LLVM后端,包括寄存器定义、调用约定、指令集设计、栈帧lowering、指令选择和平台注册等。本章通过一个简单的TOY后端示例,展示了从头构建LLVM后端的完整过程。

  • 第9章:LLVM项目最佳实践
    探讨了LLVM在不同项目中的应用,如异常处理、sanitizer工具的使用、垃圾回收器的编写、LLVM IR到JavaScript的转换、Clang静态分析器、bugpoint调试工具以及LLDB调试器的使用。本章还介绍了LLVM通用Pass的使用方法。

目标读者

本书适合熟悉编译器基本概念但对LLVM不太熟悉的程序员,以及正在学习编译技术并希望参与实战的开发者。通过丰富的实战案例和详细的步骤解析,读者可以快速掌握LLVM的使用方法,并深入了解编译器的开发过程。

总结

《LLVM Cookbook中文版》是一本全面、系统的LLVM实战指南。它不仅涵盖了LLVM的基础知识和架构设计,还通过具体的编译器开发案例,展示了如何利用LLVM实现高效的代码生成和优化。无论是对于编译器开发人员,还是对编译技术感兴趣的开发者,本书都是一本极具价值的参考资料。

期待您的支持
捐助本站