栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

软件工程作业-方舟编译器学习笔记01-认识phase

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

软件工程作业-方舟编译器学习笔记01-认识phase

上一篇是分析方舟编译器的准备阶段,这一篇开始正式开扒。
吃饭的时候看到了一篇非常好的博客↓
https://www.zhihu.com/column/c_1187372958643941376
答主ID:小菜叔叔开方舟
看着那么多代码属实不知道从哪里下手,但是看了这个知乎er的专栏感觉有思路了不少(虽然这个大大写的也比较随性,可读性不太连贯)。
简单讲讲程序通过编译器的过程。首先是编译器的前端,包括但不限于词法、句法的分析;然后是后端,包括指令的生成和优化。过一遍这几个“PHASE”后优化过的代码就是方舟编译器的结果。图片来自知乎答主ID:小乖他爹
phase是方舟编译器里的一个独创概念,原意是阶段,时期,段落,这里应该理解为过程步骤的意思。MAPLE IR 就是由一个个的PHASE组成的优化模块。
翻看编译器源码,src/maple_phase源码目录中phase.h、phase_impl.h和phase_manager.h三个类都只有头文件,其他两个都有比较具体的代码。phase中有ModulePhase和MeFuncPhase两个大类,很多小类,包含很多优化模型和方法。
module_phases.def & me_phases.def 这两个文件里记录了所有优化方法,用于管理需要注册的phase方法。
以下摘自小乖他爹的博客《方舟编译器学习笔记12 方舟编译器的phase》↓↓
PhaseManager负责phase的创建、管理和运行。
ModulePhase和MeFuncPhase都有对应的Manager类,分别是ModulePhaseManager和MeFuncPhaseManager。
ModulePhaseManager和MeFuncPhaseManager都是PhaseManager类的子类。
ModulePhaseManager的具体代码在
src/maple_ipa/include/module_phase_manager.h
和src/maple_ipa/src/module_phase_manager.cpp
MeFuncPhaseManager的具体代码在
src/maple_me/include/me_phase_manager.h
和src/maple_me/src/me_phase_manager.cpp。
phase的Manager类主要是通过InterleavedManager来创建、管理和运行。
InterleavedManager的源码在src/maple_ipa/include/interleaved_manager.h和src/maple_ipa/src/interleaved_manager.cpp。
所以,总结一下就是InterleavedManager负责phase manager的创建、管理和运行;PhaseManager负责phase的创建、管理和运行。这是一个三级管理机制。
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
这就是三个类与子类之间的关系。蓝色直线带箭头是子类对父类的继承关系;红色折线带箭头是管理关系,箭头指向被管理者(在代码里体现的就是对其具体的对象的调用)。
下一篇继续分析phase类,因为phase体系是基于MAPLE IR进行优化和转换工作的一个模块,跟我的学习重点息息相关。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/307768.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号