万本电子书0元读

万本电子书0元读

顶部广告

深入理解LLVM:代码生成电子书

1)主流新版LLVM详解:本书以LLVM 15版本为核心,深剖析其内部机制,帮助读者掌握前沿的编译器技术。2)提供配套代码仓库:提供专门的代码仓库镜像,确保读者能够轻松获取并编译书中使用的LLVM版本,实现理论与实践相结合。3)LLVM IR从门到精通:详尽介绍LLVM IR的基础知识及其设计原理,引导初学者快速上手,阶至专业水平。4)提供BPF后端实战案例:选用BPF作为示例后端,通过精简的代码示例讲解代码生成的关键步骤,易于理解和跟踪。5)丰富的示例与资源:配套大量示例代码,涵盖C/C 、LLVM IR等多种语言和中间表示形式,并遵循统一命名规则,方便验证学习成果。

售       价:¥

纸质售价:¥81.70购买纸书

1人正在读 | 0人评论 6.3

作       者:彭成寒,李灵,戴贤泽,王志磊,俞佳嘉

出  版  社:机械工业出版社

出版时间:2024-09-19

字       数:34.7万

所属分类: 科技 > 计算机/网络 > 计算机理论与教程

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
全书分为3篇。第1篇介绍编译器基础知识,包括中间表示,重介绍SSA、数据流分析、支配、循环等知识,此外还介绍了LLVM的后端描述语言TableGen。第二篇剖析分LLVM代码生成,其中对代码生成的每一步骤都有提及,着重介绍指令选择、指令调度、寄存器分配和编译优化。同时还以BPF后端为例总结了如何基于LLVM发一款新后端的编译器。第三篇附录主要总结了LLVM代码生成过程中使用的IR、BPF指令集以及如何在Linux运行BPF应用,Pass和PassManager的运行机制等知识。通过阅读本书,读者理解和掌握LLVM代码生成过程,可以根据本书指导为基于LLVM发一款新后端的编译器。同时本书还介绍了各种编译过程中使用到的算法,读者可以根据场景对算法行增强从而达到性能优化目的。<br/>【推荐语】<br/>1)主流新版LLVM详解:本书以LLVM 15版本为核心,深剖析其内部机制,帮助读者掌握前沿的编译器技术。2)提供配套代码仓库:提供专门的代码仓库镜像,确保读者能够轻松获取并编译书中使用的LLVM版本,实现理论与实践相结合。3)LLVM IR从门到精通:详尽介绍LLVM IR的基础知识及其设计原理,引导初学者快速上手,阶至专业水平。4)提供BPF后端实战案例:选用BPF作为示例后端,通过精简的代码示例讲解代码生成的关键步骤,易于理解和跟踪。5)丰富的示例与资源:配套大量示例代码,涵盖C/C 、LLVM IR等多种语言和中间表示形式,并遵循统一命名规则,方便验证学习成果。<br/>【作者】<br/>彭成寒:AI编译器与虚拟机技术专家,目前主要专注于LLVM、MLIR相关的AI编译器研究,并在JVM、V8和WebAssembly等虚拟机技术方面有着丰富的研发经验。他深耕IT领域近20年,曾涉足应用软件和大数据发等多个领域,并著有《JVM G1源码分析和调优》《新一代垃圾回收器ZGC设计与实现》《深探索JVM垃圾回收:ARM服务器垃圾回收的挑战和优化》等重要领域专著。 李灵:毕业于上海交通大学,拥有6年编译器和虚拟机相关的研发工作经验,深度参与了多项LLVM编译器及V8、WebAssembly虚拟机等源项目的研发工作,目前正在从事AI编译器研发工作。 戴贤泽:毕业于南京理工大学,拥有7年编译器和虚拟机相关工作经验,深参与了方舟编译器及V8、WebAssembly虚拟机等源项目的研发工作,目前正在从事编译器和虚拟机的设计与研发工作。 王志磊:毕业于浙江大学,拥有6年编译器和虚拟机相关的研发工作经验,参与了多项编译器及虚拟机的发项目,并为llvm-bolt、V8、WebAssembly等源项目贡献代码,目前专注于虚拟机相关的研发,精通AOT和JIT技术。 俞佳嘉:南京大学硕士研究生,现任华为编译器与编程语言实验室鸿蒙发者生态构建技术首席专家。他拥有10余年的丰富工作经验,在Intel、Microsoft、华为等世界知名公司从事过编译器、虚拟机、指令翻译等技术的相关研发工作,并深参与了Intel Houdini、华为方舟编译器等产品的核心研发工作。 <br/>
目录展开

前言

第一部分 基础知识

第1章 绪论

1.1 LLVM设计思路分析

1.2 LLVM主要子项目

1.3 LLVM构建与调试

1.4 LLVM在线工具

1.5 本章小结

第2章 IR基础知识

2.1 IR分类

2.2 CFG的基本块与构建

2.3 静态单赋值

2.4 本章小结

第3章 数据流分析基础知识

3.1 半格、格与不动点

3.2 数据流分析原理及描述

3.3 数据流方程示例

3.4 扩展阅读:数据流的遍历性能分析

3.5 本章小结

第4章 支配分析

4.1 支配和逆支配

4.2 支配树和支配边界的实现

4.3 扩展阅读:支配树相关小课堂

4.4 本章小结

第5章 循环基本知识

5.1 自然循环

5.2 LLVM的循环实现

5.3 本章小结

第6章 TableGen介绍

6.1 目标描述语言

6.2 TableGen工具链

6.3 扩展阅读:如何在TD文件中定义匹配

6.4 本章小结

第二部分 代码生成

第7章 指令选择

7.1 指令选择的处理流程

7.2 SelectionDAGISel算法分析

7.3 快速指令选择算法分析

7.4 全局指令选择算法原理与实现

7.5 本章小结

第8章 指令调度

8.1 LLVM指令调度

8.2 Linearize调度器

8.3 Fast调度器

8.4 BURR List调度器

8.5 Source List调度器

8.6 Hybrid List调度器

8.7 Pre-RA-MISched调度器

8.8 Post-RA-TDList调度器

8.9 Post-RA-MISched调度器

8.10 循环调度

8.11 扩展阅读:调度算法的影响因素

8.12 本章小结

第9章 基于SSA形式的编译优化

9.1 前期尾代码重复

9.2 Phi优化

9.3 栈着色

9.4 栈槽分配

9.5 死指令消除

9.6 IPL优化之If-Conversion

9.7 循环不变量外提

9.8 公共子表达式消除

9.9 代码下沉

9.10 窥孔优化

9.11 本章小结

第10章 寄存器分配

10.1 寄存器分配流程解析

10.2 寄存器分配涉及的Pass

10.3 Fast算法实现

10.4 Basic算法实现

10.5 Greedy算法实现

10.6 PBQP算法实现

10.7 扩展阅读:图着色分配

10.8 4种算法对比

10.9 本章小结

第11章 函数栈帧生成和非SSA形式的编译优化

11.1 函数栈帧生成以及相关优化

11.2 MIR优化

11.3 MIR指令变换和调度

11.4 MIR信息收集及布局优化

11.5 扩展阅读:后缀树构造和应用

11.6 本章小结

第12章 生成机器码

12.1 MC

12.2 机器码生成过程

12.3 本章小结

第13章 添加一个新后端

13.1 适配新后端的各个阶段

13.2 添加新后端所需要的适配

13.3 本章小结

附录

附录A LLVM的中间表示

A.1 狭义LLVM IR介绍

A.2 指令选择DAG介绍

A.3 MIR介绍

A.4 MC介绍

A.5 GMIR介绍

附录B BPF介绍

B.1 eBPF基础

B.2 Linux如何运行eBPF

附录C Pass的分类与管理

C.1 LegacyPassManage中的Pass

C.2 LegacyPassManager对Pass的管理

C.3 New PassManager

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部