自方舟编程体系开源以来,已经发布了编译器、引擎和调试器,在语言上支持Java和C语言的编译(JavaScript编译及执行也计划近期开源),在体系结构上已经开源的部分支持ARM体系。本次发布的主要特性是对RISC-V后端的支持。RISC-V是现在最活跃的开源体系结构,在国内拥有非常多的厂商及开发者支持。
代码链接地址:https://gitee.com/openarkcompiler-incubator/mapleall
目前,方舟编译器可以在RISC-V的QEMU模拟器以及真实硬件设备上成功运行CPU2017的C程序。
如果说以前Java和C程序编译的发布证明了方舟编译器的语言无关性,那么这次发布展示了方舟编译器的平台无关性,为实现方舟编程体系的跨语言、跨平台、统一IR的模式打下基础。
本次发布后端主要包括功能相关的基本模块,如指令选择,寄存器分配和栈布局以及ABI支持,这基本上是方舟编译器后端移植工作的最小集。其中对指令集的描述方法,即机器模型部分,暂时没有把流行的DSL机器模型语言当做第一优先级,原因是后端移植难度主要在于重构优化。然而DSL的确可以降低一部分移植的成本,所以希望下一步跟社区合作构建这部分能力。
后续社区会着重针对后端差异化最大的优化框架方面做补强,包括扩展基本块优化,指令流优化以及指令调度等等。作为精简指令集合的典型代表,可以预见到大部分的RISC-V相关后端优化都有可能被更多后端重用,所以社区计划基于此构建兼容性更好的优化框架,在为新体系结构移植构建工程示范的同时减少后续新体系结构移植的开销。
RISC-V的意义非常重大,为国产基础软件体系结构的发展提供了重要的参考价值。以此为契机,方舟社区希望和更多的开发者一起在编译领域走出一条有自身特色的技术路线。
蒋奕、叶寒栋 于2020年11月
开源方舟编译器微信公众号
微信号:openarkcompiler
功能介绍:方舟编译器是为支持多种编程语言、多种芯片平台的联合编译、运行而设计的统一编程平台