LLVM Cookbook中文版

LLVM Cookbook中文版
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [印] , (马尤尔·潘迪) , [印] , (苏尤葛·撒达) ,
2016-06
版次: 1
ISBN: 9787121288470
定价: 75.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 351页
字数: 375千字
正文语种: 简体中文
76人买过
  • 《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 

查看详情
12
相关图书 / 更多
LLVM Cookbook中文版
LLVM编译器实战教程
拉斐尔·奥勒(Rafael Auler) 著;布鲁诺·卡多索·洛佩斯(Bruno、Cardoso、Lopes、过敏意、冷静文 译
您可能感兴趣 / 更多
LLVM Cookbook中文版
Python数据分析(第3版)
[印]阿维纳什·纳夫拉尼(Avinash Navlani)
LLVM Cookbook中文版
PyTorch计算机视觉实战:目标检测、图像处理与深度学习
[印]V·基肖尔·阿耶德瓦拉 (印)耶什万斯·雷迪
LLVM Cookbook中文版
超声引导下区域麻醉实用指南
[印]阿鲁南苏·查克拉博蒂
LLVM Cookbook中文版
Python机器学习实战:基于Scikit-learn与PyTorch的神经网络解决方案
[印]阿什温·帕扬卡 (Ashwin Pajankar) 阿迪亚·乔希 (Aditya Joshi)著 欧拉 译
LLVM Cookbook中文版
全栈测试
[印]加亚特里 默罕(Gayathri Mohan)
LLVM Cookbook中文版
数字设计技术与解析
[印]瓦伊巴夫·塔拉特 著;慕意豪 译
LLVM Cookbook中文版
泰戈尔诗选(成长读书课:名家公开课美绘版)
[印]泰戈尔 著;郑振铎 译
LLVM Cookbook中文版
密码学与网络安全(第4版)
[印]阿图尔·卡哈特(Atul Kahate)著 葛秀慧 金名 译
LLVM Cookbook中文版
MATLAB 图形学基础
[印]兰詹·帕雷克(Ranjan Parekh) 著;章毓晋 译
LLVM Cookbook中文版
古老智慧的现代实践:辨喜论吠檀多(瑜伽奥义丛书)
[印]斯瓦米·维韦卡南达(辨喜)
LLVM Cookbook中文版
从冥想到三摩地:辨喜论王瑜伽和《瑜伽经》(瑜伽奥义丛书)
[印]斯瓦米·维韦卡南达(辨喜)
LLVM Cookbook中文版
被设想的未来
[印]普立梵(Prem Poddar) 【英】安德鲁·瓦特(Andrew Watt)