内容简介
本书是一本面向LLVM框架的实用指南,通过丰富的示例和详细的步骤,帮助读者深入理解LLVM的核心概念与编程实践。全书涵盖了LLVM基础设施的主要组件,包括前端、优化器、后端以及代码生成技术,并提供了大量可直接应用的代码片段。
书中从LLVM的安装和基本使用入手,逐步深入到中间表示(IR)的构建与转换、优化pass的编写、目标架构的支持以及JIT编译等高级主题。作者通过清晰的案例,展示了如何使用LLVM开发自定义编译器、代码分析工具以及语言运行时。
无论是编译器工程师、系统开发者还是计算机科学领域的学生,都能从中获得实用的技能。本书强调理论与实际结合,每个章节都包含具体的操作指导和代码示例,使读者能够快速上手并解决实际开发中的问题。此外,书中还探讨了LLVM在性能优化、跨平台开发和调试方面的应用,是一本不可多得的LLVM技术实战手册。
目录
内容简介
译者序
关于作者
关于审校者
第1章 LLVM设计与使用
概述
模块化设计
交叉编译Clang/LLVM
将C源码转换为LLVM汇编码
将LLVM IR转换为bitcode
将LLVM bitcode转换为目标平台汇编码
将LLVM bitcode转回为LLVM汇编码
转换LLVM IR
链接LLVM bitcode
执行LLVM bitcode
使用C语言前端——Clang
使用GO语言前端
使用DragonEgg
第2章 实现编译器前端
概述
定义TOY语言
实现词法分析器
定义抽象语法树
实现语法分析器
解析简单的表达式
解析二元表达式
为解析编写驱动
对TOY语言进行词法分析和语法分析
为每个AST类定义IR代码生成方法
为表达式生成IR代码
为函数生成IR代码
增加IR优化支持
第3章 扩展前端并增加JIT支持
概述
处理条件控制结构——if/then/else结构
生成循环结构
处理自定义二元运算符
处理自定义一元运算符
增加JIT支持
第4章 准备优化
概述
多级优化
自定义LLVM Pass
使用opt工具运行自定义Pass
在新的Pass中调用其他Pass
使用Pass管理器注册Pass
实现一个分析Pass
实现一个别名分析Pass
使用其他分析Pass
第5章 实现优化
概述
编写无用代码消除Pass
编写内联转换Pass
编写内存优化Pass
合并LLVM IR
循环的转换与优化
表达式重组
IR向量化
其他优化Pass
第6章 平台无关代码生成器
概述
LLVM IR指令的生命周期
使用GraphViz可视化LLVM IR控制流图
使用TableGen描述目标平台
定义指令集
添加机器码描述
实现MachineInstrBuilder类
实现MachineBasicBlock类
实现MachineFunction类
编写指令选择器
合法化SelectionDAG
优化SelectionDAG
基于DAG的指令选择
基于SelectionDAG的指令调度
第7章 机器码优化
概述
消除机器码公共子表达式
活动周期分析
寄存器分配
插入头尾代码
代码发射
尾调用优化
兄弟调用优化
第8章 实现LLVM后端
概述
定义寄存器和寄存器集合
定义调用约定
定义指令集
实现栈帧lowering
打印指令
选择指令
增加指令编码
子平台支持
多指令lowering
平台注册
第9章 LLVM项目最佳实践
概述
LLVM中的异常处理
使用sanitizer
使用LLVM编写垃圾回收器
将LLVM IR转换为JavaScript
使用Clang静态分析器
使用bugpoint
使用LLDB
使用LLVM通用Pass
您当前的等级为
登录后免费下载登录
小黑屋反思中,不准下载!
评论后刷新页面下载评论
支付¥以后下载
请先登录
您今天的下载次数(次)用完了,请明天再来
支付积分以后下载立即支付
支付以后下载立即支付
您当前的用户组不允许下载升级会员
您已获得下载权限
您可以每天下载资源次,今日剩余次
免责申明:
1. 本站分享的所有书籍均来源于自互联网,我们只进行收集整理,并不对书籍内容进行更改。
2. 部分书籍中可能有书籍压制者放置的广告,这并不是本站所为,请注意甄别。
3. 我们分享这些书籍,纯粹是出于知识分享的热情,以及对互联网分享精神的高度认同和践行,不以盈利为目的。
4. 本站分享的所有书籍,仅供个人学习研究使用,请勿用于任何商业用途,否则产生的一切法律纠纷与本站无关。
5. 如果这些书籍让你有所收获,在条件允许的情况下,请一定购买正版书籍,这是对创作者最好的支持。
6. 如果您是此书籍的版权所有者,且您不希望此作品出现在本站,请联系我们,我们将在收到您的请求后48小时内予以删除。