新书上架《LLVM编译器开发指南》~

在这里插入图片描述

简介

近些年来,随着领域特定架构(Domain Specific Architecture,DSA)的发展,随着AI热潮的兴起,以及一大批新的处理器核心架构的出现,特定结构的硬件结构对编译器的各方面能力都提出了新的要求。以往主要存在于CI迭代中设计和测试反馈子流程的大体量增量开发工作量需求,如今也出现在构建这一环节的编译器开发迭代中。要做到能将编译器纳入软件工程的循环中,对编译器框架的模块性就提出了很高的要求。以提供可执行编译工具为设计思路的传统编译器架构,在满足上述需求方面已是力有不逮。

近年来崛起的LLVM 编译器,相较传统GCC编译器有诸多优势,包括架构设计灵活、编译速度快、语言无关性好、代码优化能力强、易于集成和扩展,在开源项目和各大公司的商业项目中得到了广泛应用。

LLVM基于”llvm as libraries”理念,通过其高度模块化的架构设计,为编译器二次开发提供了功能丰富和接口简洁的编译工具链二次开发平台。

本书以深入分析源码的方式,对LLVM编译器前端、中端、后端、链接和加载全流程进行讲解,同时从软硬件工程实际出发,对于在LLVM中进行各类二次开发的方法结合案例作了展开介绍:

  • 编译驱动。如何clang驱动中扩展定义编译工具链?
  • 前端。如何基于高级语言进行语法扩展开发?如何定义clang内置函数和进行IR衔接?
  • Pass编写。基于LLVM的Legacy和New Pass Manager,如何编写中后端代码优化Pass?
  • 中间表示层IR。如何对IR中间表示层进行扩展开发?
  • 后端适配。如何在LLVM中为特定CPU架构实现一个后端?
  • lld链接器。如何为特定CPU架构进行链接器lld适配?
  • 加载器。基于ELF实现加载器的功能流程是怎样的?
  • TableGen。基于TableGen的公共前端,如何实现自定义后端和编译工具?

在这里插入图片描述

本书亮点:

对LLVM主干编译流程涉及的9种代码形态的介绍:源码、词素流Token Stream、抽象语法树AST、中间表示层IR、指令选择图SelectionDAG、机器代码Machine-IR、机器代码MC、目标文件ELF Relocatable、ELF可加载文件EXE和DSO。

对TableGen、IR、Pass这些LLVM编译流程实现所基于骨干支撑技术,依次进行详解。

多案例,涵盖TableGen和IR语言的诸多案例、TableGen二次开发、IR多种二次开发、clang多种二次开发、后端适配、链接器适配等等。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

书中插图下载地址

书籍实际印刷为黑白印刷,书中插图彩图开放下载。GitHub下载地址:

https://github.com/framer0116/llvm-coding-guide-book
目录信息

在这里插入图片描述
在这里插入图片描述

淘宝、京东有售

搜索 “LLVM编译器开发指南
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值