写点什么

ArkCompiler 开发

作者:坚果
  • 2023-04-23
    广东
  • 本文字数:1295 字

    阅读完需:约 4 分钟

ArkCompiler开发

ArkCompiler 开发

作者:坚果

团队:坚果派

公众号:“大前端之旅”

润开鸿技术专家,华为 HDE,InfoQ 签约作者,OpenHarmony 布道师,擅长 HarmonyOS 应用开发、熟悉服务卡片开发,在“战码先锋”活动中作为大队长,累计培养三个小队长,带领 100+队员完成 Pr 的提交合入。

欢迎通过主页或者私信联系我,加入坚果派,一起学习 OpenHarmony/HarmonyOS 应用开发。

概述

ArkCompiler 是一种统一编程平台,包含编译器、工具链、运行时等关键部件,支持高级语言在多种芯片的编译与运行,并支撑应用和服务运行在手机、个人电脑、平板、电视、汽车和智能穿戴等多种设备上的需求。


ArkCompiler 会把 ArkTS/TS/JS 编译为方舟字节码,运行时直接运行方舟字节码。并且 ArkCompiler 使用多种混淆技术提供更高强度的混淆与保护,使得 HarmonyOS 应用包中装载的是多重混淆后的字节码,有效提高了应用代码安全的强度。


ArkCompiler 运行时在 HarmonyOS 上提供了 Worker API 支持并发编程。在运行时实例内存隔离的基础上,ArkCompiler 通过共享运行实例中的不可变或者不易变的对象、内建代码块、方法字节码等技术手段,优化了并发运行实例的启动性能和内存开销。


ArkCompiler 利用 ArkTS 的静态类型信息,进行类型推导并生成对象描述和内联缓存,加速运行时对字节码的解释执行;AOT(Ahead-of-Time)Compiler 利用静态类型信息直接将字节码编译生成优化机器码,让应用启动即可运行高性能代码,提升应用启动和运行性能。

编译环境配置

1.安装依赖工具。


sudo apt-get update && sudo apt-get install python ruby python3-pip git-lfs gcc-multilib g++-multilib zlib1g-dev libc++1 curl nodejs
复制代码


2.安装 repo 工具。


mkdir ~/bin/curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repochmod a+x ~/bin/repoexport PATH=~/bin:$PATHpip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
复制代码


3.下载源码。


repo init -u https://gitee.com/ark-standalone-build/manifest.git -b masterrepo sync -c -j8repo forall -c 'git lfs pull'
复制代码


4.安装编译器及二进制工具。


./prebuilts_download.sh
复制代码

开发步骤

1.生成编译产物 ark_js_vm 及 ts2panda。


python ark.py x64.release
复制代码


  • ark_js_vm:运行 abc 文件的可执行程序。

  • ts2panda:将 ArkTS 文件转换生成 ArkCompiler 字节码文件的工具。


2.使用 ts2panda 将 TypeScript 文件转换为 abc 文件。


prebuilts/build-tools/common/nodejs/node-v12.18.4-linux-x64/bin/node --expose-gc out/x64.release/clang_x64/obj/arkcompiler/ets_frontend/ts2panda/build/src/index.js helloworld.ts --opt-level 0
复制代码


TypeScript 用例文件 helloworld.ts 源码。


declare function print(arg:any):string;print("Hello world!");
复制代码


3.执行生成的 abc 文件。


out/x64.release/clang_x64/arkcompiler/ets_runtime/ark_js_vm helloworld.abc
复制代码


abc 文件:ArkCompiler 字节码文件。


执行结果:


Hello world!
复制代码

执行 Test262 测试套

python ark.py x64.release test262
复制代码

编译选项

编译模式选择,如在 x64 平台构建 debug 版本。


python ark.py x64.debug
复制代码


获取更多编译说明。


python ark.py --help
复制代码


compileruntime/sig-compile-runtime.md

发布于: 刚刚阅读数: 3
用户头像

坚果

关注

此间若无火炬,我便是唯一的光 2020-10-25 加入

公众号:“大前端之旅”,OpenHarmony布道师,润和软件鸿蒙KOL,InfoQ签约作者,电子发烧友鸿蒙KOL

评论

发布
暂无评论
ArkCompiler开发_OpenHarmony_坚果_InfoQ写作社区