Go to file
xuxinjie4 1ed994c1c8 Support LiteralArrayValue in bytecode
Issue: https://gitee.com/openharmony/arkcompiler_runtime_core/issues/IAZUBL?from=project-issue

Description:
1. Support LiteralArrayValue in bytecode;
2. Support serializeFieldValue in disassembler

Signed-off-by: xuxinjie4 <xuxinjie4@huawei.com>
2024-11-16 14:20:29 +08:00
.gitee !2275 Detect abc version changes 2024-08-19 09:42:23 +00:00
abc2program !2736 Support inter-app hsp deps bytecode har 2024-11-08 02:43:13 +00:00
arkplatform Add runtime_core ut to GGW 2024-10-22 15:00:32 +08:00
assembler Es2abc compiled memory optimization 2024-11-01 10:43:51 +08:00
bytecode_optimizer Es2abc compiled memory optimization 2024-11-01 10:43:51 +08:00
cmake Update runtime_core code 2022-07-17 10:20:32 +08:00
compiler Separate abckit tests from clang tests 2024-10-29 21:18:43 +08:00
disassembler !2669 Fix the line number of debuginfo in release 2024-10-22 22:12:23 +00:00
docs Modify bytecode version 2024-09-15 14:11:55 +08:00
gn disable backward cfi for arkcompiler 2023-05-08 22:22:11 +08:00
isa Refactor verifier based on ruby 2024-10-10 22:40:53 +08:00
ldscripts Update runtime_core code 2022-07-17 10:20:32 +08:00
libabckit !2834 [abckit] Remove unused arg from visit api 2024-11-15 03:36:13 +00:00
libark_defect_scan_aux Handle compile build alerts 2024-10-10 17:42:48 +08:00
libpandabase Add runtime_core ut to GGW 2024-10-22 15:00:32 +08:00
libpandafile Add null pointer check for header 2024-11-11 11:25:53 +08:00
libziparchive Fix arkui-x compilation 2024-08-14 14:58:08 +08:00
panda Refactor the oversized functions of the non-test file 2024-05-30 11:05:47 +08:00
pandastdlib Update runtime_core code 2022-07-17 10:20:32 +08:00
platforms Add runtime_core ut to GGW 2024-10-22 15:00:32 +08:00
plugins/ecmascript/tests 5.0 component improvement 2024-03-30 20:33:23 +08:00
scripts Update runtime_core code 2022-07-17 10:20:32 +08:00
static_core Support LiteralArrayValue in bytecode 2024-11-16 14:20:29 +08:00
templates [abckit] Dev branch 2024-11-07 07:42:25 +01:00
tests !2305 Add size and datapac for securemem interface 2024-08-24 16:06:26 +00:00
verifier !2612 Add version compatibility test for verifier 2024-10-15 17:40:21 +00:00
.clang-format copyright update 2022-03-25 13:17:51 +03:00
.clang-tidy copyright update 2022-03-25 13:17:51 +03:00
.gitattributes Rename line_separators.ets to .sts 2024-08-07 01:33:17 +03:00
.gitignore [abckit] Init commit 2024-10-24 23:24:12 +02:00
.standalone_gn copyright update 2022-03-25 13:17:51 +03:00
ark_config.gni Enable PAC in Verifier SO 2024-09-13 16:40:29 +08:00
ark_root.gni adapt SDK on OpenHarmony 2024-08-27 03:55:58 +00:00
AUTHORS Update runtime_core code 2022-07-17 10:20:32 +08:00
BUILD.gn Remove release line test 2024-11-08 17:15:43 +08:00
bundle.json Fix ark_disasm crashing 2024-09-23 09:51:23 +08:00
CMakeLists.txt Update runtime_core code 2022-07-17 10:20:32 +08:00
codecheck_ignore.json Add codestyle checker ignores 2024-08-30 10:19:03 +03:00
CODEOWNERS Display codeowners for hidden folders and files 2024-08-15 12:42:24 +03:00
LICENSE Fix codecheck warnings 2022-08-01 10:18:19 +08:00
OAT.xml Support corss-file branch elimination 2024-04-29 20:49:14 +08:00
README_zh.md Update runtime core README docs 2024-05-14 20:20:58 +08:00
README.md Update runtime core README docs 2024-05-14 20:20:58 +08:00
static_vm_config.gni Separate abckit tests from clang tests 2024-10-29 21:18:43 +08:00

Runtime Core

Introduction

As a common module of language runtime in OpenHarmony, ArkCompiler Runtime Core consists of language-independent basic runtime libraries, including ArkCompiler File, Tooling, Base and ISA. ArkCompiler File provides bytecodes and information required for executing bytecodes. Tooling supports runtime debugger. Base is responsible for implementing platform related utilities. ISA provides common instruction set architecture that is language-independent.

Figure 1 ArkCompiler Runtime Core architecture diagram

ArkCompiler Runtime Core Arch

For more information, see: ARK Runtime Subsystem.

Directory Structure

├── assembler               # Assembler that converts an ARK bytecode file in text format (*.pa) into a bytecode file in binary format (*.abc). For details about the format, see docs/assembly_format.md and docs/file_format.md.
├── bytecode_optimizer      # Bytecode optimizer, further optimize the ARK bytecode to generate optimized bytecode file in binary format (*.abc).
├── cmake                   # Cmake script that contains the toolchain files and common cmake functions used to define the build and test targets.
├── compiler                # Compiler including IR(intermediate representation) and passes for bytecode optimization. See docs/ir_format.md.
├── cross_values            # Cross values generator.
├── disassembler            # Disassembler that converts an ARK bytecode file in binary format (*.abc) into an ARK bytecode file in text format (*.pa).
├── docs                    # Language frontend, ARK file format, and runtime design documents.
├── dprof                   # Data used to collect the profiling data for ARK runtime.
├── gn                      # GN templates and configuration files.
├── irtoc                   # IR to code tool, aims to compile a manually created IR to the target code.
├── isa                     # Bytecode ISA description file YAML, Ruby scripts and templates.
├── ldscripts               # Linker scripts used to place ELF sections larger than 4 GB in a non-PIE executable file.
├── libark_defect_scan_aux  # Vulnerability defect scanning tool for ARK bytecode file in binary format (*.abc).
├── libpandabase            # Basic ArkCompiler runtime library, including logs, synchronization primitives, and common data structure.
├── libpandafile            # Source code repository of ARK bytecode files (*.abc) in binary format.
├── libziparchive           # Provides APIs for reading and using zip files implemented by zlib.
├── panda                   # CLI tool used to execute ARK bytecode files in binary format(*.abc).
├── pandastdlib             # Standard libraries wrote by the ARK assembler.
├── platforms               # Platform related utilities.
├── plugins                 # Language-dependent plugins.
├── quickener               # Quickener tool.
├── runtime                 # ARK runtime command module.
├── scripts                 # CI Scripts.
├── templates               # Ruby templates and scripts used to process command line options, loggers, error messages, and events.
├── tests                   # Test cases.
└── verification            # Bytecode verifier. See docs/bc_verification.

Building

Linux platform

$ ./build.sh --product-name rk3568 --build-target arkcompiler/runtime_core:ark_host_linux_tools_packages

Windows platform

$ ./build.sh --product-name rk3568 --build-target arkcompiler/runtime_core:ark_host_windows_tools_packages

Mac platform

$ ./build.sh --product-name rk3568 --build-target arkcompiler/runtime_core:ark_host_mac_tools_packages

Guidelines

Usage Guidelines

Disassembler ark_disasm

The ark_disasm disassembler converts binary ARK bytecodes into readable text ARK bytecodes.

Command:

ark_disasm [Options] Input file Output file

Supported options:

Option Description
--debug Enable the function for printing debug information.
--debug-file Specify the path of the debug information output file. The default is std::cout.
--help Display help information.
--quiet Enable all of the "--skip-*" flags.
--skip-string-literals Replace string literals with their respective id's, thus shortening emitted code size.
--verbose Enable log printing.
--version Print version info, including file format version and minimum supported file format version.

Input file: ARK bytecodes in binary format

Output file: ARK bytecodes in text format

For more information, please see: ARK Runtime Usage Guide.

Repositories Involved

arkcompiler_runtime_core

arkcompiler_ets_runtime

arkcompiler_ets_frontend