新書推薦:
《
虚弱的反攻:开禧北伐
》
售價:NT$
429.0
《
泰山:一种中国信仰专论(法国汉学经典译丛)
》
售價:NT$
380.0
《
花外集斠箋
》
售價:NT$
704.0
《
有兽焉.8
》
售價:NT$
305.0
《
大学问·明清经济史讲稿
》
售價:NT$
330.0
《
中国国际法年刊(2023)
》
售價:NT$
539.0
《
早点知道会幸福的那些事
》
售價:NT$
295.0
《
迈尔斯普通心理学
》
售價:NT$
760.0
編輯推薦:
编译器作为中国软件发展的关键环节,非常受重视。华为选择研发和开源方舟编译器,为国内的编译器发展起到了很大的推动作用。方舟编译器作为一个工业级的编译器,对于其进行研究和分析,将非常有利于推动国内编译器产业的发展。本书基于方舟编译器开源代码的V0.2.1版本,从方舟编译器的开源进程与前景谈起,覆盖了V0.2.1版本所开源的所有核心内容。在*后,还对如何参与方舟编译器社区的建设给出了指引。本书有助于读者对方舟编译器的学习和理解,推动方舟编译器的普及和发展。
內容簡介:
华为方舟编译器自面世以来,在业界乃至互联网科技圈引发了巨大的反响。作为一款国内研发的大型工业编译器,方舟编译器从一开始就承载了众多期望。方舟编译器开源之后,业界不少同仁开始分析方舟编译器的架构和实现,本书也是这时候开始编写的。 本书基于方舟编译器开源代码的V0.2.1版本,从方舟编译器的开源进程与前景谈起,介绍方舟编译器的构建、总体架构、IR设计、Maple IR的处理、Me体系、phase体系的设计与实现等内容,覆盖了V0.2.1版本所开源的所有核心内容。在*后,还对如何参与方舟编译器社区的建设给出了指引。 总体而言,本书既有对整体架构的分析,又有对整体架构实现以及重点内容代码实现的介绍,可以帮助读者快速的了解方舟编译器的开源代码,让读者更加方便的参与到方舟编译器的建设和使用之中。
關於作者:
史宁宁,中国科学院软件研究所智能软件研究中心PLCT实验室项目主管。吉林大学计算机学院硕士。2012年起作为核心开发人员和项目经理参与组织开发多个编译器项目。长期坚持撰写技术博客,其中LLVM每日谈方舟编译器学习笔记等系列影响较大,曾出版图书1部。目前活跃在HelloGCCHelloLLVM、方舟编译器等开源社区。
目錄 :
第1章 方舟编译器的前世今生00
1.1 方舟编译器的开源进程00
1.2 方舟编译器的前景00
第2章 方舟编译器的构建00
2.1 方舟编译器构建体系00
2.2 方舟编译器源码编译0
2.3 方舟编译器官方例子编译0
2.4 Toy runtime简介0
第3章 方舟编译器总体介绍0
3.1 方舟编译器的架构0
3.2 方舟编译器源码目录0
3.2.1 一级目录0
3.2.2 src目录介绍0
3.3 方舟编译器文档0
3.4 方舟编译器的执行流程0
第4章 中间表示0
4.1 IR简介0
4.2 三地址码0
4.3 SSA0
第5章 方舟编译器IR的设计与实现0
5.1 Maple IR设计的起源与思想0
5.2 Maple IR的结构0
5.3 Maple IR结构表示代码0
5.4 Maple IR中的基本类型的设计与实现0
5.4.1 基本类型的设计0
华为方舟编译器之美基于开源代码的架构分析与实现
5.4.2 Maple IR基本类型的实现0
5.5 Maple IR中的控制流语句的设计与实现0
5.5.1 控制流语句的设计0
5.5.2 控制流语句的实现0
第6章 方舟编译器IR与其他编译器IR的横向对比0
6.1 Maple IR与LLVM IR的对比0
6.1.1 Maple IR与LLVM IR的结构对比0
6.1.2 Maple IR与LLVM IR的类型对比0
6.1.3 Maple IR与LLVM IR中module层面的信息对比0
6.2 Maple IR与WHIRL IR的对比0
6.2.1 Maple IR与WHIRL IR的基本类型对比0
6.2.2 Maple IR与WHIRL IR的控制流语句对比0
第7章 Maple IR 的处理流程分析0
7.1 Maple IR的整体处理流程0
7.2 Maple IR的 build类0
7.3 Maple IR的符号表0
7.4 Maple IR的寄存器实现0
7.5 Maple IR的lower处理0
7.5.1 if语句的向下转换0
7.5.2 while和dowhile语句的向下转换0
7.5.3 doloop语句的向下转换
第8章 Me体系实现
8.1 MeFunction实现
8.2 MeCFG实现
8.3 BB实现
8.4 MeStmt实现
8.5 MeExpr实现
第9章 方舟编译器phase体系的设计与实现
9.1 phase体系的总体设计与实现
9.2 phase的注册与新增
9.3 phase的运行机制
9.4 ModulePhase的设计与实现
9.5 MeFuncPhase的设计与实现
9.6 DriverRunner的调用
第10章 phase实例分析
10.1 ModulePhase类phase的实现与运行
10.2 ModulePhase之classhierarchy分析
10.3 MeFuncPhase类phase的执行前准备
10.4 MeFuncPhase类的phase的返回分析
10.5 MeFuncPhase之dominance分析
10.6 MeFuncPhase之ssaTab分析
10.7 MeFuncPhase之ssa分析
第11章 如何参与方舟编译器社区
附录A方舟编程体系
参考文献
后记
內容試閱 :
方舟编译器自2019年4月出现在大家的视野之后,就引发了强烈关注。2019年8月31日,方舟编译器开始开源,大家对方舟编译器的关注达到了顶点。编译器行业的从业者、App开发者等相关从业者都保持了对方舟编译器的极大热情。笔者也是从2019年8月31日开始对方舟编译器保持持续关注。
方舟编译器开源之后,为了丰富方舟编译器的学习资料,方便更多相关行业从业者学习方舟编译器,我从2019年8月31日开始在知乎连载方舟编译器学习笔记系列博客。该系列博客保持每天至少更新一篇,连续更新了2个多月,累计更新70余篇。同时,我参与了方舟编译器社区的所有线上线下活动,积极跟踪方舟编译器社区的最新动态。在此基础上,对方舟编译器目前唯一的开源版本V0.2.1的代码进行了梳理,编写了这本《华为方舟编译器之美基于开源代码的架构分析与实现》。
阅读本书需要具备基本的编译原理知识,至少系统地阅读或学习过编译原理课程,了解编译器的基本环节和处理流程。同时,需要对业界主流编译器的大致情况有一个基本的了解。阅读本书并不需要遵循一定的顺序,可按照需要选取对应的章节进行阅读。
本书对V0.2.1版本开源代码整体情况进行了梳理和介绍。同时,抽取其中开源代码比较集中的IR框架部分,进行了详细的源码分析。其各章的主要内容如下:
第1章方舟编译器的前世今生,主要对方舟编译器的开源进程进行介绍,采用大事记的形式,记录开源过程中的重大事件节点。同时,还对方舟编译器的发展前景进行了展望。
第2章方舟编译器的构建,对方舟编译器所采用的三层构建体系及其运作流程做简要介绍,在此基础上,介绍方舟编译器源码及其sample的编译。
华为方舟编译器之美基于开源代码的架构分析与实现
前言
00
00
第3章方舟编译器总体介绍,对方舟编译器的架构、源码目录、官方文档和执行流程等几方面进行初步介绍,更详细的内容在后续对应章节进行讨论。
第4章中间表示,介绍三地址码和SSA等基本的中间表示基础理论,为后续的源码分析提供基本的理论知识。
第5章方舟编译器IR的设计与实现,从方舟编译器IR设计的思想起源入手,对Maple IR的结构及其代码实现、基本类型的设计与实现、控制流语句的设计与实现等方面进行分析。
第6章方舟编译器IR与其他编译器IR的横向对比,将Maple IR与LLVM IR、Open64的WHIRL IR进行IR设计层面的一些横向对比。
第7章Maple IR的处理流程分析,分析Maple IR的处理流程所涉及的lexer、parser、lower等环节,以及符号表的相关处理。
第8章Me体系实现,对Me体系中的相关结构及其实现进行分析。
第9章方舟编译器phase体系的设计与实现,对方舟编译器的整个phase体系从设计入手,对其注册、添加、调用,以及其两个类别ModulePhase、MeFuncPhase的设计与实现进行分析。
第10章phase实例分析,对ModulePhase的整体实现和运行情况及具体的classhierarchy进行分析。同时,对MeFuncPhase的执行前准备、返回,以及具体的dominance、ssaTab和SSA进行分析。
第11章如何参与方舟编译器社区,对如何参与方舟编译器社区的讨论及代码提交进行介绍。
另外,方舟编译器本身也在不断完善中,社区代码也在不断更新中,本书选取其中的V0.2.1版进行分析,但是依然可能会出现本书代码与实际代码不同的情况,在这种情况下请跟踪最新代码并获取最新信息。
史宁宁
2020年6月
本书源代码下载