1e41f4b71Sopenharmony_ci# Ark Bytecode Fundamentals
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci## Overall Design
4e41f4b71Sopenharmony_ci### Overview
5e41f4b71Sopenharmony_ciArk Bytecode is a binary file generated by the ArkCompiler in ArkTS, TS or JS and provided for Ark to interpret and execute. Bytecode mainly contains Ark Bytecode instructions.<br>
6e41f4b71Sopenharmony_ciThis topic describes the design of Ark Bytecode instructions. The following sections describe the important concepts, formats, and meanings of Ark Bytecode instructions, helping you understand these instructions and develop instruction-related features.<br>
7e41f4b71Sopenharmony_ciAn Ark Bytecode instruction consists of an operation code (instruction name) and an instruction input parameter list. An operation code can be a code without a prefix or with a prefix. Registers, immediates, string id, method id, and literal id can be used as input parameters of instructions. In addition, accumulators are used as default parameters in some instructions.<br>
8e41f4b71Sopenharmony_ciIn Ark Bytecode, in addition to register and accumulator, there are four value storage modes: **global variable**, **[module](https://262.ecma-international.org/12.0/#sec-ecmascript-language-scripts-and-modules) namespace and variable**, **lexical environment and variable**, and **patch variable**. The instruction can use the values stored by these four modes as input parameters.
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci### Terms and Constraints
11e41f4b71Sopenharmony_ci#### Term
12e41f4b71Sopenharmony_ciThe following table lists the terms involved in this topic.
13e41f4b71Sopenharmony_ci
14e41f4b71Sopenharmony_ci|     Term     |      Description       |
15e41f4b71Sopenharmony_ci|   ----------  |    ----------   |
16e41f4b71Sopenharmony_ci|  acc         |	Accumulator, a special register in the Ark Bytecode.  |
17e41f4b71Sopenharmony_ci|  bit	|  Used as a unit in this topic.  |
18e41f4b71Sopenharmony_ci|  hole	|  Objects or variables that have not been initialized.  |
19e41f4b71Sopenharmony_ci|  id	|  Index, which is a general name of string id, method id, or literal id.  |
20e41f4b71Sopenharmony_ci|  string id	|  String index, which is a 16-bit number used to link to the corresponding string.  |
21e41f4b71Sopenharmony_ci|  method id	|  Method index, which is a 16-bit number and is used to link to the corresponding method.  |
22e41f4b71Sopenharmony_ci|  literal id  |     Literal index, which is a 16-bit number and is used to link to the corresponding literal array.  |
23e41f4b71Sopenharmony_ci|  lexical environment	|  Lexical environment, which is used to store the semantic environment of closure variables.  |
24e41f4b71Sopenharmony_ci|  lexical variable	|  Lexical variable, a closure variable stored in the lexical environment.  |
25e41f4b71Sopenharmony_ci
26e41f4b71Sopenharmony_ci#### Constraints
27e41f4b71Sopenharmony_ci* All content described in code in this topic follows the ArkTS Language Specifications. For details, see [Introduction](introduction-to-arkts.md).
28e41f4b71Sopenharmony_ci* This topic applies only to Ark Bytecode whose version number is 11.0.2.0. (The version number is an internal reserved field of the ArkCompiler.)
29e41f4b71Sopenharmony_ci
30e41f4b71Sopenharmony_ci### Bytecode Composition
31e41f4b71Sopenharmony_ci#### Operation Code and Prefix
32e41f4b71Sopenharmony_ciThe operation code in the Ark Bytecode is usually encoded as an 8-bit value, so there can be a maximum of 256 operation codes. With the runtime features of the ArkCompiler are getting evolved, the number of bytecode is increasing and has exceeded 256. Therefore, the Ark Bytecode introduces a prefix to extend the maximum width of the operation code from 8 bits to 16 bits. An 8-bit operation code (without a prefix) is used to indicate an instruction that appears frequently, and a 16-bit operation code (with a prefix) is used to indicate an instruction that appears occasionally <br>
33e41f4b71Sopenharmony_ciAn operation code with a prefix is a 16-bit value stored in little-endian mode. It consists of an 8-bit operation code and an 8-bit prefix. You can shift the operation code leftwards by 8 bits and run the **OR** logic with the code and the prefix to encode.
34e41f4b71Sopenharmony_ci|     Prefix Operation Code     |      Mnemonic       |      Description       |
35e41f4b71Sopenharmony_ci|     ----------  |    ----------   |    ----------   |
36e41f4b71Sopenharmony_ci|  0xfe	  |  throw	|  Conditional/Unconditional **throw** instruction. |
37e41f4b71Sopenharmony_ci|  0xfd	  |  wide	|  An instruction that contains an immediate, id, or register index with a wider encoding width. |
38e41f4b71Sopenharmony_ci|  0xfc	  |  deprecated	 |  Instructions that are no longer generated by the ArkCompiler are used only to maintain runtime compatibility.<br>Following sections will no longer describe such instructions. |
39e41f4b71Sopenharmony_ci|  0xfb	  |  callruntime | 	Instructions for calling runtime methods. |
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ciThe mnemonic of a prefix operation code is in the form of **prefix mnemonic.operation code mnemonic**, for example, **wide.stlexvar**. If the operation code of the **stlexvar** instruction is **0x0d** and the prefix **wide** is **0xfd**, the operation code of **wide.stlexvar** is **0x0dfd**.
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci#### Register and Accumulator
44e41f4b71Sopenharmony_ciThe Ark VM model is built based on registers. All registers are virtual registers. When the value of the original type is stored in the register, the width of the register is 64 bits. When the value of the object type is stored in the register, the width of the register is adapted to be wide enough to store the reference to the object.<br>
45e41f4b71Sopenharmony_ciIn Ark Bytecode, there is an invisible register called accumulator (also referred to as acc for short). acc is the default destination register of many instructions and the default parameter of many instructions. It does not occupy the encoding width, which helps generate more compact bytecode.<br>
46e41f4b71Sopenharmony_ci
47e41f4b71Sopenharmony_ciExample:
48e41f4b71Sopenharmony_ci```ts
49e41f4b71Sopenharmony_cifunction foo(): number {
50e41f4b71Sopenharmony_ci    return 1;
51e41f4b71Sopenharmony_ci}
52e41f4b71Sopenharmony_ci```
53e41f4b71Sopenharmony_ciRelated instructions in the bytecode:
54e41f4b71Sopenharmony_ci```assembly
55e41f4b71Sopenharmony_ci.function any .foo(any a0, any a1, any a2) {
56e41f4b71Sopenharmony_ci    ldai 0x1
57e41f4b71Sopenharmony_ci    return
58e41f4b71Sopenharmony_ci}
59e41f4b71Sopenharmony_ci```
60e41f4b71Sopenharmony_ci*ldai 0x1*: loads integer literal **1** to acc.<br>
61e41f4b71Sopenharmony_ci*return*: returns the value in acc.
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ci#### Immediate
64e41f4b71Sopenharmony_ciSome instructions in Ark Bytecode use constants to represent data such as integer values, double-precision floating-point values, and jump offsets. Such constants are called immediate, which can be 8 bits, 16 bits, 32 bits, or 64 bits.
65e41f4b71Sopenharmony_ci
66e41f4b71Sopenharmony_ci#### Method Index, String Index, and Literal Index
67e41f4b71Sopenharmony_ciThe Ark Bytecode stores the offsets of all methods, strings, and literal arrays used in the source file. The literal array stores various literal data, such as an integer number, a string offset, and a method offset. In the Ark Bytecode instruction, indexes of these methods, strings, and literal arrays are 16 bits, which are respectively referred to as a method index (method id), a string index (string id), and a literal index (literal id). These indexes are encoded in instructions to reference methods, strings, and literal arrays.
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ci### Value Storage Mode
70e41f4b71Sopenharmony_ci#### Global Variables
71e41f4b71Sopenharmony_ciIn [Script](https://262.ecma-international.org/12.0/#sec-ecmascript-language-scripts-and-modules) build mode, a global variable is a variable stored in a globally unique mapping. Its key is the name of the global variable, and its value is that of the global variable. Global variables can be accessed through global-related instructions.<br>
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ciExample:
74e41f4b71Sopenharmony_ci```ts
75e41f4b71Sopenharmony_cifunction foo(): void {
76e41f4b71Sopenharmony_ci    a += 2;
77e41f4b71Sopenharmony_ci    b = 5;
78e41f4b71Sopenharmony_ci}
79e41f4b71Sopenharmony_ci```
80e41f4b71Sopenharmony_ciRelated instructions in the bytecode:
81e41f4b71Sopenharmony_ci```assembly
82e41f4b71Sopenharmony_ci.function any .foo(any a0, any a1, any a2) {
83e41f4b71Sopenharmony_ci    tryldglobalbyname 0x0, a
84e41f4b71Sopenharmony_ci    sta v4
85e41f4b71Sopenharmony_ci    ldai 0x2
86e41f4b71Sopenharmony_ci    add2 0x1, v4
87e41f4b71Sopenharmony_ci    trystglobalbyname 0x2, a
88e41f4b71Sopenharmony_ci    ldai 0x5
89e41f4b71Sopenharmony_ci    trystglobalbyname 0x3, b
90e41f4b71Sopenharmony_ci    ...
91e41f4b71Sopenharmony_ci}
92e41f4b71Sopenharmony_ci```
93e41f4b71Sopenharmony_ci*tryldglobalbyname 0x0, a*: loads the global variable named **a** to acc. If this variable does not exist, an exception is thrown.<br>
94e41f4b71Sopenharmony_ci*trystglobalbyname 0x2, a*: stores the value of acc to the global variable named **a**. If this variable does not exist, an exception is thrown.<br>
95e41f4b71Sopenharmony_ci*trystglobalbyname 0x3, b*: stores the value of acc to the global variable named **b**. If this variable does not exist, an exception is thrown.<br>
96e41f4b71Sopenharmony_ci**NOTE**<br>
97e41f4b71Sopenharmony_ci**0x0**, **0x2**, and **0x3** in the preceding instructions are reserved for internal use in Ark runtime.
98e41f4b71Sopenharmony_ci
99e41f4b71Sopenharmony_ci#### Module Namespace and Module Variable
100e41f4b71Sopenharmony_ciAll [module namespaces](https://262.ecma-international.org/12.0/#module-namespace-exotic-object) used in the source file are compiled into an array. An index is used in the instruction to reference a module namespace. For example, *getmodulenamespace 0x1* references the module namespace at the *0x1* index.<br>
101e41f4b71Sopenharmony_ciAll module variables used in the source file are compiled into an array. In the instruction, an index is used to reference a module variable. For example, *stmodulevar 0x1* references a module variable at *0x1* index.<br>
102e41f4b71Sopenharmony_ciIn 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 respectively to load local module variables and external module variables.<br>
103e41f4b71Sopenharmony_ciThe scenarios for generating module instructions include [import](https://262.ecma-international.org/12.0/#sec-imports) and [export](https://262.ecma-international.org/12.0/#sec-exports). The main scenarios are as follows:
104e41f4b71Sopenharmony_ci* **import * as**: module namespace
105e41f4b71Sopenharmony_ci* **import { }**: module variable
106e41f4b71Sopenharmony_ci* **export**: local export
107e41f4b71Sopenharmony_ci
108e41f4b71Sopenharmony_ci**NOTE**<br>
109e41f4b71Sopenharmony_ciThe logic related to the module is implemented within the compiler. With the evolution of the ArkCompiler, new scenarios involving module instructions may occur. On the other hand, existing scenarios related to module namespaces and module variable instructions may no longer generate module-related instructions as requirements evolve and code is reconstructed.<br>
110e41f4b71Sopenharmony_ci
111e41f4b71Sopenharmony_ciExample:
112e41f4b71Sopenharmony_ci```ts
113e41f4b71Sopenharmony_ciimport { a, b } from "./module_foo"
114e41f4b71Sopenharmony_ciimport * as c from "./module_bar"
115e41f4b71Sopenharmony_ci
116e41f4b71Sopenharmony_ciexport let d: number = 3;
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_cia + b + d;
119e41f4b71Sopenharmony_ci```
120e41f4b71Sopenharmony_ciRelated instructions in the bytecode:
121e41f4b71Sopenharmony_ci```assembly
122e41f4b71Sopenharmony_ci.function any .func_main_0(any a0, any a1, any a2) {
123e41f4b71Sopenharmony_ci    getmodulenamespace 0x1
124e41f4b71Sopenharmony_ci    ldai 0x3
125e41f4b71Sopenharmony_ci    stmodulevar 0x0
126e41f4b71Sopenharmony_ci    ldexternalmodulevar 0x0
127e41f4b71Sopenharmony_ci    sta v0
128e41f4b71Sopenharmony_ci    throw.undefinedifholewithname a
129e41f4b71Sopenharmony_ci    ldexternalmodulevar 0x1
130e41f4b71Sopenharmony_ci    sta v1
131e41f4b71Sopenharmony_ci    throw.undefinedifholewithname b
132e41f4b71Sopenharmony_ci    lda v1
133e41f4b71Sopenharmony_ci    add2 0x0, v0
134e41f4b71Sopenharmony_ci    sta v0
135e41f4b71Sopenharmony_ci    ldlocalmodulevar 0x0
136e41f4b71Sopenharmony_ci    sta v1
137e41f4b71Sopenharmony_ci    throw.undefinedifholewithname d
138e41f4b71Sopenharmony_ci    lda v1
139e41f4b71Sopenharmony_ci    add2 0x1, v0
140e41f4b71Sopenharmony_ci    ...
141e41f4b71Sopenharmony_ci}
142e41f4b71Sopenharmony_ci```
143e41f4b71Sopenharmony_ci*getmodulenamespace 0x1*: obtains the module namespace (c) of slot 1 and store it in acc.<br>
144e41f4b71Sopenharmony_ci*stmodulevar 0x0*: stores the values in acc to slot 0 of the current module.<br>
145e41f4b71Sopenharmony_ci*ldexternalmodulevar 0x0*: loads the value (a) of slot 0 of the external module and stores it in acc.<br>
146e41f4b71Sopenharmony_ci*ldlocalmodulevar 0x0*: loads the value (d) of slot 0 of the current local module and stores it in acc.
147e41f4b71Sopenharmony_ci
148e41f4b71Sopenharmony_ci#### Lexical Environment and Lexical Variable
149e41f4b71Sopenharmony_ciIn Ark Bytecode, a lexical environment may be considered as an array with multiple slots, and each slot corresponds to one lexical variable. Multiple lexical environments may exist in one method. The relative level number and slot index of the lexical environment are used in the instruction to represent a lexical variable. For example, *ldlexvar 0x1, 0x2* is used to store the value of slot 2 in the lexical environment beyond one level to acc.
150e41f4b71Sopenharmony_ci```
151e41f4b71Sopenharmony_ci|xxx|xxx|xxx|xxx|   <-- First lexical environment beyond the current lexical environment.
152e41f4b71Sopenharmony_ci         ^
153e41f4b71Sopenharmony_ci         |------------ ldlexvar 0x1, 0x2
154e41f4b71Sopenharmony_ci
155e41f4b71Sopenharmony_ci|xxx|xxx|xxx|xxx|   <-- Current lexical environment.
156e41f4b71Sopenharmony_ci```
157e41f4b71Sopenharmony_ci**NOTE**<br>
158e41f4b71Sopenharmony_ciThe 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.
159e41f4b71Sopenharmony_ciExample:
160e41f4b71Sopenharmony_ci```ts
161e41f4b71Sopenharmony_cifunction foo(): void {
162e41f4b71Sopenharmony_ci    let a: number = 1;
163e41f4b71Sopenharmony_ci    function bar(): number {
164e41f4b71Sopenharmony_ci        return a;
165e41f4b71Sopenharmony_ci    }
166e41f4b71Sopenharmony_ci}
167e41f4b71Sopenharmony_ci```
168e41f4b71Sopenharmony_ciRelated instructions in the bytecode:
169e41f4b71Sopenharmony_ci```assembly
170e41f4b71Sopenharmony_ci.function any .foo(any a0, any a1, any a2) {
171e41f4b71Sopenharmony_ci    newlexenv 0x1
172e41f4b71Sopenharmony_ci    ...
173e41f4b71Sopenharmony_ci    definefunc 0x0, .bar, 0x0
174e41f4b71Sopenharmony_ci    sta v3
175e41f4b71Sopenharmony_ci    ldai 0x1 
176e41f4b71Sopenharmony_ci    ...
177e41f4b71Sopenharmony_ci    stlexvar 0x0, 0x0
178e41f4b71Sopenharmony_ci    ...
179e41f4b71Sopenharmony_ci}    
180e41f4b71Sopenharmony_ci
181e41f4b71Sopenharmony_ci.function any .bar(any a0, any a1, any a2) {
182e41f4b71Sopenharmony_ci    ...
183e41f4b71Sopenharmony_ci    ldlexvar 0x0, 0x0
184e41f4b71Sopenharmony_ci    ...
185e41f4b71Sopenharmony_ci}
186e41f4b71Sopenharmony_ci```
187e41f4b71Sopenharmony_ci*newlexenv 0x1*: creates a lexical environment whose slot number is 1, stores it in acc, and enters this environment.<br>
188e41f4b71Sopenharmony_ci*stlexvar 0x0, 0x0*: stores the value in acc to slot 0 of the lexical environment beyond 0 level.<br>
189e41f4b71Sopenharmony_ci*ldlexvar 0x0, 0x0*: stores the value of slot 0 in the lexical environment beyond 0 level to acc.
190e41f4b71Sopenharmony_ci
191e41f4b71Sopenharmony_ci#### Patch Variable
192e41f4b71Sopenharmony_ciThe ArkCompiler supports patch mode. When a source file is modified, you can compile it in the patch mode and generate a patch bytecode. The patch bytecode works with the original bytecode to update features. When the ArkCompiler compiles in patch mode, the generated patch variables are stored in a special patch lexical environment. The Ark Bytecode uses the slot number in the patch lexical environment to reference the patch variable. For example, *ldpatchvar 0x1* is used to load the patch variable of slot 1.<br>
193e41f4b71Sopenharmony_ci
194e41f4b71Sopenharmony_ciExample:
195e41f4b71Sopenharmony_ci```ts
196e41f4b71Sopenharmony_cifunction bar(): void {} // Add a statement to compile the patch.
197e41f4b71Sopenharmony_ci
198e41f4b71Sopenharmony_cifunction foo(): void {
199e41f4b71Sopenharmony_ci    bar(); // Add a statement to compile the patch.
200e41f4b71Sopenharmony_ci}
201e41f4b71Sopenharmony_ci```
202e41f4b71Sopenharmony_ciRelated instructions in the bytecode:
203e41f4b71Sopenharmony_ci```assembly
204e41f4b71Sopenharmony_ci.function any foo(...) {
205e41f4b71Sopenharmony_ci    ...
206e41f4b71Sopenharmony_ci    wide.ldpatchvar 0x0
207e41f4b71Sopenharmony_ci    sta v4
208e41f4b71Sopenharmony_ci    lda v4
209e41f4b71Sopenharmony_ci    callarg0 0x0
210e41f4b71Sopenharmony_ci    ...
211e41f4b71Sopenharmony_ci}
212e41f4b71Sopenharmony_ci
213e41f4b71Sopenharmony_ci.function any patch_main_0(...) {
214e41f4b71Sopenharmony_ci    newlexenv 0x1
215e41f4b71Sopenharmony_ci    definefunc 0x1, bar:(any,any,any), 0x0
216e41f4b71Sopenharmony_ci    wide.stpatchvar 0x0
217e41f4b71Sopenharmony_ci    ...
218e41f4b71Sopenharmony_ci}
219e41f4b71Sopenharmony_ci```
220e41f4b71Sopenharmony_ci*wide.stpatchvar 0x0*: stores the **bar** function to slot 0 in the patch lexical environment.<br>
221e41f4b71Sopenharmony_ci*wide.ldpatchvar 0x0*: stores the value of slot 0 in the patch lexical environment to acc.
222e41f4b71Sopenharmony_ci
223e41f4b71Sopenharmony_ci### Function Calling Specifications
224e41f4b71Sopenharmony_ciFor a method that contains N pieces of formal parameters, the last N+3 registers used by the method are used to pass parameters. In this case, the first three registers represent the function (FunctionObject) itself, [new.target](https://262.ecma-international.org/12.0/#sec-function-environment-records) (NewTarget), and **this** in the lexical environment. The subsequent N registers correspond to these N pieces of formal parameters.<br>
225e41f4b71Sopenharmony_ci
226e41f4b71Sopenharmony_ciExample:
227e41f4b71Sopenharmony_ci```ts
228e41f4b71Sopenharmony_cifunction foo(a: number, b: number): void {}
229e41f4b71Sopenharmony_ci```
230e41f4b71Sopenharmony_ciRelated instructions in the bytecode:
231e41f4b71Sopenharmony_ci```assembly
232e41f4b71Sopenharmony_ci.function any .foo(any a0, any a1, any a2, any a3, any a4) {
233e41f4b71Sopenharmony_ci    // a0: FunctionObject
234e41f4b71Sopenharmony_ci    // a1: NewTarget
235e41f4b71Sopenharmony_ci    // a2: this 
236e41f4b71Sopenharmony_ci    // a3: a
237e41f4b71Sopenharmony_ci    // a4: b
238e41f4b71Sopenharmony_ci}
239e41f4b71Sopenharmony_ci```
240e41f4b71Sopenharmony_ci
241e41f4b71Sopenharmony_ci## Bytecode Format Description
242e41f4b71Sopenharmony_ci|     Mnemonic     |      Semantic Description      |
243e41f4b71Sopenharmony_ci|   ----------   |    ----------   |
244e41f4b71Sopenharmony_ci|  ID16	 |  8-bit operation code and 16-bit id  |
245e41f4b71Sopenharmony_ci|  IMM16	 |  8-bit operation code and 16-bit immediate  |
246e41f4b71Sopenharmony_ci|  IMM16_ID16	 |  8-bit operation code, 16-bit immediate, and 16-bit id  |
247e41f4b71Sopenharmony_ci|  IMM16_ID16_ID16_IMM16_V8	 |  8-bit operation code, 16-bit immediate, two 16-bit id, 16-bit immediate, and 8-bit register  |
248e41f4b71Sopenharmony_ci|  IMM16_ID16_IMM8	 |  8-bit operation code, 16-bit immediate, 16-bit id, and 8-bit immediate  |
249e41f4b71Sopenharmony_ci|  IMM16_ID16_V8	 |  8-bit operation code, 16-bit immediate, 16-bit id, and 8-bit register  |
250e41f4b71Sopenharmony_ci|  IMM16_IMM16	 |  8-bit operation code and two 16-bit immediates  |
251e41f4b71Sopenharmony_ci|  IMM16_IMM8_V8	 |  8-bit operation code, 16-bit immediate, 8-bit immediate, and 8-bit register  |
252e41f4b71Sopenharmony_ci|  IMM16_V8	 |  8-bit operation code, 16-bit immediate, and 8-bit register  |
253e41f4b71Sopenharmony_ci|  IMM16_V8_IMM16	 |  8-bit operation code, 16-bit immediate, 8-bit register, and 16-bit immediate  |
254e41f4b71Sopenharmony_ci|  IMM16_V8_V8	 |  8-bit operation code, 16-bit immediate, and two 8-bit registers  |
255e41f4b71Sopenharmony_ci|  IMM32	 |  8-bit operation code and 32-bit immediate  |
256e41f4b71Sopenharmony_ci|  IMM4_IMM4	 |  8-bit operation code, two 4-bit immediates  |
257e41f4b71Sopenharmony_ci|  IMM64	 |  8-bit operation code and 64-bit immediate  |
258e41f4b71Sopenharmony_ci|  IMM8	 |  8-bit operation code and 8-bit immediate  |
259e41f4b71Sopenharmony_ci|  IMM8_ID16	 |  8-bit operation code, 8-bit immediate, and 16-bit id  |
260e41f4b71Sopenharmony_ci|  IMM8_ID16_ID16_IMM16_V8	 |  8-bit operation code, 8-bit immediate, two 16-bit id, 16-bit immediate, and 8-bit register  |
261e41f4b71Sopenharmony_ci|  IMM8_ID16_IMM8	 |  8-bit operation code, 8-bit immediate, 16-bit id, 8-bit immediate  |
262e41f4b71Sopenharmony_ci|  IMM8_ID16_V8	 |  8-bit operation code, 8-bit immediate, 16-bit id, and 8-bit register  |
263e41f4b71Sopenharmony_ci|  IMM8_IMM16	 |  8-bit operation code, 8-bit immediate, and 16-bit immediate  |
264e41f4b71Sopenharmony_ci|  IMM8_IMM8	 |  8-bit operation code, two 8-bit immediates  |
265e41f4b71Sopenharmony_ci|  IMM8_IMM8_V8	 |  8-bit operation code, two 8-bit immediates, and 8-bit register  |
266e41f4b71Sopenharmony_ci|  IMM8_V8	 |  8-bit operation code, 8-bit immediate, and 8-bit register  |
267e41f4b71Sopenharmony_ci|  IMM8_V8_IMM16	 |  8-bit operation code, 8-bit immediate, 8-bit register, and 16-bit immediate  |
268e41f4b71Sopenharmony_ci|  IMM8_V8_V8	 |  8-bit operation code, 8-bit immediate, and two 8-bit registers  |
269e41f4b71Sopenharmony_ci|  IMM8_V8_V8_V8	 |  8-bit operation code, 8-bit immediate, and three 8-bit registers  |
270e41f4b71Sopenharmony_ci|  IMM8_V8_V8_V8_V8	 |  8-bit operation code, 8-bit immediate, and four 8-bit registers  |
271e41f4b71Sopenharmony_ci|  NONE	 |  8-bit operation code  |
272e41f4b71Sopenharmony_ci|  PREF_IMM16	 |  16-bit prefix operation code, 16-bit immediate  |
273e41f4b71Sopenharmony_ci|  PREF_IMM16_ID16	 |  16-bit prefix operation code, 16-bit immediate, and 16-bit id  |
274e41f4b71Sopenharmony_ci|  PREF_IMM16_V8	 |  16-bit prefix operation code, 16-bit immediate, and 8-bit register  |
275e41f4b71Sopenharmony_ci|  PREF_IMM16_V8_V8	 |  16-bit prefix operation code, 16-bit immediate, and two 8-bit registers  |
276e41f4b71Sopenharmony_ci|  PREF_IMM8	 |  16-bit prefix operation code and 8-bit immediate  |
277e41f4b71Sopenharmony_ci|  PREF_NONE	 |  16-bit prefix operation code  |
278e41f4b71Sopenharmony_ci|  PREF_V8	 |  16-bit prefix operation code and 8-bit register  |
279e41f4b71Sopenharmony_ci|  PREF_V8_ID16	 |  16-bit prefix operation code, 8-bit register, and16-bit id  |
280e41f4b71Sopenharmony_ci|  PREF_V8_IMM32	 |  16-bit prefix operation code, 8-bit register, and 32-bit immediate  |
281e41f4b71Sopenharmony_ci|  V16_V16	 |  8-bit operation code and two 16-bit registers  |
282e41f4b71Sopenharmony_ci|  V4_V4	 |  8-bit operation code and two 4-bit registers  |
283e41f4b71Sopenharmony_ci|  V8	 |  8-bit operation code and 8-bit register  |
284e41f4b71Sopenharmony_ci|  V8_IMM16	 |  8-bit operation code, 8-bit register, and 16-bit immediate  |
285e41f4b71Sopenharmony_ci|  V8_IMM8	 |  8-bit operation code, 8-bit register, and 8-bit immediate  |
286e41f4b71Sopenharmony_ci|  V8_V8	 |  8-bit operation code and two 8-bit registers  |
287e41f4b71Sopenharmony_ci|  V8_V8_V8	 |  8-bit operation code and three 8-bit registers  |
288e41f4b71Sopenharmony_ci|  V8_V8_V8_V8	 |  8-bit operation code and four 8-bit registers  |
289e41f4b71Sopenharmony_ci
290e41f4b71Sopenharmony_ci## Bytecode Summary
291e41f4b71Sopenharmony_ciThe table below summarizes all Ark Bytecodes in the current version. The register index, immediate, and id are described in the form of one character for every four-bit width.<br>
292e41f4b71Sopenharmony_ciTake the *defineclasswithbuffer RR, @AAAA, @BBBB, +CCCC, vDD* instruction as an example:<br>
293e41f4b71Sopenharmony_ci* *defineclasswithbuffer*: indicates the operation code mnemonic.
294e41f4b71Sopenharmony_ci* *RR*: 8-bit reserved number used internally during Ark runtime. The number mentioned here is just an example showing a complete instruction format.
295e41f4b71Sopenharmony_ci* *@AAAA, @BBBB*: 16-bit id
296e41f4b71Sopenharmony_ci* *+CCCC*: 16-bit immediate
297e41f4b71Sopenharmony_ci* *vDD*: 8-bit register index
298e41f4b71Sopenharmony_ci
299e41f4b71Sopenharmony_ci|    Operation Code  |   Format   |  Mnemonic/Syntax  |     Parameter      |      Description    |
300e41f4b71Sopenharmony_ci|   -------   |  -------  |  ----------  |   ----------   |   --------   |
301e41f4b71Sopenharmony_ci|  0x00	|  NONE	|  ldundefined	|   |  	Load **undefined** to acc.  |
302e41f4b71Sopenharmony_ci|  0x01	|  NONE	|  ldnull	|   |  	Load **null** to acc.  |
303e41f4b71Sopenharmony_ci|  0x02	|  NONE	|  ldtrue	|   |  	Load **true** to acc.  |
304e41f4b71Sopenharmony_ci|  0x03	|  NONE	|  ldfalse	|   |  	Load **false** to acc.  |
305e41f4b71Sopenharmony_ci|  0x04	|  NONE	|  createemptyobject	|   |  	Create an empty object and store it in acc.  |
306e41f4b71Sopenharmony_ci|  0x05	|  IMM8|  	createemptyarray RR	|  R: 8-bit reserved number used in Ark runtime	|  Create an empty array and store it in acc.  |
307e41f4b71Sopenharmony_ci|  0x06	|  IMM8_ID16	|  createarraywithbuffer RR, @AAAA	|  R: 8-bit reserved number used in Ark runtime<br>A: 16-bit literal id	|  Use the literal array corresponding to index A to create an array object and store it in acc.  |
308e41f4b71Sopenharmony_ci|  0x07	|  IMM8_ID16	|  createobjectwithbuffer RR, @AAAA	|  R: 8-bit reserved number used in Ark runtime<br>A: 16-bit literal id	|  Use the literal array corresponding to index A to create an object and store it in acc.  |
309e41f4b71Sopenharmony_ci|  0x08	|  IMM8_IMM8_V8	|  newobjrange RR, +AA, vBB	|  R: 8-bit reserved number used in Ark runtime<br>A: number of parameters<br>B: class object<br>B + 1, ..., B + A - 1: parameter passed to the constructor |  	Use **B + 1, ..., B + A - 1** as a parameter to create an instance of class B and store it in acc.  |
310e41f4b71Sopenharmony_ci|  0x09	|  IMM8	|  newlexenv +AA	|  A: number of slots in the lexical environment	|  Create a lexical environment with slot A, store it in acc, and enter the lexical environment.  |
311e41f4b71Sopenharmony_ci|  0x0a	|  IMM8_V8	|  add2 RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A + acc** and store the result in acc.  |
312e41f4b71Sopenharmony_ci|  0x0b	|  IMM8_V8	|  sub2 RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A - acc** and store the result in acc.  |
313e41f4b71Sopenharmony_ci|  0x0c	|  IMM8_V8	|  mul2 RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A * acc** and store the result in acc.  |
314e41f4b71Sopenharmony_ci|  0x0d	|  IMM8_V8	|  div2 RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A / acc** and store the result in acc.  |
315e41f4b71Sopenharmony_ci|  0x0e	|  IMM8_V8	|  mod2 RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A % acc** and store the result in acc.  |
316e41f4b71Sopenharmony_ci|  0x0f	|  IMM8_V8	|  eq RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A == acc** and store the result in acc.  |
317e41f4b71Sopenharmony_ci|  0x10	|  IMM8_V8	|  noteq RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A != acc** and store the result in acc.  |
318e41f4b71Sopenharmony_ci|  0x11	|  IMM8_V8	|  less RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A < acc** and store the result in acc.  |
319e41f4b71Sopenharmony_ci|  0x12	|  IMM8_V8	|  lesseq RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A <= acc** and store the result in acc.  |
320e41f4b71Sopenharmony_ci|  0x13	|  IMM8_V8	|  greater RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A > acc** and store the result in acc.  |
321e41f4b71Sopenharmony_ci|  0x14	|  IMM8_V8	|  greatereq RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A >= acc** and store the result in acc.  |
322e41f4b71Sopenharmony_ci|  0x15	|  IMM8_V8	|  shl2 RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A << acc** and store the result in acc.  |
323e41f4b71Sopenharmony_ci|  0x16	|  IMM8_V8	|  shr2 RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A >>> acc** and store the result in acc.  |
324e41f4b71Sopenharmony_ci|  0x17	|  IMM8_V8	|  ashr2 RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A >> acc** and store the result in acc.  |
325e41f4b71Sopenharmony_ci|  0x18	|  IMM8_V8	|  and2 RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A & acc** and store the result in acc.  |
326e41f4b71Sopenharmony_ci|  0x19	|  IMM8_V8	|  or2 RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A \| acc** and store the result in acc.  |
327e41f4b71Sopenharmony_ci|  0x1a	|  IMM8_V8	|  xor2 RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A ^ acc** and store the result in acc. |
328e41f4b71Sopenharmony_ci|  0x1b	|  IMM8_V8	|  exp RR, vAA	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand	|  Calculate **A** **\**** **acc** and store the result in acc.  |
329e41f4b71Sopenharmony_ci|  0x1c	|  IMM8	|  typeof RR	|  Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime	|  Calculate **typeof acc** and store the result in acc.  |
330e41f4b71Sopenharmony_ci|  0x1d	|  IMM8	|  tonumber RR	|  Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime	|  Use acc as a parameter, execute [ToNumber](https://262.ecma-international.org/12.0/#sec-tonumber), and store the result in acc.  |
331e41f4b71Sopenharmony_ci|  0x1e	|  IMM8	|  tonumeric RR	|  Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime	|  Use acc as a parameter, execute [ToNumeric](https://262.ecma-international.org/12.0/#sec-tonumeric), and store the result in acc.  |
332e41f4b71Sopenharmony_ci|  0x1f	|  IMM8	|  neg RR	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime	|  Calculate **-acc** and store the result in acc.  |
333e41f4b71Sopenharmony_ci|  0x20	|  IMM8	|  not RR	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime	|  Calculate **~acc** and store the result in acc.  |
334e41f4b71Sopenharmony_ci|  0x21	|  IMM8	|  inc RR	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime	|  Calculate **acc + 1** and store the result in acc.  |
335e41f4b71Sopenharmony_ci|  0x22	|  IMM8	|  dec RR	|  Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime	|  Calculate **acc - 1** and store the result in acc.  |
336e41f4b71Sopenharmony_ci|  0x23	|  NONE	|  istrue	|  Default input parameter: acc: object	|  Calculate **acc == true** and store the result in acc.  |
337e41f4b71Sopenharmony_ci|  0x24	|  NONE	|  isfalse	|  Default input parameter: acc: object	|  Calculate **acc == false** and store the result in acc.  |
338e41f4b71Sopenharmony_ci|  0x25	|  IMM8_V8	|  isin RR, vAA	|  Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime<br>A: object	|  Calculate **A in acc** and store the result in acc.  |
339e41f4b71Sopenharmony_ci|  0x26	|  IMM8_V8	|  instanceof RR, vAA	|  Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime<br>A: object	|  Calculate **A instanceof acc** and store the result in acc.  |
340e41f4b71Sopenharmony_ci|  0x27	|  IMM8_V8	|  strictnoteq RR, vAA	|  Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime<br>A: object	|  Calculate **acc !== A** and store the result in acc.  |
341e41f4b71Sopenharmony_ci|  0x28	|  IMM8_V8	|  stricteq RR, vAA	|  Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime<br>A: object	|  Calculate **acc === A** and store the result in acc.  |
342e41f4b71Sopenharmony_ci|  0x29	|  IMM8	|  callarg0 RR	|  Default input parameter: acc: function object<br>R: 8-bit reserved number used in Ark runtime	|  Directly call the function object stored in acc without passing parameters and store the result in acc.  |
343e41f4b71Sopenharmony_ci|  0x2a	|  IMM8_V8	|  callarg1 RR, vAA	|  Default input parameter: acc: function object<br>R: 8-bit reserved number used in Ark runtime<br>A: parameter	|  Use **A** as a parameter to call the function object stored in acc and store the result in acc.  |
344e41f4b71Sopenharmony_ci|  0x2b	|  IMM8_V8_V8	|  callargs2 RR, vAA, vBB	|  Default input parameter: acc: function object<br>R: 8-bit reserved number used in Ark runtime<br>A, B: parameter	|  Use **A** and **B** as parameters to call the function object stored in acc and store the result in acc.  |
345e41f4b71Sopenharmony_ci|  0x2c	|  IMM8_V8_V8_V8	|  callargs3 RR, vAA, vBB, vCC	|  Default input parameter: acc: function object<br>R: 8-bit reserved number used in Ark runtime<br>A, B, C: parameter	|  Use **A**, **B**, and **C** as parameters to call the function object stored in acc and store the result in acc.  |
346e41f4b71Sopenharmony_ci|  0x2d	|  IMM8_V8	|  callthis0 RR, vAA	|  Default input parameter: acc: function object<br>R: 8-bit reserved number used in Ark runtime<br>A: object	|  Set **this** to **A**, call the function object stored in acc without passing parameters, and store the result in acc.  |
347e41f4b71Sopenharmony_ci|  0x2e	|  IMM8_V8_V8	|  callthis1 RR, vAA, vBB	|  Default input parameter: acc: function object<br>R: 8-bit reserved number used in Ark runtime<br>A: object<br>B: parameter	|  Set **this** to **A**, call the function object stored in acc by setting **B** as the parameter, and store the result in acc.  |
348e41f4b71Sopenharmony_ci|  0x2f	|  IMM8_V8_V8_V8	|  callthis2 RR, vAA, vBB, vCC	|  Default input parameter: acc: function object<br>R: 8-bit reserved number used in Ark runtime<br>A: object<br>B, C: parameter |  Set **this** to **A**, call the function object stored in acc by setting **B** and **C** as parameters, and store the result in acc.  |
349e41f4b71Sopenharmony_ci|  0x30	|  IMM8_V8_V8_V8_V8	|  callthis3 RR, vAA, vBB, vCC, vDD	|  Default input parameter: acc: function object<br>R: 8-bit reserved number used in Ark runtime<br>A: object<br>B, C, D: parameter |  Set **this** to **A**, call the function object stored in acc by setting **B**, **C**, and **D** as parameters, and store the result in acc.  |
350e41f4b71Sopenharmony_ci|  0x31	|  IMM8_IMM8_V8	|  callthisrange RR, +AA, vBB	|  Default input parameter: acc: function object<br>R: 8-bit reserved number used in Ark runtime<br>A: number of parameters<br>B: object<br>B + 1, ..., B + A: parameter	|  Set **this** to **B**, call the function object stored in acc by setting **B + 1, ..., B + A** as the parameter, and store the result in acc.  |
351e41f4b71Sopenharmony_ci|  0x32	|  IMM8_IMM8_V8	|  supercallthisrange RR, +AA, vBB	|  R: 8-bit reserved number used in Ark runtime<br>A: number of parameters<br>B, ..., B + A - 1: parameter	|  Use **B, ..., B + A - 1** as the parameter to call the **super** function and store the result in acc.<br>When the value of **A** is **0**, the value of **B** is **undefined**.<br>This instruction appears only in non-arrow functions.  |
352e41f4b71Sopenharmony_ci|  0x33	|  IMM8_ID16_IMM8	|  definefunc RR, @AAAA, +BB	|  R: 8-bit reserved number used in Ark runtime<br>A: method id<br>B: number of formal parameters of method A | Create the function object of method A and store it in acc.  |
353e41f4b71Sopenharmony_ci|  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 acc.<br>R: 8-bit reserved number used in Ark runtime<br>A: method id<br>B: number of formal parameters of method A	|  Create the function object of method A, set the object of acc to the [[[HomeObject]]](https://262.ecma-international.org/12.0/#sec-ecmascript-function-objects) attribute of the function object, and store this function object in acc.  |
354e41f4b71Sopenharmony_ci|  0x35	|  IMM8_ID16_ID16_IMM16_V8	|  defineclasswithbuffer RR, @AAAA, @BBBB, +CCCC, vDD	|  R: 8-bit reserved number used in Ark runtime<br>A: **method id** of the constructor of a class<br>B: literal id<br>C: number of formal parameters of method A<br>D: parent class	|  Use the literal array corresponding to index B and parent class D to create a class object of A and store it in acc.  |
355e41f4b71Sopenharmony_ci|  0x36	|  V8	|  getnextpropname vAA	| A: iterator	|  Execute the [next](https://262.ecma-international.org/12.0/#sec-%25foriniteratorprototype%25.next) method of [for-in iterator](https://262.ecma-international.org/12.0/#sec-createiterresultobject) A and store the result in acc.  |
356e41f4b71Sopenharmony_ci|  0x37	|  IMM8_V8	|  ldobjbyvalue RR, vAA	|  Default input parameter: acc: attribute key<br>R: 8-bit reserved number used in Ark runtime<br>A: object	|  Load the attribute whose key is acc of object A and store the result in acc. |
357e41f4b71Sopenharmony_ci|  0x38	|  IMM8_V8_V8	|  stobjbyvalue RR, vAA, vBB	|  Default input parameter: acc: value<br>R: 8-bit reserved number used in Ark runtime<br>A: object<br>B: attribute key	|  Store the value in acc to the attribute whose key is B of object A.  |
358e41f4b71Sopenharmony_ci|  0x39	|  IMM8_V8	|  ldsuperbyvalue RR, vAA	|  Default input parameter: acc: attribute key<br>R: 8-bit reserved number used in Ark runtime<br>A: object	|  In the current function, obtain the attribute whose key of **super** is acc and store the attribute in acc. If the attribute is of an accessor, the object in A is used as the **this** parameter when the **getter** function of the attribute is called.  |
359e41f4b71Sopenharmony_ci|  0x3a	|  IMM8_IMM16	|  ldobjbyindex RR, +AAAA	|  Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime<br>A: attribute key	|  Load the attribute whose key is A of the object stored in acc and store the attribute in acc.  |
360e41f4b71Sopenharmony_ci|  0x3b	|  IMM8_V8_IMM16	|  stobjbyindex RR, vAA, +BBBB	|  Default input parameter: acc: value<br>R: 8-bit reserved number used in Ark runtime<br>A: object<br>B: attribute key	|  Store the value in acc to the attribute whose key is B of object A.  |
361e41f4b71Sopenharmony_ci|  0x3c	|  IMM4_IMM4	|  ldlexvar +A, +B	|  A: lexical environment level<br>B: slot number	|  Store the value of slot B in the lexical environment beyond A levels in acc.  |
362e41f4b71Sopenharmony_ci|  0x3d	|  IMM4_IMM4	|  stlexvar +A, +B	|  Default input parameter: acc: value<br>A: lexical environment level<br>B: slot number	|  Store the value in acc to slot B in the lexical environment beyond A levels.  |
363e41f4b71Sopenharmony_ci|  0x3e	|  ID16	|  lda.str @AAAA	|  A: string id	|  Store the string corresponding to index A to acc.  |
364e41f4b71Sopenharmony_ci|  0x3f	|  IMM8_ID16	|  tryldglobalbyname RR, @AAAA	|  R: 8-bit reserved number used in Ark runtime<br>A: string id	|  Store the global variable whose name is the string corresponding to index A in acc. If the global variable named A does not exist, an exception is thrown.   |
365e41f4b71Sopenharmony_ci|  0x40	|  IMM8_ID16	|  trystglobalbyname RR, @AAAA	|  Default input parameter: acc: value<br>R: 8-bit reserved number used in Ark runtime<br>A: string id	|  Store the value in 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.  |
366e41f4b71Sopenharmony_ci|  0x41	|  IMM16_ID16	|  ldglobalvar RRRR, @AAAA	|  R: 16-bit reserved number used in Ark runtime<br>A: string id	|  Store the value of the global variable whose name is the string corresponding to index A in acc. The variable must exist.  |
367e41f4b71Sopenharmony_ci|  0x42	|  IMM8_ID16	|  ldobjbyname RR, @AAAA	|  Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime<br>A: string id	|  Load the attribute whose key of the object stored in acc is the string corresponding to index A and store the attribute in acc.  |
368e41f4b71Sopenharmony_ci|  0x43	|  IMM8_ID16_V8	|  stobjbyname RR, @AAAA, vBB	|  Default input parameter: acc: value<br>R: 8-bit reserved number used in Ark runtime<br>A: string id<br>B: object	|  Store the value of acc to the attribute whose key of object B is the string corresponding to index A.  |
369e41f4b71Sopenharmony_ci|  0x44	|  V4_V4	|  mov vA, vB	|  A, B: register index	|  Copy the contents in register B to register A.  |
370e41f4b71Sopenharmony_ci|  0x45	|  V8_V8	|  mov vAA, vBB	|  A, B: register index	|  Copy the contents in register B to register A.  |
371e41f4b71Sopenharmony_ci|  0x46	|  IMM8_ID16	|  ldsuperbyname RR, @AAAA	|  Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime<br>A: string id	|  In the current function, obtain the attribute whose key of **super** is the string corresponding to index A and store the attribute in acc. If the attribute is of an accessor, the object in acc is used as the **this** parameter when the **getter** function of the attribute is called.  |
372e41f4b71Sopenharmony_ci|  0x47	|  IMM16_ID16	|  stconsttoglobalrecord RRRR, @AAAA	|  Default input parameter: acc: value<br>R: 16-bit reserved number used in Ark runtime<br>A: string id	|  Store the value of acc to the constant of the string corresponding to index A defined by **const** in the global variable.  |
373e41f4b71Sopenharmony_ci|  0x48	|  IMM16_ID16	|  sttoglobalrecord RRRR, @AAAA	|  Default input parameter: acc: value<br>R: 16-bit reserved number used in Ark runtime<br>A: string id	|  Store the value of acc to the variable of the string corresponding to index A defined by **let** in the global variable.  |
374e41f4b71Sopenharmony_ci|  0x49	|  IMM8_ID16	|  ldthisbyname RR, @AAAA	|  R: 8-bit reserved number used in Ark runtime<br>A: string id	|  Load the attribute whose key of **this** is the string corresponding to index A and store the result in acc.  |
375e41f4b71Sopenharmony_ci|  0x4a	|  IMM8_ID16	|  stthisbyname RR, @AAAA	|  Default input parameter: acc: value<br>R: 8-bit reserved number used in Ark runtime<br>A: string id	|  Store the value of acc to the attribute whose key of **this** is the string corresponding to index A.  |
376e41f4b71Sopenharmony_ci|  0x4b	|  IMM8	|  ldthisbyvalue RR	|  Default input parameter: acc: attribute key<br>R: 8-bit reserved number used in Ark runtime	|  Load the attribute whose key of **this** is acc and store the result in acc.  |
377e41f4b71Sopenharmony_ci|  0x4c	|  IMM8_V8	|  stthisbyvalue RR, vAA	|  Default input parameter: acc: value<br>R: 8-bit reserved number used in Ark runtime<br>A: attribute key	|  Store the value of acc to the attribute whose key of **this** is A.  |
378e41f4b71Sopenharmony_ci|  0x4d	|  IMM8	|  jmp +AA	|  A: signed branch offset	|  Jump to branch A unconditionally.  |
379e41f4b71Sopenharmony_ci|  0x4e	|  IMM16	|  jmp +AAAA	|  A: signed branch offset	|  Jump to branch A unconditionally.  |
380e41f4b71Sopenharmony_ci|  0x4f	|  IMM8	|  jeqz +AA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc == 0** and jump to branch A if it is true.  |
381e41f4b71Sopenharmony_ci|  0x50	|  IMM16	|  jeqz +AAAA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc == 0** and jump to branch A if it is true.  |
382e41f4b71Sopenharmony_ci|  0x51	|  IMM8	|  jnez +AA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc != 0** and jump to branch A if it is true.  |
383e41f4b71Sopenharmony_ci|  0x52	|  IMM8	|  jstricteqz +AA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc === 0** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
384e41f4b71Sopenharmony_ci|  0x53	|  IMM8	|  jnstricteqz +AA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc !== 0** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
385e41f4b71Sopenharmony_ci|  0x54	|  IMM8	|  jeqnull +AA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc == null** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
386e41f4b71Sopenharmony_ci|  0x55	|  IMM8	|  jnenull +AA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc != null** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
387e41f4b71Sopenharmony_ci|  0x56	|  IMM8	|  jstricteqnull +AA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc === null** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
388e41f4b71Sopenharmony_ci|  0x57	|  IMM8	|  jnstricteqnull +AA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc !== null** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
389e41f4b71Sopenharmony_ci|  0x58	|  IMM8	|  jequndefined +AA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc == undefined** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
390e41f4b71Sopenharmony_ci|  0x59	|  IMM8	|  jneundefined +AA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc != undefined** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
391e41f4b71Sopenharmony_ci|  0x5a	|  IMM8	|  jstrictequndefined +AA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc === undefined** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
392e41f4b71Sopenharmony_ci|  0x5b	|  IMM8	|  jnstrictequndefined +AA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc !== undefined** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
393e41f4b71Sopenharmony_ci|  0x5c	|  V8_IMM8	|  jeq vAA, +BB	|  Default input parameter: acc: value<br>A: value<br>B: signed branch offset	|  Calculate **acc == A** and jump to branch B if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
394e41f4b71Sopenharmony_ci|  0x5d	|  V8_IMM8	|  jne vAA, +BB	|  Default input parameter: acc: value<br>A: value<br>B: signed branch offset	|  Calculate **acc != A** and jump to branch B if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
395e41f4b71Sopenharmony_ci|  0x5e	|  V8_IMM8	|  jstricteq vAA, +BB	|  Default input parameter: acc: object<br>A: object<br>B: signed branch offset	|  Calculate **acc === A** and jump to branch B if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
396e41f4b71Sopenharmony_ci|  0x5f	|  V8_IMM8	|  jnstricteq vAA, +BB	|  Default input parameter: acc: object<br>A: object<br>B: signed branch offset	|  Calculate **acc !== A** and jump to branch B if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
397e41f4b71Sopenharmony_ci|  0x60	|  V8	|  lda vAA	|  A: register index	|  Store the contents of register A in acc.  |
398e41f4b71Sopenharmony_ci|  0x61	|  V8	|  sta vAA	|  Default input parameter: acc<br>A: register index	|  Store the contents of acc in register A.  |
399e41f4b71Sopenharmony_ci|  0x62	|  IMM32	|  ldai +AAAAAAAA	|  A: constant literal	|  Store the integer literal A in acc.  |
400e41f4b71Sopenharmony_ci|  0x63	|  IMM64	|  fldai +AAAAAAAAAAAAAAAA	|  A: constant literal	|  Store the double-precision floating-point literal A in acc.  |
401e41f4b71Sopenharmony_ci|  0x64	|  NONE	|  return	|  Default input parameter: acc: value	|  Returns the value in acc.  |
402e41f4b71Sopenharmony_ci|  0x65	|  NONE	|  returnundefined	 | 	|  **undefined** is returned.  |
403e41f4b71Sopenharmony_ci|  0x66	|  NONE	|  getpropiterator	|  Default input parameter: acc: object	|  Stores the [for-in iterator](https://262.ecma-international.org/12.0/#sec-createiterresultobject) of the object in acc.  |
404e41f4b71Sopenharmony_ci|  0x67	|  IMM8	|  getiterator RR	|  Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime	|  Execute the [GetIterator](https://262.ecma-international.org/12.0/#sec-getiterator) (acc, sync) method and store the result in acc.  |
405e41f4b71Sopenharmony_ci|  0x68	|  IMM8_V8	|  closeiterator RR, vAA	|  R: 8-bit reserved number used in Ark runtime<br>A: object	|  Use A of the *[iteratorRecord](https://262.ecma-international.org/12.0/#sec-iterator-records)* type as a parameter to execute [IteratorClose](https://262.ecma-international.org/12.0/#sec-iteratorclose) and store the result in acc.  |
406e41f4b71Sopenharmony_ci|  0x69	|  NONE	|  poplexenv	|   	|  Jump out of the current lexical environment and enter the outer lexical environment.  |
407e41f4b71Sopenharmony_ci|  0x6a	|  NONE	|  ldnan	|   	|  Store the **nan** value in acc.  |
408e41f4b71Sopenharmony_ci|  0x6b	|  NONE	|  ldinfinity	|   	|  Store the **infinity** value in acc.  |
409e41f4b71Sopenharmony_ci|  0x6c	|  NONE	|  getunmappedargs	 |  	|  Store the **arguments** of the current function in acc.  |
410e41f4b71Sopenharmony_ci|  0x6d	|  NONE	|  ldglobal	 |  	|  Store the **global** object in acc. |
411e41f4b71Sopenharmony_ci|  0x6e	|  NONE	|  ldnewtarget	 |  	|  Store the **NewTarget** implicit parameter of the current function in acc.<br>The instruction feature is disabled and is unavailable currently.  |
412e41f4b71Sopenharmony_ci|  0x6f	|  NONE	|  ldthis	|   	|  Store the `this` value in acc.  |
413e41f4b71Sopenharmony_ci|  0x70	|  NONE	|  ldhole	 |  	|  Store the **hole** in acc.  |
414e41f4b71Sopenharmony_ci|  0x71	|  IMM8_ID16_IMM8	|  createregexpwithliteral RR, @AAAA, +BB	|  R: 8-bit reserved number used in Ark runtime<br>A: string id<br>B: regular expression modifier	|  Use the string corresponding to index A and the modifier corresponding to index B to create a regular expression and store it in acc.<br>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**. |
415e41f4b71Sopenharmony_ci|  0x72	|  IMM16_ID16_IMM8	|  createregexpwithliteral RRRR, @AAAA, +BB	|  R: 16-bit reserved number used in Ark runtime<br>A: string id<br>B: regular expression modifier	|  Use the string corresponding to index A and the modifier corresponding to index B to create a regular expression and store it in acc.<br>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**. |
416e41f4b71Sopenharmony_ci|  0x73	|  IMM8_IMM8_V8	|  callrange RR, +AA, vBB	|  Default input parameter: acc: function object<br>R: 8-bit reserved number used in Ark runtime<br>A: number of parameters<br>B, ..., B + A - 1: parameter	|  Use **B, ..., B + A - 1** as a parameter to call the function object stored in acc and store the result in acc.  |
417e41f4b71Sopenharmony_ci|  0x74	|  IMM16_ID16_IMM8	|  definefunc RRRR, @AAAA, +BB	|  R: 16-bit reserved number used in Ark runtime<br>A: method id<br>B: number of formal parameters of method A	|  Create the function object of method A and store it in acc.  |
418e41f4b71Sopenharmony_ci|  0x75	|  IMM16_ID16_ID16_IMM16_V8	|  defineclasswithbuffer RRRR, @AAAA, @BBBB, +CCCC, vDD	|  R: 16-bit reserved number used in Ark runtime<br>A: **method id** of the constructor of a class<br>B: literal id<br>C: number of formal parameters of method A<br>D: parent class	|  Use the literal array corresponding to index B and parent class D to create a class object of A and store it in acc.  |
419e41f4b71Sopenharmony_ci|  0x76	|  IMM8	|  gettemplateobject RR	|  Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime	|  Execute [GetTemplateObject](https://262.ecma-international.org/12.0/#sec-gettemplateobject) (acc) and store the result in acc.  |
420e41f4b71Sopenharmony_ci|  0x77	| IMM8_V8	| setobjectwithproto RR, vAA	|  Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime<br>A: value	|  Set the **\_\_proto\_\_** attribute of the object stored in acc to A.  |
421e41f4b71Sopenharmony_ci|  0x78	|  IMM8_V8_V8	|  stownbyvalue RR, vAA, vBB	|  Default input parameter: acc: value<br>R: 8-bit reserved number used in Ark runtime<br>A: object<br>B: attribute key	|  Store the value in acc to the attribute whose key is B of object A.  |
422e41f4b71Sopenharmony_ci|  0x79	|  IMM8_V8_IMM16	|  stownbyindex RR, vAA, +BBBB	|  Default input parameter: acc: value<br>R: 8-bit reserved number used in Ark runtime<br>A: object<br>B: attribute key	|  Store the value in acc to the attribute whose key is B of object A.  |
423e41f4b71Sopenharmony_ci|  0x7a	|  IMM8_ID16_V8	|  stownbyname RR, @AAAA, vBB	|  Default input parameter: acc: value<br>R: 8-bit reserved number used in Ark runtime<br>A: string id<br>B: object	|  Store the value of acc to the attribute whose key of object B is the string corresponding to index A.  |
424e41f4b71Sopenharmony_ci|  0x7b	|  IMM8	|  getmodulenamespace +AA	|  A: module index	|  Execute the [GetModuleNamespace](https://262.ecma-international.org/12.0/#sec-getmodulenamespace) instruction for module A and store the result in acc.  |
425e41f4b71Sopenharmony_ci|  0x7c	|  IMM8	|  stmodulevar +AA	|  Default input parameter: acc: value<br>A: slot number	|  Store the value of acc to the module variable of slot A.  |
426e41f4b71Sopenharmony_ci|  0x7d	|  IMM8	|  ldlocalmodulevar +AA	|  A: slot number	|  Store the local module variables of slot A in acc.  |
427e41f4b71Sopenharmony_ci|  0x7e	|  IMM8	|  ldexternalmodulevar +AA	|  A: slot number	|  Store the external module variable of slot A in acc.  |
428e41f4b71Sopenharmony_ci|  0x7f	|  IMM16_ID16	|  stglobalvar RRRR, @AAAA	|  Default input parameter: acc: value<br>R: 16-bit reserved number used in Ark runtime<br>A: string id	|  Store the value in acc to the global variable whose name is the string corresponding to index A. This variable must exist.  |
429e41f4b71Sopenharmony_ci|  0x80	|  IMM16	|  createemptyarray RRRR	|  R: 16-bit reserved number used in Ark runtime	|  Create an empty array and store it in acc.  |
430e41f4b71Sopenharmony_ci|  0x81	|  IMM16_ID16	|  createarraywithbuffer RRRR, @AAAA	|  R: 16-bit reserved number used in Ark runtime<br>A: literal id	|  Use the literal array corresponding to index A to create an array object and store it in acc.  |
431e41f4b71Sopenharmony_ci|  0x82	|  IMM16_ID16	|  createobjectwithbuffer RRRR, @AAAA	|  R: 16-bit reserved number used in Ark runtime<br>A: literal id	|  Use the literal array corresponding to index A to create an object and store it in acc.  |
432e41f4b71Sopenharmony_ci|  0x83	|  IMM16_IMM8_V8	|  newobjrange RRRR, +AA, vBB	|  R: 16-bit reserved number used in Ark runtime<br>A: number of parameters<br>B: class object<br>B + 1, ..., B + A - 1: parameter passed to the constructor	|  Use **B + 1, ..., B + A - 1** as a parameter to create an instance of class B and store it in acc.  |
433e41f4b71Sopenharmony_ci|  0x84	|  IMM16	|  typeof RRRR	|  Default input parameter: acc: object<br>R: 16-bit reserved number used in Ark runtime	|  Calculate **typeof acc** and store the result in acc.  |
434e41f4b71Sopenharmony_ci|  0x85	|  IMM16_V8	|  ldobjbyvalue RRRR, vAA	|  Default input parameter: acc: attribute key<br>R: 16-bit reserved number used in Ark runtime<br>A: object	|  Load the attribute whose key is acc of object A and store the result in acc.  |
435e41f4b71Sopenharmony_ci|  0x86	|  IMM16_V8_V8	|  stobjbyvalue RRRR, vAA, vBB	|  Default input parameter: acc: value<br>R: 16-bit reserved number used in Ark runtime<br>A: object<br>B: attribute key	|  Store the value in acc to the attribute whose key is B of object A.  |
436e41f4b71Sopenharmony_ci|  0x87	|  IMM16_V8	|  ldsuperbyvalue RRRR, vAA	|  Default input parameter: acc: attribute key<br>R: 16-bit reserved number used in Ark runtime<br>A: object	|  In the current function, obtain the attribute whose key of **super** is acc and store the attribute in acc. If the attribute is of an accessor, the object in A is used as the **this** parameter when the **getter** function of the attribute is called.  |
437e41f4b71Sopenharmony_ci|  0x88	|  IMM16_IMM16	|  ldobjbyindex RRRR, +AAAA	|  Default input parameter: acc: object<br>R: 16-bit reserved number used in Ark runtime<br>A: attribute key	|  Load the attribute whose key is A of the object stored in acc and store the attribute in acc.  |
438e41f4b71Sopenharmony_ci|  0x89	|  IMM16_V8_IMM16	|  stobjbyindex RRRR, vAA, +BBBB	|  Default input parameter: acc: value<br>R: 16-bit reserved number used in Ark runtime<br>A: object<br>B: attribute key	|  Store the value in acc to the attribute whose key is B of object A.  |
439e41f4b71Sopenharmony_ci|  0x8a	|  IMM8_IMM8	|  ldlexvar +AA, +BB	|  A: lexical environment level<br>B: slot number	|  Store the value of slot B in the lexical environment beyond A levels in acc.  |
440e41f4b71Sopenharmony_ci|  0x8b	|  IMM8_IMM8	|  stlexvar +AA, +BB	|  Default input parameter: acc: value<br>A: lexical environment level<br>B: slot number	|  Store the value in acc to slot B in the lexical environment beyond A levels.  |
441e41f4b71Sopenharmony_ci|  0x8c	|  IMM16_ID16	|  tryldglobalbyname RRRR, @AAAA	|  R: 16-bit reserved number used in Ark runtime<br>A: string id	|  Store the global variable whose name is the string corresponding to index A in acc. If the global variable named A does not exist, an exception is thrown.   |
442e41f4b71Sopenharmony_ci|  0x8d	|  IMM16_ID16	|  trystglobalbyname RRRR, @AAAA	|  Default input parameter: acc: value<br>R: 16-bit reserved number used in Ark runtime<br>A: string id	|  Store the value in 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.  |
443e41f4b71Sopenharmony_ci|  0x8e	|  IMM8_ID16_V8	|  stownbynamewithnameset RR, @AAAA, vBB	|  Default input parameter: acc: function object<br>R: 8-bit reserved number used in Ark runtime<br>A: string id<br>B: object	|  Store the function object in acc to the attribute whose key of object B is the string corresponding to index A and set the function name to the string corresponding to index A.  |
444e41f4b71Sopenharmony_ci|  0x8f	|  V16_V16	|  mov vAAAA, vBBBB	|  A, B: register index	|  Copy the contents in register B to register A.  |
445e41f4b71Sopenharmony_ci|  0x90	|  IMM16_ID16	|  ldobjbyname RRRR, @AAAA	|  Default input parameter: acc: object<br>R: 16-bit reserved number used in Ark runtime<br>A: string id	|  Load the attribute whose key of the object stored in acc is the string corresponding to index A and store the attribute in acc.  |
446e41f4b71Sopenharmony_ci|  0x91	|  IMM16_ID16_V8	|  stobjbyname RRRR, @AAAA, vBB	|  Default input parameter: acc: value<br>R: 16-bit reserved number used in Ark runtime<br>A: string id<br>B: object	|  Store the value of acc to the attribute whose key of object B is the string corresponding to index A.  |
447e41f4b71Sopenharmony_ci|  0x92	|  IMM16_ID16	|  ldsuperbyname RRRR, @AAAA	|  Default input parameter: acc: object<br>R: 16-bit reserved number used in Ark runtime<br>A: string id	|  In the current function, obtain the attribute whose key of **super** is the string corresponding to index A and store the attribute in acc. If the attribute is of an accessor, the object in acc is used as the **this** parameter when the **getter** function of the attribute is called.  |
448e41f4b71Sopenharmony_ci|  0x93	|  IMM16_ID16	|  ldthisbyname RRRR, @AAAA	|  R: 16-bit reserved number used in Ark runtime<br>A: string id	|  Load the attribute whose key of **this** is the string corresponding to index A and store the result in acc.  |
449e41f4b71Sopenharmony_ci|  0x94	|  IMM16_ID16	|  stthisbyname RRRR, @AAAA	|  Default input parameter: acc: value<br>R: 16-bit reserved number used in Ark runtime<br>A: string id	|  Store the value of acc to the attribute whose key of **this** is the string corresponding to index A.  |
450e41f4b71Sopenharmony_ci|  0x95	|  IMM16	|  ldthisbyvalue RRRR	|  Default input parameter: acc: attribute key<br>R: 16-bit reserved number used in Ark runtime	|  Load the attribute whose key of **this** is acc and store the result in acc.  |
451e41f4b71Sopenharmony_ci|  0x96	|  IMM16_V8	|  stthisbyvalue RRRR, vAA	|  Default input parameter: acc: value<br>R: 16-bit reserved number used in Ark runtime<br>A: attribute key	|  Store the value of acc to the attribute whose key of **this** is A.  |
452e41f4b71Sopenharmony_ci|  0x97	|  V8	|  asyncgeneratorreject vAA	 |  Default input parameter: acc: exception<br>A: generator	|  Use the exception stored in *[generator](https://262.ecma-international.org/12.0/#sec-generator-objects)* A and acc, execute [AsyncGeneratorReject](https://262.ecma-international.org/12.0/#sec-asyncgeneratorreject), and store the result in acc.  |
453e41f4b71Sopenharmony_ci|  0x98	|  IMM32	|  jmp +AAAAAAAA	|  A: signed branch offset	|  Jump to branch A unconditionally.  |
454e41f4b71Sopenharmony_ci|  0x99	|  IMM8_V8_V8	|  stownbyvaluewithnameset RR, vAA, vBB	|  Default input parameter: acc: function object<br>R: 8-bit reserved number used in Ark runtime<br>A: object<br>B: attribute key	|  Store the value of acc to the attribute whose key of object A is B and set the function name to B.  |
455e41f4b71Sopenharmony_ci|  0x9a	|  IMM32	|  jeqz +AAAAAAAA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc == 0** and jump to branch A if it is true.  |
456e41f4b71Sopenharmony_ci|  0x9b	|  IMM16	|  jnez +AAAA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc != 0** and jump to branch A if it is true.  |
457e41f4b71Sopenharmony_ci|  0x9c	|  IMM32	|  jnez +AAAAAAAA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc != 0** and jump to branch A if it is true.  |
458e41f4b71Sopenharmony_ci|  0x9d	|  IMM16	|  jstricteqz +AAAA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc === 0** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
459e41f4b71Sopenharmony_ci|  0x9e	|  IMM16	|  jnstricteqz +AAAA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc !== 0** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
460e41f4b71Sopenharmony_ci|  0x9f	|  IMM16	|  jeqnull +AAAA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc == null** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
461e41f4b71Sopenharmony_ci|  0xa0	|  IMM16	|  jnenull +AAAA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc != null** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
462e41f4b71Sopenharmony_ci|  0xa1	|  IMM16	|  jstricteqnull +AAAA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc === null** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
463e41f4b71Sopenharmony_ci|  0xa2	|  IMM16	|  jnstricteqnull +AAAA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc !== null** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
464e41f4b71Sopenharmony_ci|  0xa3	|  IMM16	|  jequndefined +AAAA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc == undefined** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
465e41f4b71Sopenharmony_ci|  0xa4	|  IMM16	|  jneundefined +AAAA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc != undefined** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
466e41f4b71Sopenharmony_ci|  0xa5	|  IMM16	|  jstrictequndefined +AAAA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc === undefined** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
467e41f4b71Sopenharmony_ci|  0xa6	|  IMM16	|  jnstrictequndefined +AAAA	|  Default input parameter: acc: value<br>A: signed branch offset	|  Calculate **acc !== undefined** and jump to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
468e41f4b71Sopenharmony_ci|  0xa7	|  V8_IMM16	|  jeq vAA, +BBBB	|  Default input parameter: acc: value<br>A: value<br>B: signed branch offset	|  Calculate **acc == A** and jump to branch B if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
469e41f4b71Sopenharmony_ci|  0xa8	|  V8_IMM16	|  jne vAA, +BBBB	|  Default input parameter: acc: value<br>A: value<br>B: signed branch offset	|  Calculate **acc != A** and jump to branch B if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
470e41f4b71Sopenharmony_ci|  0xa9	|  V8_IMM16	|  jstricteq vAA, +BBBB	|  Default input parameter: acc: value<br>A: value<br>B: signed branch offset	|  Calculate **acc === A** and jump to branch B if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
471e41f4b71Sopenharmony_ci|  0xaa	|  V8_IMM16	|  jnstricteq vAA, +BBBB	|  Default input parameter: acc: value<br>A: value<br>B: signed branch offset	|  Calculate **acc !== A** and jump to branch B if it is true.<br>The instruction feature is disabled and is unavailable currently.  |
472e41f4b71Sopenharmony_ci|  0xab	|  IMM16	|  getiterator RRRR	|  Default input parameter: acc: object<br>R: 16-bit reserved number used in Ark runtime	|  Execute the [GetIterator](https://262.ecma-international.org/12.0/#sec-getiterator) (acc, sync) method and store the result in acc.  |
473e41f4b71Sopenharmony_ci|  0xac	|  IMM16_V8	|  closeiterator RRRR, vAA	|  R: 16-bit reserved number used in Ark runtime<br>A: object	|  Use A of the *[iteratorRecord](https://262.ecma-international.org/12.0/#sec-iterator-records)* type as a parameter to execute [IteratorClose](https://262.ecma-international.org/12.0/#sec-iteratorclose) and store the result in acc.  |
474e41f4b71Sopenharmony_ci|  0xad	|  NONE	|  ldsymbol	 |  	|  Load the **Symbol** object in acc.  |
475e41f4b71Sopenharmony_ci|  0xae	|  NONE	|  asyncfunctionenter	|   	|  Create an asynchronous function object and store the object in acc.  |
476e41f4b71Sopenharmony_ci|  0xaf	|  NONE	|  ldfunction	|   	|  Load the current function object in acc.  |
477e41f4b71Sopenharmony_ci|  0xb0	|  NONE	|  debugger	|   	|  This command is used to pause execution during debugging.  |
478e41f4b71Sopenharmony_ci|  0xb1	|  V8	|  creategeneratorobj vAA	|  A: function object	|  Use function object A to create a *generator* and store it in acc.  |
479e41f4b71Sopenharmony_ci|  0xb2	|  V8_V8	|  createiterresultobj vAA, vBB	|  A: object<br>B: Boolean value	|  Set *value* A and *done* B as parameters to execute [CreateIterResultObject](https://262.ecma-international.org/12.0/#sec-createiterresultobject) instruction and store the result in acc.  |
480e41f4b71Sopenharmony_ci|  0xb3	|  IMM8_V8_V8	|  createobjectwithexcludedkeys +AA, vBB, vCC	|  A: number of range registers<br>B: object<br>C, ..., C + A: attribute key value.	|  Based on object B, create an object excluding the key **C, ..., C + A** and store it in acc.<br>This instruction supports object creation by using destructor and extension syntax.  |
481e41f4b71Sopenharmony_ci|  0xb4	|  IMM8_V8	|  newobjapply RR, vAA	|  Default input parameter: acc: parameter list<br>R: 8-bit reserved number used in Ark runtime<br>A: class object	|  Use the parameter list stored in acc to create an instance of class A and store it in acc.  |
482e41f4b71Sopenharmony_ci|  0xb5	|  IMM16_V8	|  newobjapply RRRR, vAA	|  Default input parameter: acc: parameter list<br>R: 16-bit reserved number used in Ark runtime<br>A: class object	|  Use the parameter list stored in acc to create an instance of class A and store it in acc.  |
483e41f4b71Sopenharmony_ci|  0xb6	|  IMM8_ID16	|  newlexenvwithname +AA, @BBBB	|  A: number of slots in the lexical environment<br>B: literal id	|  Use the lexical variable name stored in the literal array corresponding to index B to create a lexical environment with A slots, store this lexical environment in acc, and enter.  |
484e41f4b71Sopenharmony_ci|  0xb7	|  V8	|  createasyncgeneratorobj vAA	|  A: function object	|  Create an asynchronous *generator* based on function object A and store it in acc.  |
485e41f4b71Sopenharmony_ci|  0xb8	|  V8_V8_V8	|  asyncgeneratorresolve vAA, vBB, vCC	|  A: generator<br>B: object<br>C: boolean value	|  Use *generator* A, *value* B, and *done* C as parameters to execute [AsyncGeneratorResolve](https://262.ecma-international.org/12.0/#sec-asyncgeneratorresolve) and store the result in acc.  |
486e41f4b71Sopenharmony_ci|  0xb9	|  IMM8_V8	|  supercallspread RR, vAA	|  Default input parameter: acc: class object<br>R: 8-bit reserved number used in Ark runtime<br>A: parameter list	|  Use parameter list A as a parameter, call the parent class constructor of the class stored in acc, and store the result in acc.  |
487e41f4b71Sopenharmony_ci|  0xba	|  IMM8_V8_V8	|  apply RR, vAA, vBB	|  Default input parameter: acc: function object<br>R: 8-bit reserved number used in Ark runtime<br>A: object<br>B: parameter list	|  Set **this** to A, use parameter list B as the parameter, call the function object stored in acc, and store the return value in acc.  |
488e41f4b71Sopenharmony_ci|  0xbb	|  IMM8_IMM8_V8	|  supercallarrowrange RR, +AA, vBB	|  Default input parameter: acc: class object<br>R: 8-bit reserved number used in Ark runtime<br>A: number of parameters<br>B, ..., B + A - 1: parameter	|  Use **B, ..., B + A - 1** as a parameter to call the constructor function of the parent class of the class stored in acc and store the result in acc.<br>If the value of A is **0**, B is **undefined**.<br>This instruction appears only in arrow functions.  |
489e41f4b71Sopenharmony_ci|  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.<br>A: object<br>B: attribute key<br>C: **getter** function object<br>D: **setter** function object	|  Use **getter** method C and **setter** method D as parameters to define the accessor of the attribute whose key of object A is B and store the result object in acc.<br>If C is **undefined** and D is **undefined**, **getter** and **setter** are not set respectively.  |
490e41f4b71Sopenharmony_ci|  0xbd	|  NONE	|  dynamicimport	|  Default input parameter: acc: value	|  Use the value of acc as a parameter to execute [ImportCalls](https://262.ecma-international.org/12.0/#sec-import-calls) and store the result in acc.  |
491e41f4b71Sopenharmony_ci|  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 acc.<br>R: 16-bit reserved number used in Ark runtime<br>A: method id<br>B: number of formal parameters of method A	|  Create the function object of method A, set the object of acc to the [[[HomeObject]]](https://262.ecma-international.org/12.0/#sec-ecmascript-function-objects) attribute of the function object, and store this function object in acc.  |
492e41f4b71Sopenharmony_ci|  0xbf	|  NONE	|  resumegenerator	|  Default input parameter: acc: generator	|  Execute [GeneratorResume](https://262.ecma-international.org/12.0/#sec-generatorresume) based on the generator stored in acc and store the result in acc.  |
493e41f4b71Sopenharmony_ci|  0xc0	|  NONE	|  getresumemode	|  Default input parameter: acc: generator	|  After the generator finishes executing, obtain the restored value and store it in acc.  |
494e41f4b71Sopenharmony_ci|  0xc1	|  IMM16	|  gettemplateobject RRRR	|  Default input parameter: acc: object<br>R: 16-bit reserved number used in Ark runtime	|  Execute [GetTemplateObject](https://262.ecma-international.org/12.0/#sec-gettemplateobject) (acc) and store the result in acc.  |
495e41f4b71Sopenharmony_ci|  0xc2	|  V8	|  delobjprop vAA	|  Default input parameter: acc: attribute key<br>A: object	|  Delete the attribute whose key is acc of object A.  |
496e41f4b71Sopenharmony_ci|  0xc3	|  V8	|  suspendgenerator vAA	|  Default input parameter: acc: value<br>A: generator	|  Use the value stored in acc to suspend *generator* A and store the result in acc.  |
497e41f4b71Sopenharmony_ci|  0xc4	|  V8	|  asyncfunctionawaituncaught vAA	|  Default input parameter: acc: value<br>A: function object	|  Use the function object A and the value of acc to execute [AwaitExpression](https://262.ecma-international.org/12.0/#prod-AwaitExpression) and store the result in acc.  |
498e41f4b71Sopenharmony_ci|  0xc5	|  V8	|  copydataproperties vAA	|  Default input parameter: acc: object<br>A: target object	|  Copy all attributes of the object stored in acc to A and store A in acc.  |
499e41f4b71Sopenharmony_ci|  0xc6	|  V8_V8	|  starrayspread vAA, vBB	|  Default input parameter: acc: value<br>A: array<br>B: array index	|  Store the value in acc to the position starting with index B of array A in the format of [SpreadElement](https://262.ecma-international.org/12.0/#prod-SpreadElement), and store the length of the result array in acc.  |
500e41f4b71Sopenharmony_ci|  0xc7	|  IMM16_V8	|  setobjectwithproto RRRR, vAA	|  Default input parameter: acc: object<br>R: 16-bit reserved number used in Ark runtime<br>A: value	|  Set the **\_\_proto\_\_** attribute of the object stored in acc to A.  |
501e41f4b71Sopenharmony_ci|  0xc8	|  IMM16_V8_V8	|  stownbyvalue RRRR, vAA, vBB	|  Default input parameter: acc: value<br>R: 16-bit reserved number used in Ark runtime<br>A: object<br>B: attribute key	|  Store the value in acc to the attribute whose key is B of object A.  |
502e41f4b71Sopenharmony_ci|  0xc9	|  IMM8_V8_V8	|  stsuperbyvalue RR, vAA, vBB	|  Default input parameter: acc: value<br>R: 8-bit reserved number used in Ark runtime<br>A: object<br>B: attribute key	|  In the current function, the value of acc is stored to the attribute whose key of **super** is B. If the attribute is of an accessor, the object in A is used as the **this** parameter when the **setter** function of the attribute is called.  |
503e41f4b71Sopenharmony_ci|  0xca	|  IMM16_V8_V8	|  stsuperbyvalue RRRR, vAA, vBB | Default input parameter: acc: value<br>R: 16-bit reserved number used in Ark runtime<br>A: object<br>B: attribute key	|  In the current function, the value of acc is stored to the attribute whose key of **super** is B. If the attribute is of an accessor, the object in A is used as the **this** parameter when the **setter** function of the attribute is called.  |
504e41f4b71Sopenharmony_ci|  0xcb	|  IMM16_V8_IMM16	|  stownbyindex RRRR, vAA, +BBBB	|  Default input parameter: acc: value<br>R: 16-bit reserved number used in Ark runtime<br>A: object<br>B: attribute key	|  Store the value in acc to the attribute whose key is B of object A.  |
505e41f4b71Sopenharmony_ci|  0xcc	|  IMM16_ID16_V8	|  stownbyname RRRR, @AAAA, vBB	|  Default input parameter: acc: value<br>R: 16-bit reserved number used in Ark runtime<br>A: string id<br>B: object	|  Store the value of acc to the attribute whose key of object B is the string corresponding to index A.  |
506e41f4b71Sopenharmony_ci|  0xcd	|  V8	|  asyncfunctionresolve vAA	|  Default input parameter: acc: value<br>A: asynchronous function object	|  Use the value in acc to parse the **Promise** object of object A and store the result in acc.  |
507e41f4b71Sopenharmony_ci|  0xce	|  V8	|  asyncfunctionreject vAA	|  Default input parameter: acc: value<br>A: asynchronous function object	|  Use the value in acc to reject the **Promise** object of object A and store the result in acc.  |
508e41f4b71Sopenharmony_ci|  0xcf	|  IMM8	|  copyrestargs +AA	|  A: position of the [rest parameter](https://262.ecma-international.org/12.0/#prod-FunctionRestParameter) in the formal parameter list	|  Copy the rest parameters and store the parameter array copy in acc.  |
509e41f4b71Sopenharmony_ci|  0xd0	|  IMM8_ID16_V8	|  stsuperbyname RR, @AAAA, vBB	|  Default input parameter: acc: value<br>R: 8-bit reserved number used in Ark runtime<br>A: string id<br>B: object	|  In the current function, store the value of acc to the attribute whose key of **super** is the string corresponding to index A.<br>If the attribute is of an accessor, the object in B is used as the **this** parameter when the **setter** function of the attribute is called.  |
510e41f4b71Sopenharmony_ci|  0xd1	|  IMM16_ID16_V8	|  stsuperbyname RRRR, @AAAA, vBB	|  Default input parameter: acc: value<br>R: 16-bit reserved number used in Ark runtime<br>A: string id<br>B: object	|  In the current function, store the value of acc to the attribute whose key of **super** is the string corresponding to index A.<br>If the attribute is of an accessor, the object in B is used as the **this** parameter when the **setter** function of the attribute is called.  |
511e41f4b71Sopenharmony_ci|  0xd2	|  IMM16_V8_V8	|  stownbyvaluewithnameset RRRR, vAA, vBB	|  Default input parameter: acc: function object<br>R: 8-bit reserved number used in Ark runtime<br>A: object<br>B: attribute key	|  Store the value of acc to the attribute whose key of object A is B and set the function name to B.  |
512e41f4b71Sopenharmony_ci|  0xd3	|  ID16	|  ldbigint @AAAA	|  A: string id	|  Create a value of the **BigInt** type based on the string corresponding to index A and store the value in acc.  |
513e41f4b71Sopenharmony_ci|  0xd4	|  IMM16_ID16_V8	|  stownbynamewithnameset RRRR, @AAAA, vBB	|  Default input parameter: acc: function object<br>R: 16-bit reserved number used in Ark runtime<br>A: string id<br>B: object	|  Store the function object in acc to the attribute whose key of object B is the string corresponding to index A and set the function name to the string corresponding to index A.  |
514e41f4b71Sopenharmony_ci|  0xd5	|  NONE	|  nop	 |  	|  No operation.  |
515e41f4b71Sopenharmony_ci|  0xd6	|  IMM8	|  setgeneratorstate +AA	|  Default input parameter: acc: generator object<br>A: generator state	|  Set the generator state stored in acc to A. For details, see [GeneratorState](https://262.ecma-international.org/12.0/#sec-properties-of-generator-instances) and [AsyncGeneratorState](https://262.ecma-international.org/12.0/#sec-properties-of-asyncgenerator-intances).<br>A may have the following values: undefined(0x0), suspendedStart(0x1), suspendedYield(0x2), executing(0x3), completed (0x4), and awaitingReturn (0x5).  |
516e41f4b71Sopenharmony_ci|  0xd7	|  IMM8	|  getasynciterator RR	|  Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime	|  Execute the [GetIterator](https://262.ecma-international.org/12.0/#sec-getiterator) (acc, async) and store the result in acc.  |
517e41f4b71Sopenharmony_ci|  0xd8	|  IMM8_IMM16_IMM16	|  ldprivateproperty RR, +AAAA, +BBBB	|  Default input parameter: acc: object<br>A: lexical environment level<br>B: slot number	|  Load and set the value of slot B in the lexical environment beyond A levels as the attribute key, and store the value corresponding to the key of the object in acc.  |
518e41f4b71Sopenharmony_ci|  0xd9	|  IMM8_IMM16_IMM16_V8	|  stprivateproperty RR, +AAAA, +BBBB, vCC	|  A: lexical environment level<br>B: slot number<br>C: object	|  Load the value of slot B in the lexical environment beyond A levels as the attribute key and store the value in acc to the key of the object C stored in acc.  |
519e41f4b71Sopenharmony_ci|  0xda	|  IMM8_IMM16_IMM16	|  testin RR, +AAAA, +BBBB	|  Default input parameter: acc: object<br>A: lexical environment level<br>B: slot number	|  Load the value of slot B in the lexical environment beyond A levels, calculate whether the value is **in acc**, and store the result in acc.  |
520e41f4b71Sopenharmony_ci|  0xdb	|  IMM8_ID16_V8	|  definefieldbyname RR, @AAAA, vBB	|  Default input parameter: acc: value<br>A: string id<br>B: object	|  Define an attribute whose key is A for object B and store the value of acc to the attribute.  |
521e41f4b71Sopenharmony_ci|  0xfb	|  PREF_NONE	|  callruntime.notifyconcurrentresult	|  Default input parameter: acc: return value of the concurrent function	|  Notify the runtime of the return value of the concurrent function.<br>This instruction is used only in concurrent functions.  |
522e41f4b71Sopenharmony_ci|  0xfc	|  (deprecated)	 |  |  | Deprecated operation code. |
523e41f4b71Sopenharmony_ci|  0xfd	|  PREF_IMM16_V8_V8	|  wide.createobjectwithexcludedkeys +AAAA, vBB, vCC	|  A: number of range registers<br>B: object<br>C, ..., C + A: attribute key value.	|  Based on object B, create an object excluding the key **C, ..., C + A** and store it in acc.<br>This instruction supports object creation by using destructor and extension syntax.  |
524e41f4b71Sopenharmony_ci|  0xfe	|  PREF_NONE	|  throw	|  Default input parameter: acc: exception	|  Throws the exception stored in acc.  |
525e41f4b71Sopenharmony_ci|  0x01fb	|  PREF_IMM8_V8_V8	|  callruntime.definefieldbyvalue RR, vAA, vBB	|  Default input parameter: acc: value<br>A: attribute key<br>B: object	|  Define an attribute whose key is A for object B and store the value of acc to the attribute.  |
526e41f4b71Sopenharmony_ci|  0x01fc	|  (deprecated)	 |  |  | Deprecated operation code. |
527e41f4b71Sopenharmony_ci|  0x01fd	|  PREF_IMM16_V8	|  wide.newobjrange +AAAA, vBB	|  A: number of parameters<br>B: class object<br>B + 1, ..., B + A - 1: parameter passed to the constructor	|  Use **B + 1, ..., B + A - 1** as a parameter to create an instance of class B and store it in acc.  |
528e41f4b71Sopenharmony_ci|  0x01fe	|  PREF_NONE	|  throw.notexists	|   	|  Exception thrown: undefined method.  |
529e41f4b71Sopenharmony_ci|  0x02fb	|  PREF_IMM8_IMM32_V8	|  callruntime.definefieldbyindex RR, +AAAAAAAA, vBB	|  Default input parameter: acc: value<br>A: attribute key<br>B: object	|  Define an attribute whose key is A for object B and store the value of acc to the attribute.  |
530e41f4b71Sopenharmony_ci|  0x02fc	|  (deprecated)	 |  |  | Deprecated operation code. |
531e41f4b71Sopenharmony_ci|  0x02fd	|  PREF_IMM16	|  wide.newlexenv +AAAA	|  A: number of slots in the lexical environment	|  Create a lexical environment with slot A, store it in acc, and enter the lexical environment.  |
532e41f4b71Sopenharmony_ci|  0x02fe	|  PREF_NONE	|  throw.patternnoncoercible |   	|  Exception thrown: This object cannot be forcibly executed.  |
533e41f4b71Sopenharmony_ci|  0x03fb	|  PREF_NONE	|  callruntime.topropertykey 	|  Default input parameter: acc: value	|  Convert the value in acc to the attribute value. If the conversion fails, an error is thrown.  |
534e41f4b71Sopenharmony_ci|  0x03fc	|  (deprecated)	 |  |  | Deprecated operation code. |
535e41f4b71Sopenharmony_ci|  0x03fd	|  PREF_IMM16_ID16	|  wide.newlexenvwithname +AAAA, @BBBB	|  A: number of slots in the lexical environment<br>B: literal id	|  Use the lexical variable name stored in the literal array corresponding to index B to create a lexical environment with A slots, store this lexical environment in acc, and enter.  |
536e41f4b71Sopenharmony_ci|  0x03fe	|  PREF_NONE	|  throw.deletesuperproperty	|   |  	Exception thrown: Delete the attribute of the parent class.  |
537e41f4b71Sopenharmony_ci|  0x04fb	|  PREF_IMM_16_ID16	|  callruntime.createprivateproperty +AAAA, @BBBB	|  A: number of symbols to be created<br>B: literal id	|  Create 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.<br>This instruction appears only when a class is defined.  |
538e41f4b71Sopenharmony_ci|  0x04fc	|  (deprecated)	 |  |  | Deprecated operation code. |
539e41f4b71Sopenharmony_ci|  0x04fd	|  PREF_IMM16_V8	|  wide.callrange +AAAA, vBB	|  Default input parameter: acc: function object<br>A: number of parameters<br>B, ..., B + A - 1: parameter	|  Use **B, ..., B + A - 1** as a parameter to call the function object stored in acc and store the result in acc.  |
540e41f4b71Sopenharmony_ci|  0x04fe	|  PREF_V8	|  throw.constassignment vAA	|  A: constant variable name	|  Exception thrown: Assign a value to a constant variable.  |
541e41f4b71Sopenharmony_ci|  0x05fb	|  PREF_IMM8_IMM_16_IMM_16_V8	|  callruntime.defineprivateproperty RR, +AAAA, +BBBB, vCC	|  Default input parameter: acc: value<br>A: lexical environment level<br>B: slot number<br>C: object	|  Load the value of slot B in the lexical environment beyond A levels, change value to acc, and add it to object C as a private attribute.  |
542e41f4b71Sopenharmony_ci|  0x05fc	|  (deprecated)	 |  |  | Deprecated operation code. |
543e41f4b71Sopenharmony_ci|  0x05fd	|  PREF_IMM16_V8	|  wide.callthisrange +AAAA, vBB	|  Default input parameter: acc: function object<br>A: number of parameters<br>B: object<br>B + 1, ..., B + A: parameter	|  Set **this** to **B**, call the function object stored in acc by setting **B + 1, ..., B + A** as the parameter, and store the result in acc.  |
544e41f4b71Sopenharmony_ci|  0x05fe	|  PREF_V8	|  throw.ifnotobject vAA	|  A: object	|  If A is not an object, an exception is thrown.  |
545e41f4b71Sopenharmony_ci|  0x06fb	|  PREF_IMM8_V8	|  callruntime.callinit +RR, vAA	|  acc: function object<br>R: 8-bit reserved number used in Ark runtime<br>A: object	|  Set **this** to **A**, call the function object stored in acc without passing parameters, and store the result in acc.  |
546e41f4b71Sopenharmony_ci|  0x06fc	|  (deprecated)	 |  |  | Deprecated operation code. |
547e41f4b71Sopenharmony_ci|  0x06fd	|  PREF_IMM16_V8	|  wide.supercallthisrange +AAAA, vBB	|  A: number of parameters<br>B, ..., B + A - 1: parameter	|  Use **B, ..., B + A - 1** as the parameter to call the **super** function and store the result in acc.<br>When the value of **A** is **0**, the value of **B** is **undefined**.<br>This instruction appears only in non-arrow functions.  |
548e41f4b71Sopenharmony_ci|  0x06fe	|  PREF_V8_V8	|  throw.undefinedifhole vAA, vBB	|  A: object<br>B: object name	|  If the value of A is **hole**, the following exception is thrown: The value of B is **undefined**.  |
549e41f4b71Sopenharmony_ci|  0x07fb	|  PREF_IMM16_ID16_ID16_IMM16_V8	|  callruntime.definesendableclass RRRR, @AAAA, @BBBB, +CCCC, vDD	|  R: 16-bit reserved number used in Ark runtime<br>A: **method id** of the constructor function from [sendable class](../arkts-utils/arkts-sendable.md#sendable-class)<br>B: literal id<br>C: number of formal parameters of method A<br>D: parent class	|  Use the literal array corresponding to index B and parent class D to create a class object of A and store it in acc.  |
550e41f4b71Sopenharmony_ci|  0x07fc	|  (deprecated)	 |  |  | Deprecated operation code. |
551e41f4b71Sopenharmony_ci|  0x07fd	|  PREF_IMM16_V8	|  wide.supercallarrowrange +AAAA, vBB	|  Default input parameter: acc: class object<br>A: number of parameters<br>B, ..., B + A - 1: parameter	|  Use **B, ..., B + A - 1** as a parameter to call the constructor function of the parent class of the class stored in acc and store the result in acc.<br>If the value of A is **0**, B is **undefined**.<br>This instruction appears only in arrow functions.  |
552e41f4b71Sopenharmony_ci|  0x07fe	|  PREF_IMM8	|  throw.ifsupernotcorrectcall +AA	|  Default input parameter: acc: object<br>A: error type	|  If **super** is not called properly, an error is thrown.  |
553e41f4b71Sopenharmony_ci|  0x08fb	|  PREF_IMM16	|  callruntime.ldsendableclass +AAAA	|  A: lexical environment level	|  Store the [sendable class](../arkts-utils/arkts-sendable.md#sendable-class) of the lexical environment beyond A levels in acc.  |
554e41f4b71Sopenharmony_ci|  0x08fc	|  (deprecated)	 |  |  | Deprecated operation code. |
555e41f4b71Sopenharmony_ci|  0x08fd	|  PREF_IMM32	|  wide.ldobjbyindex +AAAAAAAA	|  Default input parameter: acc: object<br>A: attribute key	|  Load the attribute whose key is A of the object stored in acc and store the attribute in acc.  |
556e41f4b71Sopenharmony_ci|  0x08fe	|  PREF_IMM16	|  throw.ifsupernotcorrectcall +AAAA	|  Default input parameter: acc: object<br>A: error type	|  If **super** is not called properly, an error is thrown.  |
557e41f4b71Sopenharmony_ci|  0x09fc	|  (deprecated)	 |  |  | Deprecated operation code. |
558e41f4b71Sopenharmony_ci|  0x09fd	|  PREF_V8_IMM32	|  wide.stobjbyindex vAA, +BBBBBBBB	|  Default input parameter: acc: value<br>A: object<br>B: attribute key	|  Store the value in acc to the attribute whose key is B of object A.  |
559e41f4b71Sopenharmony_ci|  0x09fe	|  PREF_ID16	|  throw.undefinedifholewithname @AAAA	|  Default input parameter: acc: object<br>A: string id	|  If the value of acc is **hole**, the following exception is thrown: The value of A is **undefined**.  |
560e41f4b71Sopenharmony_ci|  0x0afc	|  (deprecated)	 |  |  | Deprecated operation code. |
561e41f4b71Sopenharmony_ci|  0x0afd	|  PREF_V8_IMM32	|  wide.stownbyindex vAA, +BBBBBBBB	|  Default input parameter: acc: value<br>A: object<br>B: attribute key	|  Store the value in acc to the attribute whose key is B of object A.  |
562e41f4b71Sopenharmony_ci|  0x0bfc	|  (deprecated)	 |  |  | Deprecated operation code. |
563e41f4b71Sopenharmony_ci|  0x0bfd	|  PREF_IMM16	|  wide.copyrestargs +AAAA	|  A: start position of the rest parameters in the formal parameter list	|  Copy the rest parameters and store the parameter array copy in acc.  |
564e41f4b71Sopenharmony_ci|  0x0cfc	|  (deprecated)	 |  |  | Deprecated operation code. |
565e41f4b71Sopenharmony_ci|  0x0cfd	|  PREF_IMM16_IMM16	|  wide.ldlexvar +AAAA, +BBBB	|  A: lexical environment level<br>B: slot number	|  Store the value of slot B in the lexical environment beyond A levels in acc.  |
566e41f4b71Sopenharmony_ci|  0x0dfc	|  (deprecated)	 |  |  | Deprecated operation code. |
567e41f4b71Sopenharmony_ci|  0x0dfd	|  PREF_IMM16_IMM16	|  wide.stlexvar +AAAA, +BBBB	|  Default input parameter: acc: value<br>A: lexical environment level<br>B: slot number	|  Store the value in acc to slot B in the lexical environment beyond A levels.  |
568e41f4b71Sopenharmony_ci|  0x0efc	|  (deprecated)	 |  |  | Deprecated operation code. |
569e41f4b71Sopenharmony_ci|  0x0efd	|  PREF_IMM16	|  wide.getmodulenamespace +AAAA	|  A: module index	|  Execute the [GetModuleNamespace](https://262.ecma-international.org/12.0/#sec-getmodulenamespace) instruction for module A and store the result in acc.  |
570e41f4b71Sopenharmony_ci|  0x0ffc	|  (deprecated)	 |  |  | Deprecated operation code. |
571e41f4b71Sopenharmony_ci|  0x0ffd	|  PREF_IMM16	|  wide.stmodulevar +AAAA	|  Default input parameter: acc: value<br>A: slot number	|  Store the value of acc to the module variable of slot A.  |
572e41f4b71Sopenharmony_ci|  0x10fc	|  (deprecated)	 |  |  | Deprecated operation code. |
573e41f4b71Sopenharmony_ci|  0x10fd	|  PREF_IMM16	|  wide.ldlocalmodulevar +AAAA	|  A: slot number	|  Store the local module variables of slot A in acc. |
574e41f4b71Sopenharmony_ci| 0x11fc	| (deprecated)	| 	| 	| Deprecated operation code. |
575e41f4b71Sopenharmony_ci| 0x11fd	| PREF_IMM16	| wide.ldexternalmodulevar +AAAA	| A: slot number	| Store the external module variable of slot A in acc. |
576e41f4b71Sopenharmony_ci| 0x12fc	| (deprecated)	| 	| 	| Deprecated operation code. |
577e41f4b71Sopenharmony_ci| 0x12fd	| PREF_IMM16	| wide.ldpatchvar +AAAA	| A: slot number of the patch variable	| Load the patch variable of slot A to acc.<br/>This instruction is used only build scenarios under the patch mode. |
578e41f4b71Sopenharmony_ci| 0x13fc	| (deprecated)	| 	| 	| Deprecated operation code. |
579e41f4b71Sopenharmony_ci| 0x13fd	| PREF_IMM16	| wide.stpatchvar +AAAA	| Default input parameter: acc: value<br/>A: slot number of the patch variable	| Store the value of acc to the patch variable of slot A.<br/>This instruction is used only build scenarios under the patch mode. |
580e41f4b71Sopenharmony_ci| 0x14fc<br/>0x15fc<br/>...<br/>0x2efc	| (deprecated)	| 	| 	| Deprecated operation code. |