• LLVM Cookbook中文版
图书条目标准图
21年品牌 40万+商家 超1.5亿件商品

LLVM Cookbook中文版

449 八五品

仅1件

北京东城
认证卖家担保交易快速发货售后保障

作者[印]Mayur、Pandey(马尤尔·潘迪)、[印]Suyog、Sarda(苏尤葛·撒达) 著;王欢明 译

出版社电子工业出版社

出版时间2016-06

版次1

装帧平装

上书时间2024-05-13

   商品详情   

品相描述:八五品
图书标准信息
  • 作者 [印]Mayur、Pandey(马尤尔·潘迪)、[印]Suyog、Sarda(苏尤葛·撒达) 著;王欢明 译
  • 出版社 电子工业出版社
  • 出版时间 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

 


点击展开 点击收起

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP