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

    文章

    33610

    浏览量

    247132
  • C语言
    +关注

    关注

    180

    文章

    7528

    浏览量

    128433
  • 编译器
    +关注

    关注

    1

    文章

    1576

    浏览量

    48606
  • 方舟编译器
    +关注

    关注

    0

    文章

    60

    浏览量

    156
收藏 人收藏

    评论

    相关推荐

    求助,如何C++代码从GNU移植到Tasking编译器

    使用了使用任务编译器的 Aurix Development Studio IDE。 在代码从 GNU 编译器移植到 TASKING 编译器的过程中,标准定义库存在多个问题(
    发表于 01-31 07:29

    嵌入式开发中的C语言编译器设置

    编译器的语义检查很弱小,甚至还会“掩盖”错误。现代的编译器设计是件浩瀚的工程,为了让编译器设计简单一些,目前几乎所有编译器的语义检查都比较弱小。为了获得更快的执行效率,C
    发表于 10-11 12:43 277次阅读

    OpenHarmony 的js引擎用的是方舟编译器

    OpenHarmony 的js引擎用的是方舟编译器吗?方舟编译器不是用来编译吗?
    发表于 10-09 09:32

    C语言编译器代码优化及volatile详解 - 第14节 #硬声创作季

    函数代码c语言编译器
    充八万
    发布于 :2023年09月01日 13:32:35

    如何安装ARM编译器Linux版

    本教程介绍如何下载、安装、设置您的环境,以及如何开始使用ARM编译器for Linux。 ARM编译器Linux版软件包包括ARM C/C++编译器
    发表于 08-28 06:45

    RealView编译工具4.0版编译器参考指南

    编译器有几种模式,在这些模式中,要么强制遵守源语言,要么放松遵守: 严格模式在严格模式下,编译器强制遵守与源语言相关的语言标准。 例如,使用
    发表于 08-18 06:13

    某种编程语言的第一个编译器是怎么来的呢?

    不知道你有没有想过,某种编程语言的第一个编译器是怎么来的呢?这不就是“鸡生蛋,蛋生鸡”的问题吗?
    的头像 发表于 08-14 09:31 523次阅读
    某种编程<b class='flag-5'>语言</b>的第一个<b class='flag-5'>编译器</b>是怎么来的呢?

    RealView用于BREW编译器和库的编译工具指南

    99的一些功能,如Long Long,也是可用的。 ARM C++编译器期望C++符合国际标准化组织/国际电工委员会14822:1998年的C++国际标准。 有关ARM
    发表于 08-12 07:38

    循环模型编译器Verilog和System Verilog语言支持指南

    本节介绍循环模型编译器响应不受支持或被忽略的构造的行为。 一般而言,Cycle Model Compiler支持Verilog和SystemVerilog语言的大部分可合成子集。 如果
    发表于 08-12 06:55

    Arm C/C++编译器22.1版开发人员和参考指南

    提供帮助您使用ARM®编译器Linux版的ARM®C/C++编译器组件的信息。 ARM®C/C+
    发表于 08-11 07:46

    如何Arm Neon C#内部函数与Unity Burst编译器一起使用

    本指南解释了如何Arm Neon C#内部函数与Unity Burst编译器一起使用,以提高Unity Android应用程序的性能。 在本指南结束时,您将了解到: •单指令多数据(SIMD)指令
    发表于 08-10 07:11

    编译原理:语言处理器、编译器的结构

    计算机是只认识二进制的,但是我们平常开发中根本不会使用二进制进行开发,我们使用的都是 Java、C 这类的高级语言,每种语言都会经过一系列的转换才能被计算机识别,那么到底是谁做的这项工作呢?一个被称为 编译器(compiler)
    发表于 08-09 09:52 194次阅读
    <b class='flag-5'>编译</b>原理:<b class='flag-5'>语言</b>处理器、<b class='flag-5'>编译器</b>的结构

    如何为Arm编译Cc++代码

    Studio或Keil MDK IDE环境中。 Linux编译常见的编程语言在Arm上得到了很好的支持,大多数开源工具都可以在Linux发行版提供的包中使用。用于
    发表于 08-02 17:28

    峰会回顾第6期 | 毕昇编译器与OpenHarmony RISC-V生态的进展

    设计经验,负责探索先进软硬件协同设计技术、工具以及方法。   文章内 容来 源 第一届开放原子开源基金会OpenHarmony技术峰会——开发者工具分论坛   视频回顾   正 文 内 容   由C、C++、Java等高级语言编码的人类可读源代码需要通过
    的头像 发表于 05-05 15:46 1127次阅读
    峰会回顾第6期 | 毕昇<b class='flag-5'>编译器</b>与OpenHarmony RISC-V生态的进展

    CC78K0R Ver.2.00 C语言编译器

    CC78K0R Ver.2.00 C语言编译器
    发表于 04-28 19:19 1次下载
    CC78K0R Ver.2.00 C<b class='flag-5'>语言</b><b class='flag-5'>编译器</b>