harmony 鸿蒙Ark Bytecode Fundamentals

  • 2025-06-06
  • 浏览 (3)

Ark Bytecode Fundamentals

Overall Design

Overview

Ark bytecode is a binary file generated by the ArkCompiler from ArkTS/TS/JS code and provided for Ark Runtime to interpret and execute. Bytecode mainly contains Ark bytecode instructions.
This topic introduces the design of these instructions, covering key concepts, specific formats, and meanings to help you understand and work with Ark bytecode instructions effectively.
An Ark bytecode instruction consists of an operation code (instruction name) and a list of parameters. An operation code can be prefix-free or prefixed. Registers, immediate values, string id, method id, and literal id can be used as parameters. In addition, the accumulator can be used as a default parameter in some instructions.
In addition to registers and accumulator, Ark bytecode supports four value storage mechanisms: global variables, module namespaces and variables, lexical environments and variables, and patch variables. Instructions can reference values from these storage locations as parameters.

Terms and Constraints

Terms

The following table lists the terms used in this topic.

Term Description
acc Accumulator, a special register in the Ark bytecode.
bit A binary digit, represented as a bit in this topic.
hole An uninitialized object or variable.
id Index, a general term for string id, method id, or literal id.
string id A 16-bit number indexing a string.
method id A 16-bit number indexing a method.
literal id A 16-bit number indexing a literal array.
lexical environment A semantic environment storing closure variables.
lexical variable A closure variable stored in the lexical environment.

Constraints

  • All code examples provided in this topic adhere to the ArkTS language specifications.
  • This topic is applicable only to Ark bytecode of version 12.0.6.0. The version number is an internal field of the ArkCompiler and does not require your attention.

Bytecode Composition

Operation Codes and Prefixes

Operation codes in Ark bytecode are typically 8-bit values, allowing for up to 256 unique opcodes. However, as the ArkCompiler’s functionality has expanded, the number of operation codes has exceeded 256. To accommodate this, the Ark bytecode introduces prefixes, expanding the maximum operation code width from 8 bits to 16 bits. 8-bit operation codes (prefix-free) are used for common instructions, whereas 16-bit operation codes (prefixed) are used for less frequent ones.
Prefixed operation codes are stored in little-endian format, composed of an 8-bit operation code and an 8-bit prefix. During encoding, the operation code is shifted left by 8 bits and then ORed with the prefix. | Prefix | Mnemonic | Description | | ———-| ———- | ———- | | 0xfe | throw | Conditional/Unconditional throw instruction.| | 0xfd | wide | Instructions with wider encoding widths for immediate values, IDs, or register indexes.| | 0xfc | deprecated | Instructions no longer generated by the ArkCompiler. They are used only for runtime compatibility.
These instructions are not described in the following sections.| | 0xfb | callruntime| Instructions for calling runtime methods.|

The mnemonic form of a prefixed operation code is prefix mnemonic.operation code mnemonic. For example, wide.stlexvar combines the prefix wide (0xfd) with the operation code stlexvar (0x0d), resulting in the prefixed operation code 0x0dfd.

Registers and Accumulator

The Ark Virtual Machine (VM) uses a register-based model with virtual registers. When a register holds a primitive value, it is 64 bits wide; when it holds an object reference, its width adjusts accordingly.
A special invisible register called the accumulator (acc) is used in the Ark bytecode. The acc serves as the default target for many instructions and as a default parameter for others, helping to produce more compact bytecode without consuming additional encoding width.

Example:

function foo(): number {
    return 1;
}

Related instructions in the bytecode:

.function any .foo(any a0, any a1, any a2) {
    ldai 0x1
    return
}

ldai 0x1: loads integer literal 1 to the acc.
return: returns the value in the acc.

immediate values

Some instructions use constants to represent integer values, double-precision floating-point values, or jump offsets. These constants, known as immediate values, can be 8-bit, 16-bit, 32-bit, or 64-bit.

Method, String, and Literal Indexes

The Ark bytecode stores offsets for all methods, strings, and literal arrays used in the source file. Literal arrays contain various literals, such as integer numbers, string offsets, and method offsets. In Ark bytecode instructions, these indexes are 16-bit values, referred to as method indexes (method id), string indexes (string id), and literal indexes (literal id). These indexes are encoded in instructions to reference methods, strings, and literal arrays.

Value Storage Mechanisms

Global Variables

In Script build mode, global variables are stored in a globally unique mapping, with the variable name as the key and its value as the value. Global variables can be accessed using global-related instructions.

Example:

function foo(): void {
    a += 2;
    b = 5;
}

Related instructions in the bytecode:

.function any .foo(any a0, any a1, any a2) {
    tryldglobalbyname 0x0, a
    sta v4
    ldai 0x2
    add2 0x1, v4
    trystglobalbyname 0x2, a
    ldai 0x5
    trystglobalbyname 0x3, b
    ...
}

tryldglobalbyname 0x0, a: loads a global variable named a to the acc. If this variable does not exist, an exception is thrown.
trystglobalbyname 0x2, a: stores the value of the acc to a global variable named a. If this variable does not exist, an exception is thrown.
trystglobalbyname 0x3, b: stores the value of the acc to a global variable named b. If this variable does not exist, an exception is thrown.

NOTE

0x0, 0x2, and 0x3 in the preceding instructions are reserved for internal use in the Ark Runtime.

Module Namespaces and Variables

All module namespaces used in the source file are compiled into arrays, referenced by instructions using indexes. For example, getmodulenamespace 0x1 references the module namespace at index 0x1.
All module variables used in the source file are compiled into arrays, referenced by instructions using indexes. For example, stmodulevar 0x1 references a module variable at index 0x1.
In a function, if the declaration of a module variable is in the same source file as the function, the variable is called a local module variable. Otherwise, it is called an external module variable. For example, ldlocalmodulevar and ldexternalmodulevar are used to load local module variables and external module variables, respectively.
Scenarios for generating module instructions include import and export. The main scenarios are as follows: * import * as: module namespace * import { }: module variable * export: local export

NOTE

Module-related logic is an internal implementation detail of the compiler. As the ArkCompiler evolves, new scenarios involving module instructions may emerge, and existing ones may change due to evolving requirements or code refactoring.

Example:

import { a, b } from "./module_foo"
import * as c from "./module_bar"

export let d: number = 3;

a + b + d;

Related instructions in the bytecode:

.function any .func_main_0(any a0, any a1, any a2) {
    getmodulenamespace 0x1
    ldai 0x3
    stmodulevar 0x0
    ldexternalmodulevar 0x0
    sta v0
    throw.undefinedifholewithname a
    ldexternalmodulevar 0x1
    sta v1
    throw.undefinedifholewithname b
    lda v1
    add2 0x0, v0
    sta v0
    ldlocalmodulevar 0x0
    sta v1
    throw.undefinedifholewithname d
    lda v1
    add2 0x1, v0
    ...
}

getmodulenamespace 0x1: obtains the module namespace © of slot 1 and stores it in the acc.
stmodulevar 0x0: stores the values in the acc into slot 0 of the current module.
ldexternalmodulevar 0x0: loads the value (a) of slot 0 of the external module and stores it in the acc.
ldlocalmodulevar 0x0: loads the value (d) of slot 0 of the current local module and stores it in the acc.

Lexical Environments and Lexical Variables

In Ark bytecode, a lexical environment may be considered as an array with multiple slots, and each slot corresponds to one lexical variable. A method may contain multiple lexical environments. Instructions reference lexical variables using the relative nesting level and slot index of the lexical environment. For example, ldlexvar 0x1, 0x2 loads the value from slot 0x2 of the lexical environment one level outside the current lexical environment into the acc.

|xxx|xxx|xxx|xxx|  <-- Lexical environment one level outside the current lexical environment.
         ^
       |------------ ldlexvar 0x1, 0x2

|xxx|xxx|xxx|xxx|  <-- Current lexical environment.

NOTE
The logic related to lexical is used in the compiler. With subsequent evolution of the ArkCompiler, new scenarios involving lexical instructions may emerge. On the other hand, existing lexical instruction-related scenarios may no longer generates lexical instructions as requirements evolve and code is reconstructed. Example:

function foo(): void {
    let a: number = 1;
    function bar(): number {
        return a;
    }
}

Related instructions in the bytecode:

.function any .foo(any a0, any a1, any a2) {
    newlexenv 0x1
    ...
    definefunc 0x0, .bar, 0x0
    sta v3
    ldai 0x1 
    ...
    stlexvar 0x0, 0x0
    ...
}    

.function any .bar(any a0, any a1, any a2) {
    ...
    ldlexvar 0x0, 0x0
    ...
}

newlexenv 0x1: creates a lexical environment with one slot, stores it in the acc, and enters this environment.
stlexvar 0x0, 0x0: stores the value in the acc into slot 0 of the lexical environment 0 level outside the current lexical environment.
ldlexvar 0x0, 0x0: stores the value from slot 0 of the lexical environment 0 level outside the current lexical environment into the acc.

Shared Lexical Environments

Shared lexical environments are a special type of lexical environment Unlike regular lexical environments, each lexical variable in a shared lexical environment is a Sendable object. The ArkCompiler uses shared lexical environments to enable sharing of lexical variables across multiple threads.

Example:

@Sendable
class A { }

@Sendable
class B {
    u: A = new A()
}

Related instructions in the bytecode:

.function any .#~B=#B(any a0, any a1, any a2) {
label_1: 
label_0: 
	callruntime.ldsendablevar 0x0, 0x0
	sta v0
	throw.undefinedifholewithname A
	...
label_2: 
}

.function any .func_main_0(any a0, any a1, any a2) {
label_1: 
label_0: 
	callruntime.newsendableenv 0x1
	...
	callruntime.definesendableclass 0x0, .#~A=#A, _3, 0x0, v0
	callruntime.stsendablevar 0x0, 0x0
	...
label_2: 
}

an instruction callruntime.newsendableenv 0x1: creates a shared lexical environment with one slot and enters this lexical environment.
callruntime.stsendablevar 0x0, 0x0: stores the value in the acc into slot 0 of the lexical environment outside level 0.
callruntime.ldsendablevar 0x0, 0x0: stores the value from slot 0 of the lexical environment 0 level outside the current lexical environment into the acc.

Patch Variables

The ArkCompiler supports patch mode compilation. When a source file is modified, patch mode compilation generates a patch bytecode that, together with the original bytecode, completes the functional update. During patch mode compilation, patch variables generated by the ArkCompiler are stored in a special patch lexical environment. Instructions in the Ark bytecode use slot numbers from the patch lexical environment to reference patch variables. For example, the instruction ldpatchvar 0x1 is used to load the patch variable from slot 1.

Example:

function bar(): void {} // Add a statement and compile the patch.

function foo(): void {
    bar(); // Add a statement and compile the patch.
}

Related instructions in the bytecode:

.function any foo(...) {
    ...
    wide.ldpatchvar 0x0
    sta v4
    lda v4
    callarg0 0x0
    ...
}

.function any patch_main_0(...) {
    newlexenv 0x1
    definefunc 0x1, bar:(any,any,any), 0x0
    wide.stpatchvar 0x0
    ...
}

wide.stpatchvar 0x0: stores the bar function into slot 0 of the patch lexical environment.
wide.ldpatchvar 0x0: stores the value from slot 0 in the patch lexical environment into the acc.

Function Call Specifications

For a method with N formal parameters, the last N+3 registers are used to pass parameters. The first three registers are fixed to represent the function object (FunctionObject), new.target (NewTarget), and this from the lexical environment where the function resides. The subsequent N registers correspond to the N formal parameters.

Example:

function foo(a: number, b: number): void {}

Related instructions in the bytecode:

.function any .foo(any a0, any a1, any a2, any a3, any a4) {
    // a0: FunctionObject
    // a1: NewTarget
    // a2: this 
    // a3: a
    // a4: b
}

Bytecode Format Description

Mnemonic Semantic Description
ID16 8-bit operation code and 16-bit id
IMM16 8-bit operation code and 16-bit immediate value
IMM16_ID16 8-bit operation code, 16-bit immediate value, and 16-bit id
IMM16_ID16_ID16_IMM16_V8 8-bit operation code, 16-bit immediate value, two 16-bit id, 16-bit immediate value, and 8-bit register
IMM16_ID16_IMM8 8-bit operation code, 16-bit immediate value, 16-bit id, and 8-bit immediate value
IMM16_ID16_V8 8-bit operation code, 16-bit immediate value, 16-bit id, and 8-bit register
IMM16_IMM16 8-bit operation code and two 16-bit immediate values
IMM16_IMM8_V8 8-bit operation code, 16-bit immediate value, 8-bit immediate value, and 8-bit register
IMM16_V8 8-bit operation code, 16-bit immediate value, and 8-bit register
IMM16_V8_IMM16 8-bit operation code, 16-bit immediate value, 8-bit register, and 16-bit immediate value
IMM16_V8_V8 8-bit operation code, 16-bit immediate value, and two 8-bit registers
IMM32 8-bit operation code and 32-bit immediate value
IMM4_IMM4 8-bit operation code and two 4-bit immediate values
IMM64 8-bit operation code and 64-bit immediate value
IMM8 8-bit operation code and 8-bit immediate value
IMM8_ID16 8-bit operation code, 8-bit immediate value, and 16-bit id
IMM8_ID16_ID16_IMM16_V8 8-bit operation code, 8-bit immediate value, two 16-bit id, 16-bit immediate value, and 8-bit register
IMM8_ID16_IMM8 8-bit operation code, 8-bit immediate value, 16-bit id, 8-bit immediate value
IMM8_ID16_V8 8-bit operation code, 8-bit immediate value, 16-bit id, and 8-bit register
IMM8_IMM16 8-bit operation code, 8-bit immediate value, and 16-bit immediate value
IMM8_IMM8 8-bit operation code and two 8-bit immediate values
IMM8_IMM8_V8 8-bit operation code, two 8-bit immediate values, and 8-bit register
IMM8_V8 8-bit operation code, 8-bit immediate value, and 8-bit register
IMM8_V8_IMM16 8-bit operation code, 8-bit immediate value, 8-bit register, and 16-bit immediate value
IMM8_V8_V8 8-bit operation code, 8-bit immediate value, and two 8-bit registers
IMM8_V8_V8_V8 8-bit operation code, 8-bit immediate value, and three 8-bit registers
IMM8_V8_V8_V8_V8 8-bit operation code, 8-bit immediate value, and four 8-bit registers
NONE 8-bit operation code
PREF_IMM16 16-bit prefixed operation code, 16-bit immediate value
PREF_IMM16_ID16 16-bit prefixed operation code, 16-bit immediate value, and 16-bit id
PREF_IMM16_V8 16-bit prefixed operation code, 16-bit immediate value, and 8-bit register
PREF_IMM16_V8_V8 16-bit prefixed operation code, 16-bit immediate value, and two 8-bit registers
PREF_IMM8 16-bit prefixed operation code and 8-bit immediate value
PREF_NONE 16-bit prefixed operation code
PREF_V8 16-bit prefixed operation code and 8-bit register
PREF_V8_ID16 16-bit prefixed operation code, 8-bit register, and 16-bit id
PREF_V8_IMM32 16-bit prefixed operation code, 8-bit register, and 32-bit immediate value
V16_V16 8-bit operation code and two 16-bit registers
V4_V4 8-bit operation code and two 4-bit registers
V8 8-bit operation code and 8-bit register
V8_IMM16 8-bit operation code, 8-bit register, and 16-bit immediate value
V8_IMM8 8-bit operation code, 8-bit register, and 8-bit immediate value
V8_V8 8-bit operation code and two 8-bit registers
V8_V8_V8 8-bit operation code and three 8-bit registers
V8_V8_V8_V8 8-bit operation code and four 8-bit registers

Bytecode Summary

The table below summarizes all Ark bytecode instructions in the current version. The register index, immediate value, and id are described using a character to represent each four-bit width.
For example, consider the instruction defineclasswithbuffer RR, @AAAA, @BBBB, +CCCC, vDD:
* defineclasswithbuffer: mnemonic for the operation code. * RR: 8-bit reserved number used internally during the Ark runtime. The number mentioned here is just an example showing a complete instruction format. * @AAAA, @BBBB: 16-bit id * +CCCC: 16-bit immediate value * vDD: 8-bit register index

Operation Code Format Mnemonic/Syntax Parameters Description
0x00 NONE ldundefined Loads undefined to the acc.
0x01 NONE ldnull Loads null to the acc.
0x02 NONE ldtrue Loads true to the acc.
0x03 NONE ldfalse Loads false to the acc.
0x04 NONE createemptyobject Creates an empty object and stores it in the acc.
0x05 IMM8 createemptyarray RR R: 8-bit reserved number used in Ark runtime Creates an empty array and stores it in the acc.
0x06 IMM8_ID16 createarraywithbuffer RR, @AAAA R: 8-bit reserved number used in Ark runtime
A: 16-bit literal id
Uses the literal array corresponding to index A to create an array object and stores it in the acc.
0x07 IMM8_ID16 createobjectwithbuffer RR, @AAAA R: 8-bit reserved number used in Ark runtime
A: 16-bit literal id
Uses the literal array corresponding to index A to create an object and stores it in the acc.
0x08 IMM8_IMM8_V8 newobjrange RR, +AA, vBB R: 8-bit reserved number used in Ark runtime
A: number of parameters
B: class object
B + 1, …, B + A - 1: parameter passed to the constructor
Uses B + 1, …, B + A - 1 as a parameter to create an instance of class B and stores it in the acc.
0x09 IMM8 newlexenv +AA A: number of slots in the lexical environment Creates a lexical environment with slot A, stores it in the acc, and enters the lexical environment.
0x0a IMM8_V8 add2 RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A + acc and stores the result in the acc.
0x0b IMM8_V8 sub2 RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A - acc and stores the result in the acc.
0x0c IMM8_V8 mul2 RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A * acc and stores the result in the acc.
0x0d IMM8_V8 div2 RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A / acc and stores the result in the acc.
0x0e IMM8_V8 mod2 RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A % acc and stores the result in the acc.
0x0f IMM8_V8 eq RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A == acc and stores the result in the acc.
0x10 IMM8_V8 noteq RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A != acc and stores the result in the acc.
0x11 IMM8_V8 less RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A < acc and stores the result in the acc.
0x12 IMM8_V8 lesseq RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A <= acc and stores the result in the acc.
0x13 IMM8_V8 greater RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A > acc and stores the result in the acc.
0x14 IMM8_V8 greatereq RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A >= acc and stores the result in the acc.
0x15 IMM8_V8 shl2 RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A << acc and stores the result in the acc.
0x16 IMM8_V8 shr2 RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A >>> acc and stores the result in the acc.
0x17 IMM8_V8 ashr2 RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A >> acc and stores the result in the acc.
0x18 IMM8_V8 and2 RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A & acc and stores the result in the acc.
0x19 IMM8_V8 or2 RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A \|acc and stores the result in the acc.
0x1a IMM8_V8 xor2 RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A ^ acc and stores the result in the acc.
0x1b IMM8_V8 exp RR, vAA Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
A: operand
Calculates A ** acc and stores the result in the acc.
0x1c IMM8 typeof RR Default input parameter: acc: object
R: 8-bit reserved number used in Ark runtime
Calculates typeof acc and stores the result in the acc.
0x1d IMM8 tonumber RR Default input parameter: acc: object
R: 8-bit reserved number used in Ark runtime
Uses the acc as a parameter, executes ToNumber, and stores the result in the acc.
0x1e IMM8 tonumeric RR Default input parameter: acc: object
R: 8-bit reserved number used in Ark runtime
Uses the acc as a parameter, executes ToNumeric, and stores the result in the acc.
0x1f IMM8 neg RR Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
Calculates -acc and stores the result in the acc.
0x20 IMM8 not RR Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
Calculates ~acc and stores the result in the acc.
0x21 IMM8 inc RR Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
Calculates acc + 1 and stores the result in the acc.
0x22 IMM8 dec RR Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
Calculates acc - 1 and stores the result in the acc.
0x23 NONE istrue Default input parameter: acc: object Calculates acc == true and stores the result in the acc.
0x24 NONE isfalse Default input parameter: acc: object Calculates acc == false and stores the result in the acc.
0x25 IMM8_V8 isin RR, vAA Default input parameter: acc: object
R: 8-bit reserved number used in Ark runtime
A: Object
Calculates A in acc and stores the result in the acc.
0x26 IMM8_V8 instanceof RR, vAA Default input parameter: acc: object
R: 8-bit reserved number used in Ark runtime
A: Object
Calculates A instanceof acc and stores the result in the acc.
0x27 IMM8_V8 strictnoteq RR, vAA Default input parameter: acc: object
R: 8-bit reserved number used in Ark runtime
A: Object
Calculates acc !== A and stores the result in the acc.
0x28 IMM8_V8 stricteq RR, vAA Default input parameter: acc: object
R: 8-bit reserved number used in Ark runtime
A: Object
Calculates acc === A and stores the result in the acc.
0x29 IMM8 callarg0 RR Default input parameter: acc: function object
R: 8-bit reserved number used in Ark runtime
Directly calls the function object stored in the acc without passing parameters and stores the result in the acc.
0x2a IMM8_V8 callarg1 RR, vAA Default input parameter: acc: function object
R: 8-bit reserved number used in Ark runtime
A: Parameter
Uses A as a parameter to call the function object stored in the acc and stores the result in the acc.
0x2b IMM8_V8_V8 callargs2 RR, vAA, vBB Default input parameter: acc: function object
R: 8-bit reserved number used in Ark runtime
A and B: parameters
Uses A and B as parameters to call the function object stored in the acc and stores the result in the acc.
0x2c IMM8_V8_V8_V8 callargs3 RR, vAA, vBB, vCC Default input parameter: acc: function object
R: 8-bit reserved number used in Ark runtime
A, B, C: parameter
Uses A, B, and C as parameters to call the function object stored in the acc and stores the result in the acc.
0x2d IMM8_V8 callthis0 RR, vAA Default input parameter: acc: function object
R: 8-bit reserved number used in Ark runtime
A: Object
Sets this to A, calls the function object stored in the acc without passing parameters, and stores the result in the acc.
0x2e IMM8_V8_V8 callthis1 RR, vAA, vBB Default input parameter: acc: function object
R: 8-bit reserved number used in Ark runtime
A: Object
B: parameter
Sets this to A, calls the function object stored in the acc by setting B as a parameter, and stores the result in the acc.
0x2f IMM8_V8_V8_V8 callthis2 RR, vAA, vBB, vCC Default input parameter: acc: function object
R: 8-bit reserved number used in Ark runtime
A: Object
B, C: parameter
Sets this to A, calls the function object stored in the acc by setting B and C as parameters, and stores the result in the acc.
0x30 IMM8_V8_V8_V8_V8 callthis3 RR, vAA, vBB, vCC, vDD Default input parameter: acc: function object
R: 8-bit reserved number used in Ark runtime
A: Object
B, C, D: parameter
Sets this to A, calls the function object stored in the acc by setting B, C, and D as parameters, and stores the result in the acc.
0x31 IMM8_IMM8_V8 callthisrange RR, +AA, vBB Default input parameter: acc: function object
R: 8-bit reserved number used in Ark runtime
A: number of parameters
B: object
B + 1, …, B + A: parameter
Sets this to B, calls the function object stored in the acc by setting B + 1, …, B + A as a parameter, and stores the result in the acc.
0x32 IMM8_IMM8_V8 supercallthisrange RR, +AA, vBB R: 8-bit reserved number used in Ark runtime
A: number of parameters
B, …, B + A - 1: parameter
Uses B, …, B + A - 1 as a parameter to call the super function and stores the result in the acc.
When the value of A is 0, the value of B is undefined.
This instruction appears only in non-arrow functions.
0x33 IMM8_ID16_IMM8 definefunc RR, @AAAA, +BB R: 8-bit reserved number used in Ark runtime
A: method id
B: number of formal parameters of method A
Creates the function object of method A and stores it in the acc.
0x34 IMM8_ID16_IMM8 definemethod RR, @AAAA, +BB Default input parameter: acc: class object or its prototype. When the static method is used, the parameter is a class object in the acc.
R: 8-bit reserved number used in Ark runtime
A: method id
B: number of formal parameters of method A
Creates the function object of method A, sets the object in the acc to the HomeObject property of the function object, and stores this function object in the acc.
0x35 IMM8_ID16_ID16_IMM16_V8 defineclasswithbuffer RR, @AAAA, @BBBB, +CCCC, vDD R: 8-bit reserved number used in Ark runtime
A: method id of the constructor of a class
B: literal id
C: number of formal parameters of method A
D: parent class
Uses the literal array corresponding to index B and parent class D to create a class object of A and stores it in the acc.
0x36 V8 getnextpropname vAA A: iterator Executes the next method of for-in iterator A and stores the result in the acc.
0x37 IMM8_V8 ldobjbyvalue RR, vAA Default input parameter: acc: property key
R: 8-bit reserved number used in Ark runtime
A: Object
Loads the property whose key is acc of object A and stores the result in the acc.
0x38 IMM8_V8_V8 stobjbyvalue RR, vAA, vBB Default input parameter: acc: value
R: 8-bit reserved number used in Ark runtime
A: Object
B: property key
Stores the value in the acc to the property whose key is B of object A.
0x39 IMM8_V8 ldsuperbyvalue RR, vAA Default input parameter: acc: property key
R: 8-bit reserved number used in Ark runtime
A: Object
In the current function, obtains the property whose key of super is acc and stores the property in the acc. If the property is of an accessor, the object in A is used as the this parameter when the getter function of the property is called.
0x3a IMM8_IMM16 ldobjbyindex RR, +AAAA Default input parameter: acc: object
R: 8-bit reserved number used in Ark runtime
A: property key
Loads the property whose key is A of the object stored in the acc and stores the property in the acc.
0x3b IMM8_V8_IMM16 stobjbyindex RR, vAA, +BBBB Default input parameter: acc: value
R: 8-bit reserved number used in Ark runtime
A: Object
B: property key
Stores the value in the acc to the property whose key is B of object A.
0x3c IMM4_IMM4 ldlexvar +A, +B A: lexical environment level
B: slot number
Stores the value of slot B in the lexical environment beyond A levels in the acc.
0x3d IMM4_IMM4 stlexvar +A, +B Default input parameter: acc: value
A: lexical environment level
B: slot number
Stores the value in the acc to slot B in the lexical environment beyond A levels.
0x3e ID16 lda.str @AAAA A: string id Stores the string corresponding to index A to acc.
0x3f IMM8_ID16 tryldglobalbyname RR, @AAAA R: 8-bit reserved number used in Ark runtime
A: string id
Stores the global variable whose name is the string corresponding to index A in the acc. If the global variable named A does not exist, an exception is thrown.
0x40 IMM8_ID16 trystglobalbyname RR, @AAAA Default input parameter: acc: value
R: 8-bit reserved number used in Ark runtime
A: string id
Stores the value in the acc to the global variable whose name is the string corresponding to index A. If the global variable named A does not exist, an exception is thrown.
0x41 IMM16_ID16 ldglobalvar RRRR, @AAAA R: 16-bit reserved number used in Ark runtime
A: string id
Stores the value of the global variable whose name is the string corresponding to index A in the acc. The variable must exist.
0x42 IMM8_ID16 ldobjbyname RR, @AAAA Default input parameter: acc: object
R: 8-bit reserved number used in Ark runtime
A: string id
Loads the property whose key of the object stored in the acc is the string corresponding to index A and stores the property in the acc.
0x43 IMM8_ID16_V8 stobjbyname RR, @AAAA, vBB Default input parameter: acc: value
R: 8-bit reserved number used in Ark runtime
A: string id
B: object
Stores the value in the acc to the property whose key of object B is the string corresponding to index A.
0x44 V4_V4 mov vA, vB A, B: register index Copies the contents in register B to register A.
0x45 V8_V8 mov vAA, vBB A, B: register index Copies the contents in register B to register A.
0x46 IMM8_ID16 ldsuperbyname RR, @AAAA Default input parameter: acc: object
R: 8-bit reserved number used in Ark runtime
A: string id
In the current function, obtains the property whose key of super is the string corresponding to index A and stores the property in the acc. If the property is of an accessor, the object in the acc is used as the this parameter when the getter function of the property is called.
0x47 IMM16_ID16 stconsttoglobalrecord RRRR, @AAAA Default input parameter: acc: value
R: 16-bit reserved number used in Ark runtime
A: string id
Stores the value in the acc to the constant of the string corresponding to index A defined by const in the global variable.
0x48 IMM16_ID16 sttoglobalrecord RRRR, @AAAA Default input parameter: acc: value
R: 16-bit reserved number used in Ark runtime
A: string id
Stores the value in the acc to the variable of the string corresponding to index A defined by let in the global variable.
0x49 IMM8_ID16 ldthisbyname RR, @AAAA R: 8-bit reserved number used in Ark runtime
A: string id
Loads the property whose key of this is the string corresponding to index A and stores the result in the acc.
0x4a IMM8_ID16 stthisbyname RR, @AAAA Default input parameter: acc: value
R: 8-bit reserved number used in Ark runtime
A: string id
Stores the value in the acc to the property whose key of this is the string corresponding to index A.
0x4b IMM8 ldthisbyvalue RR Default input parameter: acc: property key
R: 8-bit reserved number used in Ark runtime
Loads the property whose key of this is acc and stores the result in the acc.
0x4c IMM8_V8 stthisbyvalue RR, vAA Default input parameter: acc: value
R: 8-bit reserved number used in Ark runtime
A: property key
Stores the value in the acc to the property whose key of this is A.
0x4d IMM8 jmp +AA A: signed branch offset Jumps to branch A unconditionally.
0x4e IMM16 jmp +AAAA A: signed branch offset Jumps to branch A unconditionally.
0x4f IMM8 jeqz +AA Default input parameter: acc: value
A: signed branch offset
Calculates acc == 0 and jumps to branch A if it is true.
0x50 IMM16 jeqz +AAAA Default input parameter: acc: value
A: signed branch offset
Calculates acc == 0 and jumps to branch A if it is true.
0x51 IMM8 jnez +AA Default input parameter: acc: value
A: signed branch offset
Calculates acc != 0 and jumps to branch A if it is true.
0x52 IMM8 jstricteqz +AA Default input parameter: acc: value
A: signed branch offset
Calculates acc === 0 and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0x53 IMM8 jnstricteqz +AA Default input parameter: acc: value
A: signed branch offset
Calculates acc !== 0 and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0x54 IMM8 jeqnull +AA Default input parameter: acc: value
A: signed branch offset
Calculates acc == null and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0x55 IMM8 jnenull +AA Default input parameter: acc: value
A: signed branch offset
Calculates acc != null and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0x56 IMM8 jstricteqnull +AA Default input parameter: acc: value
A: signed branch offset
Calculates acc === null and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0x57 IMM8 jnstricteqnull +AA Default input parameter: acc: value
A: signed branch offset
Calculates acc !== null and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0x58 IMM8 jequndefined +AA Default input parameter: acc: value
A: signed branch offset
Calculates acc == undefined and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0x59 IMM8 jneundefined +AA Default input parameter: acc: value
A: signed branch offset
Calculates acc != undefined and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0x5a IMM8 jstrictequndefined +AA Default input parameter: acc: value
A: signed branch offset
Calculates acc === undefined and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0x5b IMM8 jnstrictequndefined +AA Default input parameter: acc: value
A: signed branch offset
Calculates acc !== undefined and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0x5c V8_IMM8 jeq vAA, +BB Default input parameter: acc: value
A: value
B: signed branch offset
Calculates acc == A and jumps to branch B if it is true.
The instruction feature is disabled and is unavailable currently.
0x5d V8_IMM8 jne vAA, +BB Default input parameter: acc: value
A: value
B: signed branch offset
Calculates acc != A and jumps to branch B if it is true.
The instruction feature is disabled and is unavailable currently.
0x5e V8_IMM8 jstricteq vAA, +BB Default input parameter: acc: object
A: Object
B: signed branch offset
Calculates acc === A and jumps to branch B if it is true.
The instruction feature is disabled and is unavailable currently.
0x5f V8_IMM8 jnstricteq vAA, +BB Default input parameter: acc: object
A: Object
B: signed branch offset
Calculates acc !== A and jumps to branch B if it is true.
The instruction feature is disabled and is unavailable currently.
0x60 V8 lda vAA A: register index Stores the contents of register A in the acc.
0x61 V8 sta vAA Default input parameter: acc
A: register index
Stores the contents of acc in register A.
0x62 IMM32 ldai +AAAAAAAA A: constant literal Stores the integer literal A in the acc.
0x63 IMM64 fldai +AAAAAAAAAAAAAAAA A: constant literal Stores the double-precision floating-point literal A in the acc.
0x64 NONE return Default input parameter: acc: value Returns the value in the acc.
0x65 NONE returnundefined Returns undefined.
0x66 NONE getpropiterator Default input parameter: acc: object Stores the for-in iterator of the object in the acc.
0x67 IMM8 getiterator RR Default input parameter: acc: object
R: 8-bit reserved number used in Ark runtime
Executes the GetIterator (acc, sync) method and stores the result in the acc.
0x68 IMM8_V8 closeiterator RR, vAA R: 8-bit reserved number used in Ark runtime
A: Object
Uses A of the iteratorRecord type as a parameter to execute IteratorClose and stores the result in the acc.
0x69 NONE poplexenv Jumps out of the current lexical environment and enters the outer lexical environment.
0x6a NONE ldnan Stores the nan value in the acc.
0x6b NONE ldinfinity Stores the infinity value in the acc.
0x6c NONE getunmappedargs Stores the arguments of the current function in the acc.
0x6d NONE ldglobal Stores the global object in the acc.
0x6e NONE ldnewtarget Stores the NewTarget implicit parameter of the current function in the acc.
The instruction feature is disabled and is unavailable currently.
0x6f NONE ldthis Stores the this value in the acc.
0x70 NONE ldhole Stores the hole value in the acc.
0x71 IMM8_ID16_IMM8 createregexpwithliteral RR, @AAAA, +BB R: 8-bit reserved number used in Ark runtime
A: string id
B: regular expression modifier
Uses the string corresponding to index A and the modifier corresponding to index B to create a regular expression and stores it in the acc.
The correspondence between B and a specified modifier is: 0 (default value with no modifier), 1 (g), 2 (i), 4 (m), 8 (s), 16 (u), 32 (y); B may also refer to a combination of modifiers that comply with syntax specifications, for example, 3 and its modifier is gi.
0x72 IMM16_ID16_IMM8 createregexpwithliteral RRRR, @AAAA, +BB R: 16-bit reserved number used in Ark runtime
A: string id
B: regular expression modifier
Uses the string corresponding to index A and the modifier corresponding to index B to create a regular expression and stores it in the acc.
The correspondence between B and a specified modifier is: 0 (default value with no modifier), 1 (g), 2 (i), 4 (m), 8 (s), 16 (u), 32 (y); B may also refer to a combination of modifiers that comply with syntax specifications, for example, 3 and its modifier is gi.
0x73 IMM8_IMM8_V8 callrange RR, +AA, vBB Default input parameter: acc: function object
R: 8-bit reserved number used in Ark runtime
A: number of parameters
B, …, B + A - 1: parameter
Uses B, …, B + A - 1 as a parameter to call the function object stored in the acc and stores the result in the acc.
0x74 IMM16_ID16_IMM8 definefunc RRRR, @AAAA, +BB R: 16-bit reserved number used in Ark runtime
A: method id
B: number of formal parameters of method A
Creates the function object of method A and stores it in the acc.
0x75 IMM16_ID16_ID16_IMM16_V8 defineclasswithbuffer RRRR, @AAAA, @BBBB, +CCCC, vDD R: 16-bit reserved number used in Ark runtime
A: method id of the constructor of a class
B: literal id
C: number of formal parameters of method A
D: parent class
Uses the literal array corresponding to index B and parent class D to create a class object of A and stores it in the acc.
0x76 IMM8 gettemplateobject RR Default input parameter: acc: object
R: 8-bit reserved number used in Ark runtime
Executes GetTemplateObject (acc) and stores the result in the acc.
0x77 IMM8_V8 setobjectwithproto RR, vAA Default input parameter: acc: object
R: 8-bit reserved number used in Ark runtime
A: value
Sets the __proto__ property of the object stored in the acc to A.
0x78 IMM8_V8_V8 stownbyvalue RR, vAA, vBB Default input parameter: acc: value
R: 8-bit reserved number used in Ark runtime
A: Object
B: property key
Stores the value in the acc to the property whose key is B of object A.
0x79 IMM8_V8_IMM16 stownbyindex RR, vAA, +BBBB Default input parameter: acc: value
R: 8-bit reserved number used in Ark runtime
A: Object
B: property key
Stores the value in the acc to the property whose key is B of object A.
0x7a IMM8_ID16_V8 stownbyname RR, @AAAA, vBB Default input parameter: acc: value
R: 8-bit reserved number used in Ark runtime
A: string id
B: object
Stores the value in the acc to the property whose key of object B is the string corresponding to index A.
0x7b IMM8 getmodulenamespace +AA A: module index Executes the GetModuleNamespace instruction for module A and stores the result in the acc.
0x7c IMM8 stmodulevar +AA Default input parameter: acc: value
A: slot number
Stores the value in the acc to the module variable of slot A.
0x7d IMM8 ldlocalmodulevar +AA A: slot number Stores the local module variables of slot A in the acc.
0x7e IMM8 ldexternalmodulevar +AA A: slot number Stores the external module variable of slot A in the acc.
0x7f IMM16_ID16 stglobalvar RRRR, @AAAA Default input parameter: acc: value
R: 16-bit reserved number used in Ark runtime
A: string id
Stores the value in the acc to the global variable whose name is the string corresponding to index A. This variable must exist.
0x80 IMM16 createemptyarray RRRR R: 16-bit reserved number used in Ark runtime Creates an empty array and stores it in the acc.
0x81 IMM16_ID16 createarraywithbuffer RRRR, @AAAA R: 16-bit reserved number used in Ark runtime
A: literal id
Uses the literal array corresponding to index A to create an array object and stores it in the acc.
0x82 IMM16_ID16 createobjectwithbuffer RRRR, @AAAA R: 16-bit reserved number used in Ark runtime
A: literal id
Uses the literal array corresponding to index A to create an object and stores it in the acc.
0x83 IMM16_IMM8_V8 newobjrange RRRR, +AA, vBB R: 16-bit reserved number used in Ark runtime
A: number of parameters
B: class object
B + 1, …, B + A - 1: parameter passed to the constructor
Uses B + 1, …, B + A - 1 as a parameter to create an instance of class B and stores it in the acc.
0x84 IMM16 typeof RRRR Default input parameter: acc: object
R: 16-bit reserved number used in Ark runtime
Calculates typeof acc and stores the result in the acc.
0x85 IMM16_V8 ldobjbyvalue RRRR, vAA Default input parameter: acc: property key
R: 16-bit reserved number used in Ark runtime
A: Object
Loads the property whose key is acc of object A and stores the result in the acc.
0x86 IMM16_V8_V8 stobjbyvalue RRRR, vAA, vBB Default input parameter: acc: value
R: 16-bit reserved number used in Ark runtime
A: Object
B: property key
Stores the value in the acc to the property whose key is B of object A.
0x87 IMM16_V8 ldsuperbyvalue RRRR, vAA Default input parameter: acc: property key
R: 16-bit reserved number used in Ark runtime
A: Object
In the current function, obtains the property whose key of super is acc and stores the property in the acc. If the property is of an accessor, the object in A is used as the this parameter when the getter function of the property is called.
0x88 IMM16_IMM16 ldobjbyindex RRRR, +AAAA Default input parameter: acc: object
R: 16-bit reserved number used in Ark runtime
A: property key
Loads the property whose key is A of the object stored in the acc and stores the property in the acc.
0x89 IMM16_V8_IMM16 stobjbyindex RRRR, vAA, +BBBB Default input parameter: acc: value
R: 16-bit reserved number used in Ark runtime
A: Object
B: property key
Stores the value in the acc to the property whose key is B of object A.
0x8a IMM8_IMM8 ldlexvar +AA, +BB A: lexical environment level
B: slot number
Stores the value of slot B in the lexical environment beyond A levels in the acc.
0x8b IMM8_IMM8 stlexvar +AA, +BB Default input parameter: acc: value
A: lexical environment level
B: slot number
Stores the value in the acc to slot B in the lexical environment beyond A levels.
0x8c IMM16_ID16 tryldglobalbyname RRRR, @AAAA R: 16-bit reserved number used in Ark runtime
A: string id
Stores the global variable whose name is the string corresponding to index A in the acc. If the global variable named A does not exist, an exception is thrown.
0x8d IMM16_ID16 trystglobalbyname RRRR, @AAAA Default input parameter: acc: value
R: 16-bit reserved number used in Ark runtime
A: string id
Stores the value in the acc to the global variable whose name is the string corresponding to index A. If the global variable named A does not exist, an exception is thrown.
0x8e IMM8_ID16_V8 stownbynamewithnameset RR, @AAAA, vBB Default input parameter: acc: function object
R: 8-bit reserved number used in Ark runtime
A: string id
B: object
Stores the function object in the acc to the property whose key of object B is the string corresponding to index A and sets the function name to the string corresponding to index A.
0x8f V16_V16 mov vAAAA, vBBBB A, B: register index Copies the contents in register B to register A.
0x90 IMM16_ID16 ldobjbyname RRRR, @AAAA Default input parameter: acc: object
R: 16-bit reserved number used in Ark runtime
A: string id
Loads the property whose key of the object stored in the acc is the string corresponding to index A and stores the property in the acc.
0x91 IMM16_ID16_V8 stobjbyname RRRR, @AAAA, vBB Default input parameter: acc: value
R: 16-bit reserved number used in Ark runtime
A: string id
B: object
Stores the value in the acc to the property whose key of object B is the string corresponding to index A.
0x92 IMM16_ID16 ldsuperbyname RRRR, @AAAA Default input parameter: acc: object
R: 16-bit reserved number used in Ark runtime
A: string id
In the current function, obtains the property whose key of super is the string corresponding to index A and stores the property in the acc. If the property is of an accessor, the object in the acc is used as the this parameter when the getter function of the property is called.
0x93 IMM16_ID16 ldthisbyname RRRR, @AAAA R: 16-bit reserved number used in Ark runtime
A: string id
Loads the property whose key of this is the string corresponding to index A and stores the result in the acc.
0x94 IMM16_ID16 stthisbyname RRRR, @AAAA Default input parameter: acc: value
R: 16-bit reserved number used in Ark runtime
A: string id
Stores the value in the acc to the property whose key of this is the string corresponding to index A.
0x95 IMM16 ldthisbyvalue RRRR Default input parameter: acc: property key
R: 16-bit reserved number used in Ark runtime
Loads the property whose key of this is acc and stores the result in the acc.
0x96 IMM16_V8 stthisbyvalue RRRR, vAA Default input parameter: acc: value
R: 16-bit reserved number used in Ark runtime
A: property key
Stores the value in the acc to the property whose key of this is A.
0x97 V8 asyncgeneratorreject vAA Default input parameter: acc: exception
A: generator
Uses the exception stored in generator A and the acc, executes AsyncGeneratorReject, and stores the result in the acc.
0x98 IMM32 jmp +AAAAAAAA A: signed branch offset Jumps to branch A unconditionally.
0x99 IMM8_V8_V8 stownbyvaluewithnameset RR, vAA, vBB Default input parameter: acc: function object
R: 8-bit reserved number used in Ark runtime
A: Object
B: property key
Stores the value in the acc to the property whose key of object A is B and set the function name to B.
0x9a IMM32 jeqz +AAAAAAAA Default input parameter: acc: value
A: signed branch offset
Calculates acc == 0 and jumps to branch A if it is true.
0x9b IMM16 jnez +AAAA Default input parameter: acc: value
A: signed branch offset
Calculates acc != 0 and jumps to branch A if it is true.
0x9c IMM32 jnez +AAAAAAAA Default input parameter: acc: value
A: signed branch offset
Calculates acc != 0 and jumps to branch A if it is true.
0x9d IMM16 jstricteqz +AAAA Default input parameter: acc: value
A: signed branch offset
Calculates acc === 0 and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0x9e IMM16 jnstricteqz +AAAA Default input parameter: acc: value
A: signed branch offset
Calculates acc !== 0 and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0x9f IMM16 jeqnull +AAAA Default input parameter: acc: value
A: signed branch offset
Calculates acc == null and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0xa0 IMM16 jnenull +AAAA Default input parameter: acc: value
A: signed branch offset
Calculates acc != null and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0xa1 IMM16 jstricteqnull +AAAA Default input parameter: acc: value
A: signed branch offset
Calculates acc === null and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0xa2 IMM16 jnstricteqnull +AAAA Default input parameter: acc: value
A: signed branch offset
Calculates acc !== null and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0xa3 IMM16 jequndefined +AAAA Default input parameter: acc: value
A: signed branch offset
Calculates acc == undefined and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0xa4 IMM16 jneundefined +AAAA Default input parameter: acc: value
A: signed branch offset
Calculates acc != undefined and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0xa5 IMM16 jstrictequndefined +AAAA Default input parameter: acc: value
A: signed branch offset
Calculates acc === undefined and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0xa6 IMM16 jnstrictequndefined +AAAA Default input parameter: acc: value
A: signed branch offset
Calculates acc !== undefined and jumps to branch A if it is true.
The instruction feature is disabled and is unavailable currently.
0xa7 V8_IMM16 jeq vAA, +BBBB Default input parameter: acc: value
A: value
B: signed branch offset
Calculates acc == A and jumps to branch B if it is true.
The instruction feature is disabled and is unavailable currently.
0xa8 V8_IMM16 jne vAA, +BBBB Default input parameter: acc: value
A: value
B: signed branch offset
Calculates acc != A and jumps to branch B if it is true.
The instruction feature is disabled and is unavailable currently.
0xa9 V8_IMM16 jstricteq vAA, +BBBB Default input parameter: acc: value
A: value
B: signed branch offset
Calculates acc === A and jumps to branch B if it is true.
The instruction feature is disabled and is unavailable currently.
0xaa V8_IMM16 jnstricteq vAA, +BBBB Default input parameter: acc: value
A: value
B: signed branch offset
Calculates acc !== A and jumps to branch B if it is true.
The instruction feature is disabled and is unavailable currently.
0xab IMM16 getiterator RRRR Default input parameter: acc: object
R: 16-bit reserved number used in Ark runtime
Executes the GetIterator (acc, sync) method and stores the result in the acc.
0xac IMM16_V8 closeiterator RRRR, vAA R: 16-bit reserved number used in Ark runtime
A: Object
Uses A of the iteratorRecord type as a parameter to execute IteratorClose and stores the result in the acc.
0xad NONE ldsymbol Load the Symbol object in acc.
0xae NONE asyncfunctionenter Creates an asynchronous function object and store the object in the acc.
0xaf NONE ldfunction Loads the current function object in the acc.
0xb0 NONE debugger Pauses execution during debugging.
0xb1 V8 creategeneratorobj vAA A: function object Uses function object A to create a generator and stores it in the acc.
0xb2 V8_V8 createiterresultobj vAA, vBB A: Object
B: Boolean value
Sets value A and done B as parameters to execute CreateIterResultObject instruction and stores the result in the acc.
0xb3 IMM8_V8_V8 createobjectwithexcludedkeys +AA, vBB, vCC A: number of range registers
B: object
C, …, C + A: property key value.
Based on object B, creates an object excluding the key C, …, C + A and stores it in the acc.
This instruction supports object creation by using destructor and extension syntax.
0xb4 IMM8_V8 newobjapply RR, vAA Default input parameter: acc: parameter list
R: 8-bit reserved number used in Ark runtime
A: class object
Uses the parameter list stored in the acc to create an instance of class A and stores it in the acc.
0xb5 IMM16_V8 newobjapply RRRR, vAA Default input parameter: acc: parameter list
R: 16-bit reserved number used in Ark runtime
A: class object
Uses the parameter list stored in the acc to create an instance of class A and stores it in the acc.
0xb6 IMM8_ID16 newlexenvwithname +AA, @BBBB A: number of slots in the lexical environment
B: literal id
Uses the lexical variable name stored in the literal array corresponding to index B to create a lexical environment with A slots, stores this lexical environment in the acc, and enters the lexical environment.
0xb7 V8 createasyncgeneratorobj vAA A: function object Creates an asynchronous generator based on function object A and stores it in the acc.
0xb8 V8_V8_V8 asyncgeneratorresolve vAA, vBB, vCC A: generator
B: object
C: boolean value
Uses generator A, value B, and done C as parameters to execute AsyncGeneratorResolve and stores the result in the acc.
0xb9 IMM8_V8 supercallspread RR, vAA Default input parameter: acc: class object
R: 8-bit reserved number used in Ark runtime
A: parameter list
Uses parameter list A as a parameter, calls the parent class constructor of the class stored in the acc, and stores the result in the acc.
0xba IMM8_V8_V8 apply RR, vAA, vBB Default input parameter: acc: function object
R: 8-bit reserved number used in Ark runtime
A: Object
B: parameter list
Sets this to A, use parameter list B as a parameter, calls the function object stored in the acc, and stores the return value in the acc.
0xbb IMM8_IMM8_V8 supercallarrowrange RR, +AA, vBB Default input parameter: acc: class object
R: 8-bit reserved number used in Ark runtime
A: number of parameters
B, …, B + A - 1: parameter
Uses B, …, B + A - 1 as a parameter to call the constructor function of the parent class of the class stored in the acc and stores the result in the acc.
If the value of A is 0, B is undefined.
This instruction appears only in arrow functions.
0xbc V8_V8_V8_V8 definegettersetterbyvalue vAA, vBB, vCC, vDD Default input parameter: acc: boolean value, indicating whether to set a name for the accessor.
A: Object
B: property key
C: getter function object
D: setter function object
Uses getter method C and setter method D as parameters to define the accessor of the property whose key of object A is B and stores the result object in the acc.
If C is undefined and D is undefined, getter and setter are not set respectively.
0xbd NONE dynamicimport Default input parameter: acc: value Uses the value in the acc as a parameter, executes ImportCalls, and stores the result in the acc.
0xbe IMM16_ID16_IMM8 definemethod RRRR, @AAAA, +BB Default input parameter: acc: class object or its prototype. When the static method is used, the parameter is a class object in the acc.
R: 16-bit reserved number used in Ark runtime
A: method id
B: number of formal parameters of method A
Creates the function object of method A, sets the object in the acc to the HomeObject property of the function object, and stores this function object in the acc.
0xbf NONE resumegenerator Default input parameter: acc: generator Executes GeneratorResume based on the generator stored in the acc and stores the result in the acc.
0xc0 NONE getresumemode Default input parameter: acc: generator After the generator finishes executing, obtains the restored value and stores it in the acc.
0xc1 IMM16 gettemplateobject RRRR Default input parameter: acc: object
R: 16-bit reserved number used in Ark runtime
Executes GetTemplateObject (acc) and stores the result in the acc.
0xc2 V8 delobjprop vAA Default input parameter: acc: property key
A: Object
Deletes the property whose key is acc of object A.
0xc3 V8 suspendgenerator vAA Default input parameter: acc: value
A: generator
Uses the value stored in the acc to suspend generator A and stores the result in the acc.
0xc4 V8 asyncfunctionawaituncaught vAA Default input parameter: acc: value
A: function object
Uses the function object A and the value in the acc to execute AwaitExpression and stores the result in the acc.
0xc5 V8 copydataproperties vAA Default input parameter: acc: object
A: target object
Copies all properties of the object stored in the acc to A and stores A in the acc.
0xc6 V8_V8 starrayspread vAA, vBB Default input parameter: acc: value
A: array
B: array index
Stores the value in the acc to the position starting with index B of array A in the format of SpreadElement, and stores the length of the result array in the acc.
0xc7 IMM16_V8 setobjectwithproto RRRR, vAA Default input parameter: acc: object
R: 16-bit reserved number used in Ark runtime
A: value
Sets the __proto__ property of the object stored in the acc to A.
0xc8 IMM16_V8_V8 stownbyvalue RRRR, vAA, vBB Default input parameter: acc: value
R: 16-bit reserved number used in Ark runtime
A: Object
B: property key
Stores the value in the acc to the property whose key is B of object A.
0xc9 IMM8_V8_V8 stsuperbyvalue RR, vAA, vBB Default input parameter: acc: value
R: 8-bit reserved number used in Ark runtime
A: Object
B: property key
In the current function, stores the value in the acc to the property whose key of super is B. If the property is of an accessor, the object in A is used as the this parameter when the setter function of the property is called.
0xca IMM16_V8_V8 stsuperbyvalue RRRR, vAA, vBB Default input parameter: acc: value
R: 16-bit reserved number used in Ark runtime
A: Object
B: property key
In the current function, stores the value in the acc to the property whose key of super is B. If the property is of an accessor, the object in A is used as the this parameter when the setter function of the property is called.
0xcb IMM16_V8_IMM16 stownbyindex RRRR, vAA, +BBBB Default input parameter: acc: value
R: 16-bit reserved number used in Ark runtime
A: Object
B: property key
Stores the value in the acc to the property whose key is B of object A.
0xcc IMM16_ID16_V8 stownbyname RRRR, @AAAA, vBB Default input parameter: acc: value
R: 16-bit reserved number used in Ark runtime
A: string id
B: object
Stores the value in the acc to the property whose key of object B is the string corresponding to index A.
0xcd V8 asyncfunctionresolve vAA Default input parameter: acc: value
A: asynchronous function object
Uses the value in the acc to parse the Promise object of object A and stores the result in the acc.
0xce V8 asyncfunctionreject vAA Default input parameter: acc: value
A: asynchronous function object
Uses the value in the acc to reject the Promise object of object A and stores the result in the acc.
0xcf IMM8 copyrestargs +AA A: position of the rest parameter in the formal parameter list Copies the rest parameters and stores the parameter array copy in the acc.
0xd0 IMM8_ID16_V8 stsuperbyname RR, @AAAA, vBB Default input parameter: acc: value
R: 8-bit reserved number used in Ark runtime
A: string id
B: object
In the current function, stores the value in the acc to the property whose key of super is the string corresponding to index A.
If the property is of an accessor, the object in B is used as the this parameter when the setter function of the property is called.
0xd1 IMM16_ID16_V8 stsuperbyname RRRR, @AAAA, vBB Default input parameter: acc: value
R: 16-bit reserved number used in Ark runtime
A: string id
B: object
In the current function, stores the value in the acc to the property whose key of super is the string corresponding to index A.
If the property is of an accessor, the object in B is used as the this parameter when the setter function of the property is called.
0xd2 IMM16_V8_V8 stownbyvaluewithnameset RRRR, vAA, vBB Default input parameter: acc: function object
R: 8-bit reserved number used in Ark runtime
A: Object
B: property key
Stores the value in the acc to the property whose key of object A is B and set the function name to B.
0xd3 ID16 ldbigint @AAAA A: string id Creates a value of the BigInt type based on the string corresponding to index A and stores the value in the acc.
0xd4 IMM16_ID16_V8 stownbynamewithnameset RRRR, @AAAA, vBB Default input parameter: acc: function object
R: 16-bit reserved number used in Ark runtime
A: string id
B: object
Stores the function object in the acc to the property whose key of object B is the string corresponding to index A and sets the function name to the string corresponding to index A.
0xd5 NONE nop No operation.
0xd6 IMM8 setgeneratorstate +AA Default input parameter: acc: generator object
A: generator state
Sets the generator state stored in the acc to A. For details, see GeneratorState and AsyncGeneratorState.
A may have the following values: undefined(0x0), suspendedStart(0x1), suspendedYield(0x2), executing(0x3), completed (0x4), and awaitingReturn (0x5).
0xd7 IMM8 getasynciterator RR Default input parameter: acc: object
R: 8-bit reserved number used in Ark runtime
Executes the GetIterator (acc, async) and stores the result in the acc.
0xd8 IMM8_IMM16_IMM16 ldprivateproperty RR, +AAAA, +BBBB Default input parameter: acc: object
A: lexical environment level
B: slot number
Loads and sets the value of slot B in the lexical environment beyond A levels as the property key, and stores the value corresponding to the key of the object in the acc.
0xd9 IMM8_IMM16_IMM16_V8 stprivateproperty RR, +AAAA, +BBBB, vCC A: lexical environment level
B: slot number
C: object
Loads the value of slot B in the lexical environment beyond A levels as the property key and stores the value in the acc to the key of the object C stored in the acc.
0xda IMM8_IMM16_IMM16 testin RR, +AAAA, +BBBB Default input parameter: acc: object
A: lexical environment level
B: slot number
Loads the value of slot B in the lexical environment beyond A levels, calculates whether the value is in acc, and stores the result in the acc.
0xdb IMM8_ID16_V8 definefieldbyname RR, @AAAA, vBB Default input parameter: acc: value
A: string id
B: object
Defines a property whose key is A for object B and store the value in the acc to the property.
0xdc IMM8_ID16_V8 definepropertybyname RR, @AAAA, vBB Default input parameter: acc: value
A: string id
B: object
Defines a property whose key is A for object B and store the value in the acc to the property.
0xfb PREF_NONE callruntime.notifyconcurrentresult Default input parameter: acc: return value of the concurrent function Notifies the runtime of the return value of the concurrent function.
This instruction appears only in concurrent functions.
0xfc (deprecated) Deprecated operation code.
0xfd PREF_IMM16_V8_V8 wide.createobjectwithexcludedkeys +AAAA, vBB, vCC A: number of range registers
B: object
C, …, C + A: property key value.
Based on object B, creates an object excluding the key C, …, C + A and stores it in the acc.
This instruction supports object creation by using destructor and extension syntax.
0xfe PREF_NONE throw Default input parameter: acc: exception Throws the exception stored in acc.
0x01fb PREF_IMM8_V8_V8 callruntime.definefieldbyvalue RR, vAA, vBB Default input parameter: acc: value
A: property key
B: object
Defines a property whose key is A for object B and store the value in the acc to the property.
0x01fc (deprecated) Deprecated operation code.
0x01fd PREF_IMM16_V8 wide.newobjrange +AAAA, vBB A: number of parameters
B: class object
B + 1, …, B + A - 1: parameter passed to the constructor
Uses B + 1, …, B + A - 1 as a parameter to create an instance of class B and stores it in the acc.
0x01fe PREF_NONE throw.notexists Exception thrown: undefined method.
0x02fb PREF_IMM8_IMM32_V8 callruntime.definefieldbyindex RR, +AAAAAAAA, vBB Default input parameter: acc: value
A: property key
B: object
Defines a property whose key is A for object B and store the value in the acc to the property.
0x02fc (deprecated) Deprecated operation code.
0x02fd PREF_IMM16 wide.newlexenv +AAAA A: number of slots in the lexical environment Creates a lexical environment with slot A, stores it in the acc, and enters the lexical environment.
0x02fe PREF_NONE throw.patternnoncoercible Throws an exception indicating that this object cannot be forcibly executed.
0x03fb PREF_NONE callruntime.topropertykey Default input parameter: acc: value Converts the value in the acc to the property value. If the conversion fails, an error is thrown.
0x03fc (deprecated) Deprecated operation code.
0x03fd PREF_IMM16_ID16 wide.newlexenvwithname +AAAA, @BBBB A: number of slots in the lexical environment
B: literal id
Uses the lexical variable name stored in the literal array corresponding to index B to create a lexical environment with A slots, stores this lexical environment in the acc, and enters the lexical environment.
0x03fe PREF_NONE throw.deletesuperproperty Throws an exception indicating an attempt to delete the property of the parent class.
0x04fb PREF_IMM_16_ID16 callruntime.createprivateproperty +AAAA, @BBBB A: number of symbols to be created
B: literal id
Creates A symbols. Obtain the stored private method from the literal array corresponding to index B. If a private instance method exists, an additional symbol (“method”) will be created. Based on the creation sequence, place the created symbols at the end of the lexical environment where the current class is located.
This instruction appears only when a class is defined.
0x04fc (deprecated) Deprecated operation code.
0x04fd PREF_IMM16_V8 wide.callrange +AAAA, vBB Default input parameter: acc: function object
A: number of parameters
B, …, B + A - 1: parameter
Uses B, …, B + A - 1 as a parameter to call the function object stored in the acc and stores the result in the acc.
0x04fe PREF_V8 throw.constassignment vAA A: constant variable name Throws an exception indicating a value is assigned to a constant variable.
0x05fb PREF_IMM8_IMM_16_IMM_16_V8 callruntime.defineprivateproperty RR, +AAAA, +BBBB, vCC Default input parameter: acc: value
A: lexical environment level
B: slot number
C: object
Loads the value of slot B in the lexical environment beyond A levels, changes the value to acc, and adds it to object C as a private property.
0x05fc (deprecated) Deprecated operation code.
0x05fd PREF_IMM16_V8 wide.callthisrange +AAAA, vBB Default input parameter: acc: function object
A: number of parameters
B: object
B + 1, …, B + A: parameter
Sets this to B, calls the function object stored in the acc by setting B + 1, …, B + A as a parameter, and stores the result in the acc.
0x05fe PREF_V8 throw.ifnotobject vAA A: Object Throws an exception if A is not an object.
0x06fb PREF_IMM8_V8 callruntime.callinit +RR, vAA acc: function object
R: 8-bit reserved number used in Ark runtime
A: Object
Sets this to A, calls the function object stored in the acc without passing parameters, and stores the result in the acc.
0x06fc (deprecated) Deprecated operation code.
0x06fd PREF_IMM16_V8 wide.supercallthisrange +AAAA, vBB A: number of parameters
B, …, B + A - 1: parameter
Uses B, …, B + A - 1 as a parameter to call the super function and stores the result in the acc.
When the value of A is 0, the value of B is undefined.
This instruction appears only in non-arrow functions.
0x06fe PREF_V8_V8 throw.undefinedifhole vAA, vBB A: Object
B: object name
If the value of A is hole, throws an exception indicating that the value of B is undefined.
0x07fb PREF_IMM16_ID16_ID16_IMM16_V8 callruntime.definesendableclass RRRR, @AAAA, @BBBB, +CCCC, vDD R: 16-bit reserved number used in Ark runtime
A: method id of the constructor of sendable class
B: literal id
C: number of formal parameters of method A
D: parent class
Uses the literal array corresponding to index B and parent class D to create a class object of A and stores it in the acc.
0x07fc (deprecated) Deprecated operation code.
0x07fd PREF_IMM16_V8 wide.supercallarrowrange +AAAA, vBB Default input parameter: acc: class object
A: number of parameters
B, …, B + A - 1: parameter
Uses B, …, B + A - 1 as a parameter to call the constructor function of the parent class of the class stored in the acc and stores the result in the acc.
If the value of A is 0, B is undefined.
This instruction appears only in arrow functions.
0x07fe PREF_IMM8 throw.ifsupernotcorrectcall +AA Default input parameter: acc: object
A: error type
Throws an exception if super is not called properly.
0x08fb PREF_IMM16 callruntime.ldsendableclass +AAAA A: lexical environment level Stores the Sendable class of the lexical environment beyond A levels in the acc.
0x08fc (deprecated) Deprecated operation code.
0x08fd PREF_IMM32 wide.ldobjbyindex +AAAAAAAA Default input parameter: acc: object
A: property key
Loads the property whose key is A of the object stored in the acc and stores the property in the acc.
0x08fe PREF_IMM16 throw.ifsupernotcorrectcall +AAAA Default input parameter: acc: object
A: error type
Throws an exception if super is not called properly.
0x09fb PREF_IMM8 callruntime.ldsendableexternalmodulevar +AA A: slot number Stores the external module variable of slot A in the acc. This instruction is used only in Sendable classes and Sendable functions.
0x09fc (deprecated) Deprecated operation code.
0x09fd PREF_V8_IMM32 wide.stobjbyindex vAA, +BBBBBBBB Default input parameter: acc: value
A: Object
B: property key
Stores the value in the acc to the property whose key is B of object A.
0x09fe PREF_ID16 throw.undefinedifholewithname @AAAA Default input parameter: acc: object
A: string id
If the value in the acc is hole, throws an exception indicating that the value of A is undefined.
0x0afb PREF_IMM16 callruntime.wideldsendableexternalmodulevar +AAAA A: slot number Stores the external module variable of slot A in the acc. This instruction is used only in Sendable classes and Sendable functions.
0x0afc (deprecated) Deprecated operation code.
0x0afd PREF_V8_IMM32 wide.stownbyindex vAA, +BBBBBBBB Default input parameter: acc: value
A: Object
B: property key
Stores the value in the acc to the property whose key is B of object A.
0x0bfb PREF_IMM8 callruntime.newsendableenv +AA A: number of slots in a shared lexical environment Creates a shared lexical environment with slot A and enters the lexical environment.
0x0bfc (deprecated) Deprecated operation code.
0x0bfd PREF_IMM16 wide.copyrestargs +AAAA A: start position of the rest parameters in the formal parameter list Copies the rest parameters and stores the parameter array copy in the acc.
0x0cfb PREF_IMM16 callruntime.widenewsendableenv +AAAA A: number of slots in a shared lexical environment Creates a shared lexical environment with slot A and enters the lexical environment.
0x0cfc (deprecated) Deprecated operation code.
0x0cfd PREF_IMM16_IMM16 wide.ldlexvar +AAAA, +BBBB A: lexical environment level
B: slot number
Stores the value of slot B in the lexical environment beyond A levels in the acc.
0x0dfb PREF_IMM4_IMM4 callruntime.stsendablevar +A +B Default input parameter: acc: value
A: shared lexical environment level
B: slot number
Stores the value in the acc to slot B in the shared lexical environment beyond A levels.
0x0dfc (deprecated) Deprecated operation code.
0x0dfd PREF_IMM16_IMM16 wide.stlexvar +AAAA, +BBBB Default input parameter: acc: value
A: lexical environment level
B: slot number
Stores the value in the acc to slot B in the lexical environment beyond A levels.
0x0efb PREF_IMM8_IMM8 callruntime.stsendablevar +AA +BB Default input parameter: acc: value
A: shared lexical environment level
B: slot number
Stores the value in the acc to slot B in the shared lexical environment beyond A levels.
0x0efc (deprecated) Deprecated operation code.
0x0efd PREF_IMM16 wide.getmodulenamespace +AAAA A: module index Executes the GetModuleNamespace instruction for module A and stores the result in the acc.
0x0ffb PREF_IMM16_IMM16 callruntime.widestsendablevar +AAAA +BBBB Default input parameter: acc: value
A: shared lexical environment level
B: slot number
Stores the value in the acc to slot B in the shared lexical environment beyond A levels.
0x0ffc (deprecated) Deprecated operation code.
0x0ffd PREF_IMM16 wide.stmodulevar +AAAA Default input parameter: acc: value
A: slot number
Stores the value in the acc to the module variable of slot A.
0x10fb PREF_IMM4_IMM4 callruntime.ldsendablevar +A +B A: shared lexical environment level
B: slot number
Stores the value of slot B in the shared lexical environment beyond A levels in the acc.
0x10fc (deprecated) Deprecated operation code.
0x10fd PREF_IMM16 wide.ldlocalmodulevar +AAAA A: slot number Stores the local module variables of slot A in the acc.
0x11fb PREF_IMM8_IMM8 callruntime.ldsendablevar +AA + BB A: shared lexical environment level
B: slot number
Stores the value of slot B in the shared lexical environment beyond A levels in the acc.
0x11fc (deprecated) Deprecated operation code.
0x11fd PREF_IMM16 wide.ldexternalmodulevar +AAAA A: slot number Stores the external module variable of slot A in the acc.
0x12fb PREF_IMM16_IMM16 callruntime.wideldsendablevar +AAAA +BBBB A: shared lexical environment level
B: slot number
Stores the value of slot B in the shared lexical environment beyond A levels in the acc.
0x12fc (deprecated) Deprecated operation code.
0x12fd PREF_IMM16 wide.ldpatchvar +AAAA A: slot number of the patch variable Loads the patch variable of slot A to the acc.
This instruction is used only build scenarios under the patch mode.
0x13fb PREF_IMM8 callruntime.istrue +RR Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
Calculates acc == true and stores the result in the acc.
0x13fc (deprecated) Deprecated operation code.
0x13fd PREF_IMM16 wide.stpatchvar +AAAA Default input parameter: acc: value
A: slot number of the patch variable
Stores the value in the acc to the patch variable of slot A.
This instruction is used only build scenarios under the patch mode.
0x14fb PREF_IMM8 callruntime.isfalse +RR Default input parameter: acc: operand
R: 8-bit reserved number used in Ark runtime
Calculates acc == false and stores the result in the acc.
0x15fb PREF_IMM8 callruntime.ldlazymodulevar +AA A: slot number Stores the external module variable of slot A in the acc. This instruction applies only to module variables imported using lazy import.
0x16fb PREF_IMM16 callruntime.wideldlazymodulevar +AAAA A: slot number Stores the external module variable of slot A in the acc. This instruction applies only to module variables imported using lazy import.
0x17fb PREF_IMM8 callruntime.ldlazysendablemodulevar +AA A: slot number Stores the external module variable of slot A in the acc. This instruction applies only to module variables imported through lazy import and appears only in Sendable classes and Sendable functions.
0x18fb PREF_IMM16 callruntime.wideldlazysendablemodulevar +AAAA A: slot number Stores the external module variable of slot A in the acc. This instruction applies only to module variables imported through lazy import and appears only in Sendable classes and Sendable functions.
0x14fc
0x15fc

0x2efc
(deprecated) Deprecated operation code.

你可能感兴趣的鸿蒙文章

harmony 鸿蒙ArkTS

harmony 鸿蒙Configuring arkOptions in build-profile.json5

harmony 鸿蒙Asynchronous Lock

harmony 鸿蒙Ark Bytecode File Format

harmony 鸿蒙Naming Conventions for Ark Bytecode Functions

harmony 鸿蒙Overview of Ark Bytecode

harmony 鸿蒙Shared Container

harmony 鸿蒙Asynchronous Waiting

harmony 鸿蒙ArkTS Cross-Language Interaction

harmony 鸿蒙Dynamic Import

0  赞