Getting Started with LLVM Core Libraries LLVM 核心库入门

发布于 2022-12-07 22:30:54 字数 3450 浏览 133 评论 0

LLVM 基础设施适用于若干 Unix 系统(GNU/Linux,FreeBSD ,Mac OS)和 Windows 系统。在本章中,我们一步一步地说明如何让 LLVM 在这些系统上工作。某些系统可获得 LLVM 和 Clang 的预编译安装包,但是也可以从源代码编译得到它们。

LLVM 的新手使用者必须明白,基本的 LLVM 编译器包括 LLVM 和 Clang 的库和工具。因此,本章的目的在于说明如何编译(build)并安装(install)它们。本书自始自终都将聚焦 LLVM 版本 3.4。然而,LLVM 是一个年轻的项目,处于活跃的开发期,因此它在不断地改变;知道这一点是重要的。

目录

第1章 编译和安装LLVM
理解LLVM的版本
获取预编译安装包
获取官方预编译二进制文件
使用包管理器
从源代码编译
系统要求
获取源代码
编译和安装LLVM
Windows和Microsoft Visual Studio
Mac OS X和Xcode
总结
第2章 外部项目
介绍Clang extras
编译和安装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学习前端的步骤
词法分析
语法分析
语义分析
生成LLVM IR代码
组合在一起
总结
第5章 LLVM中间表示
概述
理解LLVM IR的目标依赖
练习基础工具转换IR格式
介绍LLVM IR语言的语法
介绍LLVM IR内存中的模型
编写一个定制的LLVM IR生成器
编译并运行IR生成器
学习如何用C++后端生成任意IR的构造代码
IR层次的优化
编译时和链接时优化
发现哪些Pass有用
理解Pass依赖关系
理解Pass API
写一个定制的Pass
总结
第6章 后端
概述
使用后端工具
学习后端代码结构
了解后端程序库
学习LLVM后端如何利用TableGen
语言
了解代码生成器.td文件
理解指令选择过程
SelectionDAG类
低层化
DAG结合与合法化
DAG到DAG的指令选择
可视化指令选择过程
快速指令选择
调度
指令延迟表
风险检测
调度单元
机器指令
寄存器分配
寄存器合并器
虚拟寄存器重写
目标钩子
序曲和尾声
帧索引
理解机器代码框架
MC指令
代码输出
编写你自己的机器Pass
总结
第7章 Just-in-Time编译器
了解LLVM JIT引擎基础
介绍执行引擎
内存管理
介绍llvm::JIT基础结构
数据块写到内存
使用JITMemoryManager
目标代码输出
目标信息
学习如何使用JIT类
介绍llvm::MCJIT框架
MCJIT引擎
理解MCJIT如何编译模块
使用MCJIT引擎
使用LLVM JIT编译工具
使用lli工具
使用llvm-rtdyld工具
其它的资源
总结
第8章 交叉平台编译
比较GCC和LLVM
理解目标三元组
准备工具链
标准C和C++库
运行时库
汇编器和链接器
Clang前端
Clang命令行参数交叉编译
驱动器的目标选项
依赖
交叉编译
修改系统根目录
生成一个Clang交叉编译器
配置选项
编译和安装你的基于Clang的交叉编译器
别的编译方法
测试
开发板
仿真器
额外的资源
总结
第9章 Clang静态分析器
理解静态分析器的角色
对比经典的警告和Clang静态分析器
符号化执行引擎的力量
测试静态分析器
使用驱动器和使用编译器
了解可用的检查器
在Xcode IDE中使用静态分析器
在HTML中生成图形化报告
处理大型项目
用你自己的检查器扩展静态分析器
熟悉项目的架构
编写你自己的检查器
更多资源
总结
第10章 Clang工具和LibTooling
生成编译命令database
clang-tidy工具
利用clang-tidy检查你的代码
重构工具
Clang Modernizer
Clang Apply Replacements
ClangFormat
Modularize
PPTrace
Clang Query
Clang Check
去除c_str()调用
编写你自己的工具
问题定义-编写一个C++代码重构工具
配置你的源代码的位置
剖析工具样板代码
使用AST匹配器
编写回调函数
测试你的新重构工具
更多资源
总结
Indices and tables

下载地址:https://www.wenjiangs.com/wp-content/uploads/2022/12/getting-started-with-llvm-core-libraries-zh-cn-readthedocs-io-zh_CN-latest.zip

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

安静被遗忘

文章 0 评论 0

喔爱吃橙子

文章 0 评论 0

草莓味的萝莉

文章 0 评论 0

梦里兽

文章 0 评论 0

mb_83J3Cyxa

文章 0 评论 0

时间海

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文