![]() 作者:【印】Mayur Pandey(马尤尔•潘迪)/【印】Suyog Sarda(苏尤葛•撒达) 出版社: 电子工业出版社 译者:王欢明 出版年: 2016-6 页数: 351 定价: 75.00元 装帧: 平装 ISBN: 9787121288470 内容简介 · · · · · ·《LLVM Cookbook中文版》以任务驱动的方式,带领读者编写基于LLVM 的编译器前端、优化器、后端。通过丰富的实例,读者能够从中理解LLVM 的架构,以及如何使用LLVM 来编写自己的编译器。 相比于传统的介绍编译技术的书籍,此书更偏向于实战,因此适合熟悉编译但对LLVM 比较陌生的人员,也适合正在学习编译技术并且在寻找实战机会的人员。 作者简介 · · · · · ·Mayur Pandey 是一名专业的软件工程师,同时也是一位开源软件的爱好者。他专注于编译器以及编译器工具的开发,是LLVM 开源社区的活跃贡献者,也是Tizen 编译器项目的一员,他对其他编译器也有着亲身实践经验。 Mayur 在印度阿拉哈巴德的Motilal Nehru 国家技术研究所获得学士学位。目前居住在印度班加罗尔。 Suyog Sarda 是一名专业的软件工程师,同时也是一位开源软件的爱好者。他专注于编译器以及编译器工具的开发,是LLVM 开源社区的活跃贡献者,也是Tizen 编译器项目的一员。除此之外,Suyog 也参与了ARM 和x86 架构的代码改进工作。他对其他的编译器也有着亲身实践经验。他对编译器的主要研究在于代码优化和向量化。除了编译器之外,Suyog 也对Linux 内核的开发很感兴趣。他曾在2012 年于迪拜由Birla... 目录 · · · · · ·前言 XI第1 章 LLVM设计与使用 1 概述 1 模块化设计 2 交叉编译Clang/LLVM 6 将C 源码转换为LLVM 汇编码 8 · · · · · ·() 前言 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 · · · · · · () |
还行。。。
还没看 不错
已经很惊讶
文笔优美