目 录 致谢 架构设计 环境配置 开发指南 源码编译 编程规范 原则 命名 格式 注释 头文件 作用域 类 函数 C++其他特性 现代C++特性 如何贡献 文档贡献指南 代码贡献指南 邮件列表指南 FAQ 本文档使用 书栈(BookStack.CN) 构建 - 2 - 致谢 致谢 当前文档 《华为方舟编译器开发文档》 由 进击的皇虫 使用 书栈(BookStack.CN) 进行构建,生成于 2019-08-31。 书栈(BookStack.CN) 仅提供文档编写、整理、归类等功能,以及对文档内容的生成和导出工具。 文档内容由网友们编写和整理,书栈(BookStack.CN) 难以确认文档内容知识点是否错漏。如果您在阅读文档 获取知识的时候,发现文档内容有不恰当的地方,请向我们反馈,让我们共同携手,将知识准确、高效且有效地传递 给每一个人。 同时,如果您在日常工作、生活和学习中遇到有价值有营养的知识文档,欢迎分享到 书栈(BookStack.CN) , 为知识的传承献上您的一份力量! 如果当前文档生成时间太久,请到 书栈(BookStack.CN) 获取最新的文档,以跟上知识更新换代的步伐。 内容来源:华为 https://www.openarkcompiler.cn/document/frameworkDesgin 文档地址:http://www.bookstack.cn/books/openarkcompiler 书栈官网:http://www.bookstack.cn 书栈开源:https://github.com/TruthHun 分享,让知识传承更久远! 感谢知识的创造者,感谢知识的分享者,也感谢每一位阅读到此处的读者,因为我们 都将成为知识的传承者。 本文档使用 书栈(BookStack.CN) 构建 - 3 - 架构设计 架构设计 方舟编译器架构示意图 方舟编译器架构示意图 当前方舟编译器支持Java/Kotlin程序字节码的前端输入,其它编程语言的支持(如 C/C++/JS 等)还在规划中, 方舟编译器的中间表示(IR)转换器将前端输入转换成方舟IR,并输送给后端的优化器,最终生成二进制文件,二进 制文件与编译器运行时库文件链接生成可执行文件,在方舟的运行环境中就可执行该文件 方舟编译器IR是支持程序编译和运行的中间程序表示。程序源代码中的任何信息对于程序分析和优化都是有帮助的, 所以方舟IR的目标是尽可能完整详细地提供源程序的信息。关于方舟编译器IR的详细信息,请参考文档:方舟IR设计 方舟编译器开源范围请参考 这里 本文档使用 书栈(BookStack.CN) 构建 - 4 - 环境配置 环境配置 硬件推荐配置 2 GHz 双核处理器或者更高等级CPU 2 GB 系统内存及以上 200GB 可用磁盘空间 开发环境推荐 您需要安装一个64位版本的Ubuntu(推荐Ubuntu 16.04) sudo apt-get -y install openjdk-8-jdk git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip lib32z1-dev qemu g++-multilib gcc-multilib python3-paramiko python-paramiko python-jenkins 1. python-requests python-xlwt libglib2.0-dev libpixman-1-dev linux-libc-dev:i386 2. sudo apt-get -y install gcc-5-aarch64-linux-gnu g++-5-aarch64-linux-gnu 安装Clang编译器并完成配置(用于编译方舟编译器代码) 下载clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04 LLVM下载地址:http://releases.llvm.org/download.html#8.0.0 放置到 将 openarkcompiler/tools GN_C_COMPILER 、 目录,打开 GN_CXX_COMPILER 和 openarkcompiler/build/config/BUILDCONFIG.gn GN_AR 文件, 三个变量配置为Clang编译器所在路径,例如: 1. GN_C_COMPILER = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang" 2. GN_CXX_COMPILER = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang++" 3. GN_AR = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/llvm-ar" 其中${MAPLE_ROOT}为openarkcompiler源码根目录。 安装Ninja、GN并完成配置 下载Ninja(v1.9.0)及GN(Linux Version)Ninja下载地址:https://github.com/ninjabuild/ninja/releases GN下载地 址:https://archive.softwareheritage.org/browse/content/sha1_git:2dc0d5b26caef44f467de8 120b26f8aad8b878be/raw/?filename=gn 将GN和Ninja可执行程序放置到openarkcompiler/tools目录,打开openarkcompiler/Makefile文件,将GN 和NINJA两个变量配置为GN和Ninja可执行程序所在路径。例如: 本文档使用 书栈(BookStack.CN) 构建 - 5 - 环境配置 1. GN := ${MAPLE_ROOT}/tools/gn/gn 2. NINJA := ${MAPLE_ROOT}/tools/ninja_1.9.0/ninja 本文档使用 书栈(BookStack.CN) 构建 - 6 - 开发指南 开发者指南 通过参考本文档,您可以下载编译器源码编译出OpenArkCompiler。 请先按照 环境配置 文档完成您的开发环境准备。 本文档使用 书栈(BookStack.CN) 构建 - 7 - 源码编译 源码编译 源码下载 下载地址:https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler/home,可以通 过 Clone or Download 的方式下载openarkcompiler源码 注:默认源码下载目录为openarkcompiler 源码编译 在openarkcompiler目录下执行以下命令,编译出OpenArkCompiler,默认输出路径 openarkcompiler/out/bin。 1. source build/envsetup.sh 2. make 命令说明: source build/envsetup.sh 初始化环境,将OpenArkCompiler工具链路径openarkcompiler/src/bin设置 到环境变量中 make 编译OpenArkCompiler的Release版本 make BUILD_TYPE=DEBUG 编译OpenArkCompiler的Debug版本 本文档使用 书栈(BookStack.CN) 构建 - 8 - 编程规范 编程规范 目的 规则并不是完美的,通过禁止在特定情况下有用的特性,可能会对代码实现造成影响。但是我们制定规则的目的“为了 大多数程序员可以得到更多的好处”, 如果在团队运作中认为某个规则无法遵循,希望可以共同改进该规则。 参考该规范之前,希望您具有相应的C++基础能力,而不是通过该文档来学习C++。 了解C++的ISO标准; 熟知C++的基本语言特性,包括C++ 03/11/14/17相关特性; 了解C++的标准库; 重点关注 约定C++的编程风格,比如命名,排版等。 C++的模块化设计,如何设计头文件,类,接口和函数。 C++相关特性的优秀实践,比如常量,类型转换,资源管理,模板等。 现代C++的优秀实践,包括C++11/14/17中可以提高代码可维护性,提高代码可靠性的相关约定。 约定 规则:编程时必须遵守的约定(must) 建议:编程时应该遵守的约定(should) 本规范适用通用C++标准, 如果没有特定的标准版本,适用所有的版本(C++03/11/14/17)。 例外 无论是'规则'还是'建议',都必须理解该条目这么规定的原因,并努力遵守。但是,有些规则和建议可能会有例外。 在不违背总体原则,经过充分考虑,有充足的理由的前提下,可以适当违背规范中约定。例外破坏了代码的一致性, 请尽量避免。'规则'的例外应该是极少的。 下列情况,应风格一致性原则优先:修改外部开源代码、第三方代码时,应该遵守开源代码、第三方代码已有规范, 保持风格统一。**某些特定领域,优先参考其行业规范。** 本文档使用 书栈(BookStack.CN) 构建 - 9 - 原则 原则 好代码的原则 我们参考Kent Beck的简单设计四原则来指导我们的如何写出优秀的代码,如何有效地判断我们的代码是优秀的。 通过所有测试(Passes its tests) 尽可能消除重复 (Minimizes duplication) 尽可能清晰表达 (Maximizes clarity) 更少代码元素 (Has fewer elements) 以上四个原则的重要程度依次降低。这组定义被称做简单设计原则。第一条强调的是外部需求,这是代码实现最 重要的;第二点就是代码的模块架构设计,保证代码的正交性,保证代码更容易修改;第三点是代码的可阅读 性,保证代码是容易阅读的;最后一点才是保证代码是简洁的,在简洁

pdf文档 华为方舟编译器开发文档

编程开发 > 前端开发 > AngularJS > 文档预览
83 页 2 下载 305 浏览 0 评论 0 收藏 3.0分
温馨提示:当前文档最多只能预览 20 页,若文档总页数超出了 20 页,请下载原文档以浏览全部内容。
本文档由 进击的皇虫2019-09-25 21:27:58上传分享
给文档打分
您好可以输入 255 个字符
文库之家的网址是?( 答案:wenkuzhijia.cn )
评论列表
  • 暂时还没有评论,期待您的金玉良言