关联阅读:
1、方舟编译器学习笔记: 源码编译
2、方舟编译器学习笔记:方舟可执行文件简介
方舟编译器源码放出来之后,大家热情高涨,很多人摩拳擦掌的准备下手好好研究一番。但是因为这次开源的并不是全部文档和代码,所以很容易让人疑惑,在这里就对本次开源的几个文档做个简单的介绍,方便初学者熟悉。
本次开源出来的文档共有8个:
1、Compiler_Phase_Descriptions.md,
2、Developer_Guide.md,
3、Devlopment_Preparation.md,
4、MapleIRDesign.md,
5、Naïve_RC_Insertion_Description.md,
6、Programming_Specifications.md,
7、RC_API.md,
8、Vtable_Itable_Description.md。
还有一个文档中用到的图片的目录media。

我们将这几个文档分类介绍:
第一类,配置环境并编译代码的文档。这一类文档有2(Developer_Guide.md)和3(Devlopment_Preparation.md)。3讲编译前的环境配置,2讲编译的步骤。
第二类:中端(IR)及其优化的文档。这一类文档有1(Compiler_Phase_Descriptions.md)和4(MapleIRDesign.md)。4是介绍方舟的IR maple设计的文档,1是介绍基于中端IR做优化的phase的文档。IR的设计文档,是这次开源的最重要的文档,是重中之重。而这次开源本身就以IR为主,所以它就是这批开源的文档之中最重要的文档,没有之一。这里的phase很像基于LLVM IR做分和优化的pass,都是有Manager类来管理,都是做分析优化,然后都是要重载核心的run函数。
第三类:引用计数的文档。这类文档有5(Naïve_RC_Insertion_Description.md)和7(RC_API.md)。前者介绍了朴素版RC插入原理,方便理解朴素版本的RC如何进行插入;后者则是介绍了方舟编译器的引用计数的API,直接给出了API的列表。
第四类:编码规范。这类文档有6(Programming_Specifications.md)。程序员都知道这类文档是做什么用的。我们一时半会也没办法给方舟大量的提交代码,所以这个编码规范知道就好了,暂时也没必要花太多的时间去研究它。
第五类:虚函数表和接口函数表文档。这类文档有8(Vtable_Itable_Description.md),该文档就是介绍方舟编译器的虚函数表以及接口函数表的设计。
所以我们再回头去看这五类文档:
1、 第一类(配置和编译文档)和第四类(编码规范),都是简单翻翻就好了,不需要花太大的精力。第一类(配置和编译文档)编译完代码就不用看了,第四类(编码规范)需要提交代码的时候再细细研究也不迟。
2、 第三类(引用计数)和第五类(虚函数表和接口函数表)都是部分性功能,对这部分功能感兴趣,或者是用到这部分的时候,可以仔细研究研究。
3、 第二类(IR及相关优化),这部分的文档是框架级别的,直接关系到IR的设计以及之上的分析和优化,也是这次发布的核心,这次发布的代码也是以这块为主的,所以这类里的两个文档是需要结合代码好好读的。
最后,综合而言,这次发布最重要的文档,最需要花费精力好好研究一下的文档,必然是IR的设计文档:MapleIRDesign.md。想要好好研究方舟编译器的同学,不可错过该文档。
后记:一家之言,啰里啰嗦,欢迎大家赐教。
————————————————————
本文转自知乎,作者:小乖他爹
原链接:






































苏公安网备 32011402010933号