您好,欢迎光临本网站![请登录][注册会员]  
文件名称: 华为方舟编译器开发文档.pdf
  所属分类: Java
  开发工具:
  文件大小: 1mb
  下载次数: 0
  上传时间: 2019-09-01
  提 供 者: weixin_********
 详细说明:方舟编译器是为支持多种编程语言、多种芯片平台的联合编译、运行而设计的统一编程平台,包含编译器、工具链、运行时等关键部件。 方舟编译器还在持续演进中,陆续将上述能力实现和开源。致谢 致谢 当前文档《华为方舟编译器开发文档》由进击的皇虫使用书栈( Bookstack.CN)进行构建,生成于 2019-08-31。 书栈(Bσ okstack,CN)仅提供文档编写、整理、归类等功能,以及对文档内容的生成和导出工具。 文档內容由网友们编写和整理,书栈( Bookstack.CN)难以确认文档内容知识点是否错漏。如果您在阅读文档 获取知识的时候,发现文档內容有不恰当的地方,请向我们反馈,让我们共同携手,将知识准确、高效且有效地传递 给每一个人。 同时,如果您在日常工作、生活和学习中遇到有价值有营养的知识文档,欢迎分享到书栈( Bookstack,CN), 为知识的传承献上您的一份力量! 如果当前文档生成时间太久,请到书栈( Bookstack.CN)获取最新的文档,以跟上知识更新换代的步伐。 内容来源:华为htps://ww, openarkcompiler.cn/ document/ frameworkDesgin 文档地址:http://www.bookstackcn/books/openarkcompiler 书栈官网:htp://w. bookstack.cn 书栈开源:https://github.com/truthhun 分享,让知识传承更久远!感谢知识的创造者,感谢知识的分享者,也感谢每一位阅读到此处的读者,因为我们 都将成为知识的传承者。 本文档使用书栈( Bookstack. CN)构建 架构设计 架构设计 方舟编译器架构示意图 编译器输入 编译器处理 编译器输出 语言运 进制 行时库 Java/koin程序 文件 方舟R 语言特性实现 转换器 方舟 优化及代码生 可执行 成 文件 因 编译器 其它编程语言 运行时 基础依 赖库 方舟编译器架构示意图 当前方舟编译器支持Java/Kot1in程序字节码的前端输入,其它编程语言的支持(如C/C++/JS等)还在规划中 方舟编译器的中间表示〔IR)转换器将前端输入转换成方舟工R,并输送给后端的优化器,最终生成二进制文件,二进 制文件与编译器运行时库文件链接生成可执行文件,在方舟的运行环境中就可执行该文件 方舟编译器IR是攴持程序编译和运行的中间程序表示。程序源代码中的仼何信息对于程序分析和优化都是有帮助的, 所以方舟IR的目标是尽可能完整详细地提供源程序的信息。关于方舟编译器IR的详细信息,请参考文档:方舟IR设计 方舟编译器开源范围请参考这里 本文档使用书栈( Bookstack. CN)构建 环境配置 环境配置 硬件推荐配置 2GHz双核处理器或者更高等级CPU ·2GB系统内存及以上 200GB可用磁盘空间 开发环境推荐 您需要安装一个64位版本的 lUbuntu(推荐 Ubuntu16,04) udo apt-get -y install openjdk-8-jdk git-core gnupg flex bison gperf build-essential zip curl zliblg-dev libc6-dev-1386 l1b32ncurses5-dev xllproto-core-dev libxll-dev 11b32Z-dev ccache libgll-mesa-dev libxm12-utils xsltproc unzip lib32Z1-dev gemu g++-multilib gcc-multilib python 3- paramiko python-paramiko python- jenkins 1. python -requests python-xlwt libglib2 0-dey libpixman-1-dev linux-libc -dev: 1386 lo ap y install gcc-5 gnu g++-5-aarch64-1 g 安装 clang编译器并完成配置(用于编译方舟编译器代码) N#clang+llvm-80.0-8664-linux-gnu-ubuntu-1604 LLWM下载地址.http://releases.llvm.org/download.htm1#8.0.0 放置到 openarkcompiler/too1s目录,打开 openarkcompiler/build/ config/ BUILDCONFIG.gn文件, 将 N C COMPILER、 N CXX COMPIlεR和、NAR三^变量配置为 clang编译器所在路径,例如: 1.GN_CCOMPILER="$(MAPLE_ROOT/tools/clang_llvm-8..0-x8664-linux-gnu-ubuntu-1604/bin/clang 2. GN_CXX_COMPILER="$MAPLE_ROOT]/tools/clang_llvm-80.0-x86_64-linux-gnu-uhuntu-1604/bin/clang++ 3. GN_AR ="SMAPLE_ROOT]/tools/clang_llvm-80.0-x86-_64-linux-gnu-uhuntu-1604/bin/1lvm-ar 其中${ MAPLE R00T}为 openarkcompiler源码根目录。 安装 Ninja、GN并完成配置 下载Ninja(v1.9.0)及GN(LinuxVersion)Ninja下载地址:https://github.com/ninja- build/ninja/releases GN下载地 te:https://archive.softwareheritage.org/browse/content/sha1_git:2dcod5b26caef44f467de8 120b26f8aad8b878be/raw/?filename=gn 将GN和 Ninja可执行程序放置到 openar compiler/too1s目录,打开 openarkcompiler/ Makefile文件,将GN 和 NINJAI两个变量配置为GN和 Ninja可执行程序所在路径。例如 本文档使用书栈( Bookstack. CN)构建 环境配置 1, GN =$MAPLE_ROOT/tools/gn/gn IINJA :=$MAPLE_ROOT/tools/ninja_1.9.0/ninja 本文档使用书栈( Bookstack. CN)构建 开发指南 开发者指南 通过参考本文档,您可以下载编译器源码编译出 openEr compiler。 请先按照环境配置文档完成您的开发环境准备 本文档使用书栈( Bookstack. CN)构建 源码编译 源码编译 源码下载 下载地址:https://code.opensourcehuaweicloud.com/harmonyos/Openarkcompiler/home可以通 过 Clone or download的方式下载 openar compiler源码 注:默认源码下载目录为 openarkcompiler 源码编译 在 openar compiler目录下执行以下命令,编译出 openArkCompiler,默认输出路径 openarkcompiler/out/bino 1. source build/envsetup sh 2. make 命令说明: source build/ envsetup.sh初始化环境,将 OpenArkCompiler工具链路径 openarkcompiler/src/bin设置 到环境变量中 ·make编译0 penAr compiler的 Release版本 make BUILD TYPE=DEBug编译0 penArkCompiler的 Debug版本 本文档使用书栈( Bookstack. CN)构建 编程规范 编程规范 目的 规则并不是完美的,通过禁止在特定情况下有用的特性,可能会对代码实现造成影响。但是我们制定规则的目的“为了 大多数程序员可以得到更多的好处″,如果在团队运作中认为某个规则无法遵循,希望可以共同改进该规则。 参考该规范之前,希望您具有相应的C艹+基础能力,而不是通过该文档来学习C+十。 了解C++的IS0标准; ·熟知C++的基本语言特性,包括C++03/11/14/17相关特性; 了解C++的标准库; 重点关注 ·约定C++的编程风格,比如命名,排版等。 C++的模块化设计,如何设计头文件,类,接口和函数。 C艹+相关特性的优秀实践,比如常量,类型转换,资源管理,模板等。 现代C艹的优秀实践,包括C++11/14/17中可以提高代码可维护性,提高代码可靠性的相关约定。 约定 规则:编程时必须遵守的约定(must) 建议:编程时应该遵守的约定(shou1d) 本规范适用通用C++标准,如果没有特定的标准版本,适用所有的版本(C++03/11/14/17)。 例外 无论是规则'还是'建议',都必须理解该条目这么规定的原因,并努力遵守。但是,有些规则和建议可能会有例外。 在不违背总体原则,经过充分考虑,有充足的理由的前提下,可以适当违背规范中约定。例外破坏了代码的一致性, 请尽量避免。"规则的例外应该是极少的。 下列情况,应凤格一致性原则优先:修改外部开源代码、第三方代码时,应该遵守开源代码、第三方代码已有规范 保持风格统一。*某些特定领域,优先参考其行业规范。** 本文档使用书栈( Bookstack. CN)构建 原 原贝 好代码的原则 我们参考 Kent beck的简单设计四原则来指导我们的如何写出优秀的代码,如何有效地判断我们的代码是优秀的。 ·通过所有测试( Passes its tests) ·尽可能消除重复( Minimizes duplication) 尽可能清晰表达( Maximizes clarity) 更少代码元素( Has fewer elements) 以上四个原则的重要程度依次降低。这组定义被称做简单设计原则。第一条强调的是外部需求,这是代码实现最 重要的;第二点就是代码的模块架构设计,保证代码的正交性,保证代码更容易修改;第三点是代码的可阅读 性,保证代码是容易阅读的;最后一点才是保证代码是简洁的,在简洁和表达力之间,我们更看重表达力。 类和函数设计指导原则 C艹+是典型的面向对象编程语言,软件工程界已经有很多00P原则来指导我们编写大规模的,高可扩展的,可维护性的 代码: 高内聚,低耦合的基本原则 · SOLID原则 ●迪米特法则 “Te11,Don"task"原则 组合/聚合复用原则 保证静态类型安全 我们希望C艹++应该是静态类型安全的,这样可以减少运行时的错误,提高代码的健壮性。但是由于C++的下面的特性存 在,会破坏C++静态类型安全,我们针对这部分特性要仔细处理。 unions联合体 ●类型转换cast ·缩窄转换 nar rowing conversions ·类型退化 type decay ·范围错误 range errors void*类型指针我们可以通过约束这些特性的使用,或者使用C++的新特性,比如 variant(C++17),GSL的 span, narrow_cast等来解决这些问题,提高C++代码的健壮性。 遵循C++ISO标准 希望通过使用Is0C+标准的特性来编写C艹+代码,对于IS0标准中未定乂的或者编译器实现的特性要谨慎使用,对于 GCC等编译器的提供的扩展特性也需要谨慎使用,这些特性会导致代码的可移植性比较差。 注意:如果模块中需要使用相关的扩展特性来,那么尽可能将这些特性封装成独立的接口,并且可以通过编译选项关 闭或者编译这岀特性。对于这些扩展特性旳使用,请模埉制定特性编程指南来指导这些特性旳使用。 本文档使用书栈( Bookstack. CN)构建
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 输入关键字,在本站1000多万海量源码库中尽情搜索: