0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

华为方舟编译器正式支持C语言,将继续完全开源

如意 来源:快科技 作者:上方文Q 2020-10-14 17:38 次阅读

2019年8月底,华为方舟编译器(OpenArkCompiler)正式开源,迈出了跨越性的一步。

一年多来,方舟编程体系陆续实现了编译器、引擎、调试器的开源,其中编译器的重点功能主要集中在Java应用程序静态编译上。

华为强调,方舟项目的目标是构建一个基于MapleIR的跨语言编程环境,实现跨语言的全局分析及优化。

比如在现有Java编程环境下面,开发者经常需要同时编写Java、C语言程序,通过JNI相互调用,而这两种语言之间目前是不直接互通的。

方舟编程体系的终极愿景之一,就是要通过一致的IR来表述不同语言,并跨越语言进行全局优化。

现在,方舟编译器加入了对C语言程序的支持,当然继续开源,也是实现Java和C混合编译的基础。

未来,方舟引擎不仅要对来自Java语言的IR代码进行JIT编译,也会支持对C、C++语言的IR代码进行JIT编译。

代码链接地址:

1、https://gitee.com/openarkcompiler-incubator/mapleall

2、https://gitee.com/openarkcompiler-incubator/maple_engine

本次开源内容主要限于O0的能力范围,针对C的O2以上的优化留待未来进一步开源。

目前,方舟编译器已经支持C语言的绝大部分常用特性,暂不支持的特性有complex类型、packedstruct、long double、alloca out-of-scope free。

当前支持aarch64后端,并支持绝大部分gcc_torture用例,比如配合一款第三方合作的C前端(开源时间待定),可以正确运行spec2017的所有C语言整型用例。

下一步,方舟社区计划在Maple编译器上做更多的拓宽和深耕工作。

广度上,一方面会尝试支持新的语言,进一步验证Maple基础平台的语言无关性,另一方面会增加对新后端如RISC-V的支持。

深度上,社区会尽快开源O2分析与优化phase,性能对标LLVM/GCC,同时利用统一的Maple表示,布局跨语言全局优化。

正式开源以来,方舟社区开源代码从50K增长到170K,累计6.9K Star,并孵化5个相关子项目。

方舟编译器作为方舟编程体系的重要一环,目前展现的还只是是静态编译,未来随着方舟引擎的完备,可以看到方舟编译器在各种AOT或者JIT编译时的运用,以及众多依赖于编译分析的软件分析和优化工具。
责编AJX

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 华为
    +关注

    关注

    215

    文章

    34246

    浏览量

    250930
  • C语言
    +关注

    关注

    180

    文章

    7591

    浏览量

    135788
  • 编译器
    +关注

    关注

    1

    文章

    1616

    浏览量

    49010
  • 方舟编译器
    +关注

    关注

    0

    文章

    60

    浏览量

    181
收藏 人收藏

    评论

    相关推荐

    ARM优化C/C++编译器 v20.2.0.LTS

    电子发烧友网站提供《ARM优化C/C++编译器 v20.2.0.LTS.pdf》资料免费下载
    发表于 11-07 10:46 0次下载
    ARM优化<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++<b class='flag-5'>编译器</b> v20.2.0.LTS

    TMS320C6000优化C/C++编译器v8.3.x

    电子发烧友网站提供《TMS320C6000优化C/C++编译器v8.3.x.pdf》资料免费下载
    发表于 11-01 09:35 0次下载
    TMS320<b class='flag-5'>C</b>6000优化<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++<b class='flag-5'>编译器</b>v8.3.x

    C7000优化C/C++编译器

    电子发烧友网站提供《C7000优化C/C++编译器.pdf》资料免费下载
    发表于 10-30 09:45 0次下载
    <b class='flag-5'>C</b>7000优化<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++<b class='flag-5'>编译器</b>

    浅谈RISC-C C Intrinsic的发展情况

    对大型数据集的单个指令流计算。 ## RISC-V C Intrinsic 支持情况 1. 支持编译器:RISC-V C Intrinsi
    发表于 10-16 16:55

    常用编辑之GCC编译器

    GCC(GNU Compiler Collection)是由GNU开发的编程语言编译器,最初是作为GNU操作系统的编译器编写的。GCC是一个编译器套件,包含很多软件包,
    发表于 08-24 11:05

    AI编译器技术剖析

    随着人工智能技术的飞速发展,AI编译器作为一种新兴的编译技术逐渐进入人们的视野。AI编译器不仅具备传统编译器的功能,如高级
    的头像 发表于 07-17 18:28 1395次阅读

    人工智能编译器与传统编译器的区别

    人工智能编译器(AI编译器)与传统编译器在多个方面存在显著的差异。这些差异主要体现在设计目标、功能特性、优化策略、适用范围以及技术复杂性等方面。以下是对两者区别的详细探讨,旨在全面解析其内在差异。
    的头像 发表于 07-17 18:19 1595次阅读

    SEGGER编译器优化和安全技术介绍 支持最新CC++语言

    SEGGER编译器是专门为ARM和RISC-V微控制设计的优化C/C++编译器。它建立在强大的Clang前端上,
    的头像 发表于 06-04 15:31 1351次阅读
    SEGGER<b class='flag-5'>编译器</b>优化和安全技术介绍 <b class='flag-5'>支持</b>最新<b class='flag-5'>C</b>和<b class='flag-5'>C</b>++<b class='flag-5'>语言</b>

    C语言:嵌入式开发中的关键编译器角色

    嵌入式程序开发跟硬件密切相关,需要使用C语言来读写底层寄存、存取数据、控制硬件等,C语言和硬件之间由
    发表于 04-26 14:53 504次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>:嵌入式开发中的关键<b class='flag-5'>编译器</b>角色

    C语言#define的应用

    C/C++ 编程语言中,当程序被编译时,被发送到编译器编译器
    发表于 03-06 11:29 331次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>#define的应用

    RX系列V3.06.00的C/C++编译器包数据手册

    电子发烧友网站提供《RX系列V3.06.00的C/C++编译器包数据手册.pdf》资料免费下载
    发表于 01-26 15:57 1次下载
    RX系列V3.06.00的<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++<b class='flag-5'>编译器</b>包数据手册

    Triton编译器的原理和性能

    Triton是一种用于编写高效自定义深度学习原语的语言编译器。Triton的目的是提供一个开源环境,以比CUDA更高的生产力编写快速代码,但也比其他现有DSL具有更大的灵活性。Triton已被采用
    的头像 发表于 12-16 11:22 2630次阅读
    Triton<b class='flag-5'>编译器</b>的原理和性能

    TVM编译器的整体架构和基本方法

    有将近两个月没有学习一些新东西,更新一下博客了。一直在忙公司的一个项目,是做一款支持LSTM和RNN的通用架构加速IP。自己恰好负责指令编译工作,虽然开始的指令比较粗糙,没有一套完整的编译器架构
    的头像 发表于 11-30 09:36 2211次阅读
    TVM<b class='flag-5'>编译器</b>的整体架构和基本方法

    为什么C语言要进行编译

    为什么我们编写的C语言要进行编译?什么是编译编译时发生了什么? 机器无法理解我们编写的C
    的头像 发表于 11-24 15:47 1198次阅读
    为什么<b class='flag-5'>C</b><b class='flag-5'>语言</b>要进行<b class='flag-5'>编译</b>

    编译器的优化选项

    一个程序首先要保证正确性,在保证正确性的基础上,性能也是一个重要的考量。要编写高性能的程序,第一,必须选择合适的算法和数据结构;第二,应该编写编译器能够有效优化以转换成高效可执行代码的源代码,要做到
    的头像 发表于 11-24 15:37 834次阅读
    <b class='flag-5'>编译器</b>的优化选项