LLVM基础设施适用于若干Unix系统(GNU/Linux,FreeBSD,MacOS)和Windows系统。在本章中,我们一步一步地说明如何让LLVM在这些系统上工作。某些系统可获得LLVM和Clang的预编译安装包,但是也可以从源代码编译得到它们。
LLVM的新手使用者必须明白,基本的LLVM编译器包括LLVM和Clang的库和工具。因此,本章的目的在于说明如何编译(build)并安装(install)它们。本书自始自终都将聚焦LLVM版本3.4。然而,LLVM是一个年轻的项目,处于活跃的开发期,因此它在不断地改变;知道这一点是重要的。
目录第1章编译和安装LLVM理解LLVM的版本获取预编译安装包获取官方预编译二进制文件使用包管理器从源代码编译系统要求获取源代码编译和安装LLVMWindows和MicrosoftVisualStudioMacOSX和Xcode总结第章外部项目介绍Clangextras编译和安装Clang附加(extra)工具理解Compiler-RT试验Compiler-RT使用DragonEgg插件编译DragonEgg理解DragonEgg和LLVM工具的编译流水线理解LLVM测试套件使用LLDB介绍libc++标准库总结第3章工具和设计LLVM的基本设计原则和它的历史理解如今的LLVM跟编译器驱动器交互使用独立工具探究LLVM内部设计了解LLVM基础库演示插件式Pass接口编写第一个LLVM项目编写Makefile编写代码浏览LLVM源代码—一般建议理解代码如文档向社区求助处理更新—SVN日志用作文档结束语总结第4章前端介绍Clang前端的活动程序库理解Clang诊断通过Clang学习前端的步骤词法分析语法分析语义分析生成LLVMIR代码组合在一起总结第5章LLVM中间表示概述理解LLVMIR的目标依赖练习基础工具转换IR格式介绍LLVMIR语言的语法介绍LLVMIR内存中的模型编写一个定制的LLVMIR生成器编译并运行IR生成器学习如何用C++后端生成任意IR的构造代码IR层次的优化编译时和链接时优化发现哪些Pass有用理解Pass依赖关系理解PassAPI写一个定制的Pass总结第6章后端概述使用后端工具学习后端代码结构了解后端程序库学习LLVM后端如何利用TableGen语言了解代码生成器.td文件理解指令选择过程SelectionDAG类低层化DAG结合与合法化DAG到DAG的指令选择可视化指令选择过程快速指令选择调度指令延迟表风险检测调度单元机器指令寄存器分配寄存器合并器虚拟寄存器重写目标钩子序曲和尾声帧索引理解机器代码框架MC指令代码输出编写你自己的机器Pass总结第7章Just-in-Time编译器了解LLVMJIT引擎基础介绍执行引擎内存管理介绍llvm::JIT基础结构数据块写到内存使用JITMemoryManager目标代码输出目标信息学习如何使用JIT类介绍llvm::MCJIT框架MCJIT引擎理解MCJIT如何编译模块使用MCJIT引擎使用LLVMJIT编译工具使用lli工具使用llvm-rtdyld工具其它的资源总结第8章交叉平台编译比较GCC和LLVM理解目标三元组准备工具链标准C和C++库运行时库汇编器和链接器Clang前端Clang命令行参数交叉编译驱动器的目标选项依赖交叉编译修改系统根目录生成一个Clang交叉编译器配置选项编译和安装你的基于Clang的交叉编译器别的编译方法测试开发板仿真器额外的资源总结第9章Clang静态分析器理解静态分析器的角色对比经典的警告和Clang静态分析器符号化执行引擎的力量测试静态分析器使用驱动器和使用编译器了解可用的检查器在XcodeIDE中使用静态分析器在HTML中生成图形化报告处理大型项目用你自己的检查器扩展静态分析器熟悉项目的架构编写你自己的检查器更多资源总结第10章Clang工具和LibTooling生成编译命令databaseclang-tidy工具利用clang-tidy检查你的代码重构工具ClangModernizerClangApplyReplacementsClangFormatModularizePPTraceClangQueryClangCheck去除c_str()调用编写你自己的工具问题定义-编写一个C++代码重构工具配置你的源代码的位置剖析工具样板代码使用AST匹配器编写回调函数测试你的新重构工具更多资源总结Indicesandtables
下载