LLVM Cookbook中文版

LLVM Cookbook中文版
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [印] (马尤尔·潘迪) [印] (苏尤葛·撒达)
2016-06
版次: 1
ISBN: 9787121288470
定价: 75.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 351页
字数: 375千字
正文语种: 简体中文
  • 《LLVM Cookbook中文版》以任务驱动的方式,带领读者编写基于LLVM 的编译器前端、优化器、后端。通过丰富的实例,读者能够从中理解LLVM 的架构,以及如何使用LLVM 来编写自己的编译器。 
    相比于传统的介绍编译技术的书籍,此书更偏向于实战,因此适合熟悉编译但对LLVM 比较陌生的人员,也适合正在学习编译技术并且在寻找实战机会的人员。 
    Mayur Pandey 是一名专业的软件工程师,同时也是一位开源软件的爱好者。他专注于编译器以及编译器工具的开发,是LLVM 开源社区的活跃贡献者,也是Tizen 编译器项目的一员,他对其他编译器也有着亲身实践经验。 
    Mayur 在印度阿拉哈巴德的Motilal Nehru 国家技术研究所获得学士学位。目前居住在印度班加罗尔。 
    Suyog Sarda 是一名专业的软件工程师,同时也是一位开源软件的爱好者。他专注于编译器以及编译器工具的开发,是LLVM 开源社区的活跃贡献者,也是Tizen 编译器项目的一员。除此之外,Suyog 也参与了ARM 和x86 架构的代码改进工作。他对其他的编译器也有着亲身实践经验。他对编译器的主要研究在于代码优化和向量化。除了编译器之外,Suyog 也对Linux 内核的开发很感兴趣。他曾在2012 年于迪拜由Birla技术协会举办的IEEE 国际云计算技术应用大会的议程上发表技术论文,题为“SecureCo-resident Virtualization in Multicore Systems by VM Pinning and Page Coloring”。他在印度普纳工程大学获得计算机学士学位。目前居住于印度班加罗尔。 
    前言 XI 
    第1 章 LLVM设计与使用 1 
    概述 1 
    模块化设计 2 
    交叉编译Clang/LLVM 6 
    将C 源码转换为LLVM 汇编码 8 
    将LLVM IR 转换为bitcode 9 
    将LLVM bitcode 转换为目标平台汇编码 12 
    将LLVM bitcode 转回为LLVM 汇编码 14 
    转换LLVM IR 15 
    链接LLVM bitcode 18 
    执行LLVM bitcode 19 
    使用C 语言前端——Clang 20 
    使用GO 语言前端 24 
    使用DragonEgg 25 
    第2 章 实现编译器前端 29 
    概述 29 
    定义TOY 语言 30 
    实现词法分析器 32 
    定义抽象语法树 35 
    实现语法分析器 38 
    解析简单的表达式 39 
    解析二元表达式 42 
    为解析编写驱动 45 
    对TOY 语言进行词法分析和语法分析 47 
    为每个AST 类定义IR 代码生成方法 48 
    为表达式生成IR 代码 49 
    为函数生成IR 代码 51 
    增加IR 优化支持 55 
    第3 章 扩展前端并增加JIT 支持 57 
    概述 57 
    处理条件控制结构——if/then/else 结构 58 
    生成循环结构 64 
    处理自定义二元运算符 71 
    处理自定义一元运算符. 77 
    增加JIT 支持 83 
    第4 章 准备优化 87 
    概述 87 
    多级优化 88 
    自定义LLVM Pass 89 
    使用opt 工具运行自定义Pass 92 
    在新的Pass 中调用其他Pass 93 
    使用Pass 管理器注册Pass 96 
    实现一个分析Pass 99 
    实现一个别名分析Pass 102 
    使用其他分析Pass 105 
    第5 章 实现优化 109 
    概述 109 
    编写无用代码消除Pass 110 
    编写内联转换Pass 115 
    编写内存优化Pass 119 
    合并LLVM IR 121 
    循环的转换与优化 123 
    表达式重组 126 
    IR 向量化 127 
    其他优化Pass 134 
    第6 章 平台无关代码生成器 139 
    概述 139 
    LLVM IR 指令的生命周期 140 
    使用GraphViz 可视化LLVM IR 控制流图 143 
    使用TableGen 描述目标平台 150 
    定义指令集 151 
    添加机器码描述 152 
    实现MachineInstrBuilder 类 156 
    实现MachineBasicBlock 类 157 
    实现MachineFunction 类 159 
    编写指令选择器 160 
    合法化SelectionDAG 166 
    优化SelectionDAG 173 
    基于DAG 的指令选择 179 
    基于SelectionDAG 的指令调度 186 
    第7 章 机器码优化 191 
    概述 191 
    消除机器码公共子表达式 192 
    活动周期分析 203 
    寄存器分配 209 
    插入头尾代码 215 
    代码发射 219 
    尾调用优化 221 
    兄弟调用优化 225 
    第8 章 实现LLVM 后端 227 
    概述 227 
    定义寄存器和寄存器集合 228 
    定义调用约定 230 
    定义指令集 231 
    实现栈帧lowering 232 
    打印指令 236 
    选择指令 240 
    增加指令编码 244 
    子平台支持 246 
    多指令lowering 249 
    平台注册 251 
    第9 章 LLVM项目最佳实践 265 
    概述265 
    LLVM 中的异常处理 265 
    使用sanitizer 271 
    使用LLVM 编写垃圾回收器 273 
    将LLVM IR 转换为JavaScript 279 
    使用Clang 静态分析器 281 
    使用bugpoint 282 
    使用LLDB 286 
    使用LLVM 通用Pass 291 
  • 内容简介:
    《LLVM Cookbook中文版》以任务驱动的方式,带领读者编写基于LLVM 的编译器前端、优化器、后端。通过丰富的实例,读者能够从中理解LLVM 的架构,以及如何使用LLVM 来编写自己的编译器。 
    相比于传统的介绍编译技术的书籍,此书更偏向于实战,因此适合熟悉编译但对LLVM 比较陌生的人员,也适合正在学习编译技术并且在寻找实战机会的人员。 
  • 作者简介:
    Mayur Pandey 是一名专业的软件工程师,同时也是一位开源软件的爱好者。他专注于编译器以及编译器工具的开发,是LLVM 开源社区的活跃贡献者,也是Tizen 编译器项目的一员,他对其他编译器也有着亲身实践经验。 
    Mayur 在印度阿拉哈巴德的Motilal Nehru 国家技术研究所获得学士学位。目前居住在印度班加罗尔。 
    Suyog Sarda 是一名专业的软件工程师,同时也是一位开源软件的爱好者。他专注于编译器以及编译器工具的开发,是LLVM 开源社区的活跃贡献者,也是Tizen 编译器项目的一员。除此之外,Suyog 也参与了ARM 和x86 架构的代码改进工作。他对其他的编译器也有着亲身实践经验。他对编译器的主要研究在于代码优化和向量化。除了编译器之外,Suyog 也对Linux 内核的开发很感兴趣。他曾在2012 年于迪拜由Birla技术协会举办的IEEE 国际云计算技术应用大会的议程上发表技术论文,题为“SecureCo-resident Virtualization in Multicore Systems by VM Pinning and Page Coloring”。他在印度普纳工程大学获得计算机学士学位。目前居住于印度班加罗尔。 
  • 目录:
    前言 XI 
    第1 章 LLVM设计与使用 1 
    概述 1 
    模块化设计 2 
    交叉编译Clang/LLVM 6 
    将C 源码转换为LLVM 汇编码 8 
    将LLVM IR 转换为bitcode 9 
    将LLVM bitcode 转换为目标平台汇编码 12 
    将LLVM bitcode 转回为LLVM 汇编码 14 
    转换LLVM IR 15 
    链接LLVM bitcode 18 
    执行LLVM bitcode 19 
    使用C 语言前端——Clang 20 
    使用GO 语言前端 24 
    使用DragonEgg 25 
    第2 章 实现编译器前端 29 
    概述 29 
    定义TOY 语言 30 
    实现词法分析器 32 
    定义抽象语法树 35 
    实现语法分析器 38 
    解析简单的表达式 39 
    解析二元表达式 42 
    为解析编写驱动 45 
    对TOY 语言进行词法分析和语法分析 47 
    为每个AST 类定义IR 代码生成方法 48 
    为表达式生成IR 代码 49 
    为函数生成IR 代码 51 
    增加IR 优化支持 55 
    第3 章 扩展前端并增加JIT 支持 57 
    概述 57 
    处理条件控制结构——if/then/else 结构 58 
    生成循环结构 64 
    处理自定义二元运算符 71 
    处理自定义一元运算符. 77 
    增加JIT 支持 83 
    第4 章 准备优化 87 
    概述 87 
    多级优化 88 
    自定义LLVM Pass 89 
    使用opt 工具运行自定义Pass 92 
    在新的Pass 中调用其他Pass 93 
    使用Pass 管理器注册Pass 96 
    实现一个分析Pass 99 
    实现一个别名分析Pass 102 
    使用其他分析Pass 105 
    第5 章 实现优化 109 
    概述 109 
    编写无用代码消除Pass 110 
    编写内联转换Pass 115 
    编写内存优化Pass 119 
    合并LLVM IR 121 
    循环的转换与优化 123 
    表达式重组 126 
    IR 向量化 127 
    其他优化Pass 134 
    第6 章 平台无关代码生成器 139 
    概述 139 
    LLVM IR 指令的生命周期 140 
    使用GraphViz 可视化LLVM IR 控制流图 143 
    使用TableGen 描述目标平台 150 
    定义指令集 151 
    添加机器码描述 152 
    实现MachineInstrBuilder 类 156 
    实现MachineBasicBlock 类 157 
    实现MachineFunction 类 159 
    编写指令选择器 160 
    合法化SelectionDAG 166 
    优化SelectionDAG 173 
    基于DAG 的指令选择 179 
    基于SelectionDAG 的指令调度 186 
    第7 章 机器码优化 191 
    概述 191 
    消除机器码公共子表达式 192 
    活动周期分析 203 
    寄存器分配 209 
    插入头尾代码 215 
    代码发射 219 
    尾调用优化 221 
    兄弟调用优化 225 
    第8 章 实现LLVM 后端 227 
    概述 227 
    定义寄存器和寄存器集合 228 
    定义调用约定 230 
    定义指令集 231 
    实现栈帧lowering 232 
    打印指令 236 
    选择指令 240 
    增加指令编码 244 
    子平台支持 246 
    多指令lowering 249 
    平台注册 251 
    第9 章 LLVM项目最佳实践 265 
    概述265 
    LLVM 中的异常处理 265 
    使用sanitizer 271 
    使用LLVM 编写垃圾回收器 273 
    将LLVM IR 转换为JavaScript 279 
    使用Clang 静态分析器 281 
    使用bugpoint 282 
    使用LLDB 286 
    使用LLVM 通用Pass 291 
查看详情
好书推荐 / 更多
LLVM Cookbook中文版
人文与社会译丛:历史与记忆(记忆史研究指导之书)
杰弗里·丘比特 著;王晨凤 译
LLVM Cookbook中文版
汗青堂丛书076·天女临凡:从宋到清的后宫生活与帝国政事
[美]马克梦 后浪
LLVM Cookbook中文版
甲骨文丛书·根部之血:美国的一次种族清洗
[美]帕特里克·菲利普斯
LLVM Cookbook中文版
鼓楼新悦丛书.蛮族世界的拼图:欧洲史前居民百科全书(随考古学家一起,拼一幅蛮族世界的拼图)
[波兰]彼得·柏伽基(Peter Bogucki) 著;朱鸿飞 译
LLVM Cookbook中文版
好望角丛书·毁灭与重生:日本昭和时代(1926—1989)
[日]古川隆久
LLVM Cookbook中文版
日本及其历史枷锁
R.塔格特·墨菲
LLVM Cookbook中文版
视觉艺术的现象学(当代学术棱镜译丛)
[英]保罗·克劳瑟(Paul Crowther) 著;李牧 译
LLVM Cookbook中文版
艺术与国家:比较视野中的视觉艺术(艺术社会学经典)
玛里林·鲁施迈耶 著;赵卿 译;维多利亚·D.亚历山大
LLVM Cookbook中文版
她来自马里乌波尔
[德]娜塔莎·沃丁 著;[德]祁沁雯 译
LLVM Cookbook中文版
大师与他们的音乐:指挥的艺术与魔力
[美]约翰·毛切里
LLVM Cookbook中文版
蚂蚁三部曲 超越人类的文明不在遥远的外星,它可能就在我们脚下
蔡孟真 袁晶等 后浪 译者;[法]贝尔纳·韦尔贝尔(Bernard Werber)
LLVM Cookbook中文版
墨比斯漫画精选集
[法]墨比斯 著;朱洁 叶蔚林 赵心舒 译