LLVM Cookbook中文版 封面

LLVM Cookbook中文版

评分 2.8
字数
375字
章节数
10
ISBN
9787121288470

标签

内容简介

《LLVM Cookbook中文版》由印度软件工程师Mayur Pandey与Suyog Sarda合著,两位作者都是LLVM开源社区的活跃贡献者,也参与过Tizen编译器项目。全书以任务驱动(Cookbook)的方式组织,围绕“怎样用LLVM做一件事”逐步展开,而不是按编译原理教科书的顺序讲理论。 内容从LLVM的模块化设计与工具链讲起:交叉编译Clang/LLVM、把C源码编译成LLVM汇编码、IR与bitcode之间的相互转换、链接与执行bitcode,以及Clang、Go前端和DragonEgg的使用。随后用一个自制的TOY语言作为贯穿案例,依次实现词法分析器、抽象语法树、语法分析器和IR代码生成,再把前端扩展到if/then/else、循环、自定义运算符,并接入JIT。第三部分进入优化与后端:编写自定义Pass、基于Pass管理器注册Pass、实现分析与别名分析;编写无用代码消除、内联、内存优化、循环优化与向量化;再借助TableGen描述目标平台,走完指令选择、SelectionDAG合法化与调度、寄存器分配、指令发射的完整流程,最后以异常处理、sanitizer、GC、bugpoint、LLDB等实践话题收尾。全书约375千字,351页,适合当作查阅型实战手册,而不是从头读到尾的入门读物。

编辑推荐

市面上的编译原理书大多擅长讲“为什么”,却很少讲“怎么做”;而LLVM官方文档虽然详尽,却分散在大量页面里。这本书补上的正是这一块:它把“写一个能跑起来的编译器前端”“加一个自己写的Pass”“让一种新指令集在LLVM里落地”拆成一个个可执行的小任务,每一步都给出代码与命令,读者可以在自己的机器上复现结果。 它的结构也符合工程学习的路径:先熟悉IR与工具链,再从前端做到优化,最后进入后端与机器码,前后呼应,形成完整工具链。对于已经在用Clang、但面对LLVM源码不知道从哪下手的开发者来说,这种“任务—代码—结果”的组织方式,比通读文档效率高得多。 需要提醒的是,本书基于较早期的LLVM版本,新版LLVM在Pass管理器、New Pass Manager、ORC JIT等方面变化很大,部分API和命令需要对照官方文档调整;中文版个别术语和排版也有读者提出过意见。把它当作建立整体地图、理解流程骨架的向导,配合官方文档使用,收获会最大。

适合谁读

适合

  • 已掌握C/C++,想从零动手实现编译器前后端的开发者
  • 日常使用Clang/LLVM工具链,希望理解其内部机制的工程师
  • 需要为自研芯片或DSL定制后端、优化Pass的研发人员
  • 编译原理课程已学过、急需工程实践机会的学生与研究者

不适合

  • 完全没学过编译原理、也没有C++基础的零起点读者
  • 想系统学习编译理论推导与形式化方法的读者
  • 只做业务应用开发、不涉及语言与工具链的从业者

阅读建议

  1. 先按第1章把IR、bitcode、Clang/Go前端跑通,建立对LLVM工具链的整体印象,再进入后续章节。
  2. 第2—3章的TOY语言案例建议亲手敲一遍代码,这是理解前端与IR生成最快的方式。
  3. 阅读时对照当前LLVM版本的官方文档,遇到Pass注册、JIT等API差异,以新版本为准并做好笔记。
  4. 把本书当手册而非小说,按“前端—优化—后端”的需求跳读,每完成一个小任务就编译验证一次。

出版社简介

电子工业出版社 中国 · 成立于 1982 年

电子工业出版社是一家以电子信息及相关领域为出版特色的综合性出版社。从库内三千余种图书来看,其出版方向覆盖编程设计、人工智能、计算机综合、财经、摄影与社科等门类,既关注技术前沿,也兼顾大众阅读。代表图书包括《因子投资:方法与实践》《x86汇编语言:从实模式到保护模式》《RISC-V开放架构设计之道》《人工智能:语音识别理解与实践》《相控阵雷达技术》《雷达目标特性》及《100个Go语言典型错误》等,多围绕技术方法与工程实践展开。作者资源方面,有石川、李忠、王晓波、大卫·帕特森、安德鲁·沃特曼、余子濠等中外作者。受公开资料所限,暂不展开更多出版特色。

目录

  1. 前言
  2. 第1章 LLVM设计与使用
  3. 第2章 实现编译器前端
  4. 第3章 扩展前端并增加JIT支持
  5. 第4章 准备优化
  6. 第5章 实现优化
  7. 第6章 平台无关代码生成器
  8. 第7章 机器码优化
  9. 第8章 实现LLVM后端
  10. 第9章 LLVM项目最佳实践

常见问题

这本书需要什么基础才能读?
需要熟悉C++,并了解词法分析、语法分析、IR、优化等基本编译概念。书中不铺垫编译原理理论,直接进入LLVM实践,基础不足的读者建议先补一门编译原理课。
书中的代码能在最新版LLVM上直接运行吗?
不一定。本书基于2015年前后的LLVM版本,之后Pass管理器重构、New Pass Manager、ORC JIT等都有较大变化,部分接口与命令需要按当前官方文档改写;但整体流程与思路依然适用。
和《深入理解LLVM》之类的书有什么区别?
本书是Cookbook式的任务手册,重在“照着做出来”;偏重原理剖析与源码解读的专著更关注设计与实现细节。两者互补:先跟着本书动手,再读源码分析类书籍。
中文版翻译质量如何?
术语大体沿用社区通行译法,可读性尚可,但个别地方存在术语不统一和排版疏漏,遇到关键概念建议对照英文原版《LLVM Cookbook》核实。
书中讲的TOY语言案例有什么用?
它是贯穿前端的教学案例,用一个小语言把词法分析、语法树、IR生成、控制流与JIT串起来,帮助读者把零散知识连成一条完整的前端流水线。

读者评论

查询本书

本站为索引目录:「全网查询」由您发起、在您的浏览器中运行,所列入口均指向第三方站点,请自行判断可用性。

同一作者

同类高分