1# Ark Bytecode Fundamentals 2 3## Overall Design 4### Overview 5Ark bytecode is a binary file generated by the ArkCompiler from ArkTS/TS/JS code and provided for Ark Runtime to interpret and execute. Bytecode mainly contains Ark bytecode instructions.<br> 6This topic introduces the design of these instructions, covering key concepts, specific formats, and meanings to help you understand and work with Ark bytecode instructions effectively.<br> 7An Ark bytecode instruction consists of an operation code (instruction name) and a list of parameters. An operation code can be prefix-free or prefixed. Registers, immediate values, string id, method id, and literal id can be used as parameters. In addition, the accumulator can be used as a default parameter in some instructions.<br> 8In addition to registers and accumulator, Ark bytecode supports four value storage mechanisms: global variables, [module](https://262.ecma-international.org/12.0/#sec-ecmascript-language-scripts-and-modules) namespaces and variables, lexical environments and variables, and patch variables. Instructions can reference values from these storage locations as parameters. 9 10### Terms and Constraints 11#### Terms 12The following table lists the terms used in this topic. 13 14| Term | Description | 15| ---------- | ---------- | 16| acc | Accumulator, a special register in the Ark bytecode, used to store the default input or output values for most instructions. | 17| bit | A binary digit, represented as a bit in this topic. | 18| hole | An uninitialized object or variable. | 19| id | Index, a general term for string id, method id, or literal id. | 20| string id | A 16-bit number indexing a string. | 21| method id | A 16-bit number indexing a method. | 22| literal id | A 16-bit number indexing a literal array. | 23| lexical environment | A semantic environment storing closure variables. | 24| lexical variable | A closure variable stored in the lexical environment. | 25 26#### Constraints 27* All code examples provided in this topic adhere to the [ArkTS language specifications](../quick-start/introduction-to-arkts.md). 28* This topic is applicable only to Ark bytecode of version 12.0.6.0. The version number is an internal field of the ArkCompiler and does not require your attention. 29 30### Bytecode Composition 31#### Operation Codes and Prefixes 32Operation codes in Ark bytecode are typically 8-bit values, allowing for up to 256 unique opcodes. However, as the ArkCompiler's functionality has expanded, the number of operation codes has exceeded 256. To accommodate this, the Ark bytecode introduces prefixes, expanding the maximum operation code width from 8 bits to 16 bits. 8-bit operation codes (prefix-free) are used for common instructions, whereas 16-bit operation codes (prefixed) are used for less frequent ones.<br> 33Prefixed operation codes are stored in little-endian format, composed of an 8-bit operation code and an 8-bit prefix. During encoding, the operation code is shifted left by 8 bits and then ORed with the prefix. 34| Prefix | Mnemonic | Description | 35| ---------- | ---------- | ---------- | 36| 0xfe | throw | Conditional/Unconditional **throw** instruction.| 37| 0xfd | wide | Instructions with wider encoding widths for immediate values, IDs, or register indexes. | 38| 0xfc | deprecated | Instructions no longer generated by the ArkCompiler. They are used only for runtime compatibility.<br>These instructions are not described in the following sections.| 39| 0xfb | callruntime | Instructions for calling runtime methods. | 40 41The mnemonic form of a prefixed operation code is **prefix mnemonic.operation code mnemonic**. For example, **wide.stlexvar** combines the prefix **wide** (**0xfd**) with the operation code **stlexvar** (**0x0d**), resulting in the prefixed operation code **0x0dfd**. 42 43#### Registers and Accumulator 44The Ark Virtual Machine (VM) uses a register-based model with virtual registers. When a register holds a primitive value, it is 64 bits wide; when it holds an object reference, its width adjusts accordingly.<br> 45A special invisible register called the accumulator (acc) is used in the Ark bytecode. The acc serves as the default target for many instructions and as a default parameter for others, helping to produce more compact bytecode without consuming additional encoding width.<br> 46 47Example: 48```ts 49function foo(): number { 50 return 1; 51} 52``` 53Related instructions in the bytecode: 54```assembly 55.function any .foo(any a0, any a1, any a2) { 56 ldai 0x1 57 return 58} 59``` 60*ldai 0x1*: loads integer literal 1 to the acc.<br> 61*return*: returns the value in the acc. 62 63#### immediate values 64Some instructions use constants to represent integer values, double-precision floating-point values, or jump offsets. These constants, known as immediate values, can be 8-bit, 16-bit, 32-bit, or 64-bit. 65 66#### Method, String, and Literal Indexes 67The Ark bytecode stores offsets for all methods, strings, and literal arrays used in the source file. Literal arrays contain various literals, such as integer numbers, string offsets, and method offsets. In Ark bytecode instructions, these indexes are 16-bit values, referred to as method indexes (method id), string indexes (string id), and literal indexes (literal id). These indexes are encoded in instructions to reference methods, strings, and literal arrays. 68 69### Value Storage Mechanisms 70#### Global Variables 71In [Script](https://262.ecma-international.org/12.0/#sec-ecmascript-language-scripts-and-modules) build mode, global variables are stored in a globally unique mapping, with the variable name as the key and its value as the value. Global variables can be accessed using global-related instructions.<br> 72 73Example: 74```ts 75function foo(): void { 76 a += 2; 77 b = 5; 78} 79``` 80Related instructions in the bytecode: 81```assembly 82.function any .foo(any a0, any a1, any a2) { 83 tryldglobalbyname 0x0, a 84 sta v4 85 ldai 0x2 86 add2 0x1, v4 87 trystglobalbyname 0x2, a 88 ldai 0x5 89 trystglobalbyname 0x3, b 90 ... 91} 92``` 93*tryldglobalbyname 0x0, a*: loads a global variable named **a** to the acc. If this variable does not exist, an exception is thrown.<br> 94*trystglobalbyname 0x2, a*: stores the value of the acc to a global variable named **a**. If this variable does not exist, an exception is thrown.<br> 95*trystglobalbyname 0x3, b*: stores the value of the acc to a global variable named **b**. If this variable does not exist, an exception is thrown.<br> 96 97> **NOTE** 98> 99> **0x0**, **0x2**, and **0x3** in the preceding instructions are reserved for internal use in the Ark Runtime. 100 101#### Module Namespaces and Variables 102All [module namespaces](https://262.ecma-international.org/12.0/#module-namespace-exotic-object) used in the source file are compiled into arrays, referenced by instructions using indexes. For example, *getmodulenamespace 0x1* references the module namespace at index *0x1*.<br> 103All module variables used in the source file are compiled into arrays, referenced by instructions using indexes. For example, *stmodulevar 0x1* references a module variable at index *0x1*.<br> 104In a function, if the declaration of a module variable is in the same source file as the function, the variable is called a local module variable. Otherwise, it is called an external module variable. For example, *ldlocalmodulevar* and *ldexternalmodulevar* are used to load local module variables and external module variables, respectively.<br> 105Scenarios 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: 106* **import * as**: module namespace 107* **import { }**: module variable 108* **export**: local export 109 110> **NOTE** 111> 112> Module-related logic is an internal implementation detail of the compiler. As the ArkCompiler evolves, new scenarios involving module instructions may emerge, and existing ones may change due to evolving requirements or code refactoring.<br> 113 114Example: 115```ts 116import { a, b } from "./module_foo" 117import * as c from "./module_bar" 118 119export let d: number = 3; 120 121a + b + d; 122``` 123Related instructions in the bytecode: 124```assembly 125.function any .func_main_0(any a0, any a1, any a2) { 126 getmodulenamespace 0x1 127 ldai 0x3 128 stmodulevar 0x0 129 ldexternalmodulevar 0x0 130 sta v0 131 throw.undefinedifholewithname a 132 ldexternalmodulevar 0x1 133 sta v1 134 throw.undefinedifholewithname b 135 lda v1 136 add2 0x0, v0 137 sta v0 138 ldlocalmodulevar 0x0 139 sta v1 140 throw.undefinedifholewithname d 141 lda v1 142 add2 0x1, v0 143 ... 144} 145``` 146*getmodulenamespace 0x1*: obtains the module namespace (c) of slot 1 and stores it in the acc.<br> 147*stmodulevar 0x0*: stores the values in the acc into slot 0 of the current module.<br> 148*ldexternalmodulevar 0x0*: loads the value (a) of slot 0 of the external module and stores it in the acc.<br> 149*ldlocalmodulevar 0x0*: loads the value (d) of slot 0 of the current local module and stores it in the acc. 150 151#### Lexical Environments and Lexical Variables 152In Ark bytecode, a lexical environment may be considered as an array with multiple slots, and each slot corresponds to one lexical variable. A method may contain multiple lexical environments. Instructions reference lexical variables using the relative nesting level and slot index of the lexical environment. For example, *ldlexvar 0x1, 0x2* loads the value from slot 0x2 of the lexical environment one level outside the current lexical environment into the acc. 153``` 154|xxx|xxx|xxx|xxx| <-- Lexical environment one level outside the current lexical environment. 155 ^ 156 |------------ ldlexvar 0x1, 0x2 157 158|xxx|xxx|xxx|xxx| <-- Current lexical environment. 159``` 160**NOTE**<br> 161The 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. 162Example: 163```ts 164function foo(): void { 165 let a: number = 1; 166 function bar(): number { 167 return a; 168 } 169} 170``` 171Related instructions in the bytecode: 172```assembly 173.function any .foo(any a0, any a1, any a2) { 174 newlexenv 0x1 175 ... 176 definefunc 0x0, .bar, 0x0 177 sta v3 178 ldai 0x1 179 ... 180 stlexvar 0x0, 0x0 181 ... 182} 183 184.function any .bar(any a0, any a1, any a2) { 185 ... 186 ldlexvar 0x0, 0x0 187 ... 188} 189``` 190*newlexenv 0x1*: creates a lexical environment with one slot, stores it in the acc, and enters this environment.<br> 191*stlexvar 0x0, 0x0*: stores the value in the acc into slot 0 of the lexical environment 0 level outside the current lexical environment.<br> 192*ldlexvar 0x0, 0x0*: stores the value from slot 0 of the lexical environment 0 level outside the current lexical environment into the acc. 193 194#### Shared Lexical Environments 195Shared lexical environments are a special type of lexical environment Unlike regular lexical environments, each lexical variable in a shared lexical environment is a [Sendable object](arkts-sendable.md). The ArkCompiler uses shared lexical environments to enable sharing of lexical variables across multiple threads. 196 197Example: 198```ets 199@Sendable 200class A { } 201 202@Sendable 203class B { 204 u: A = new A() 205} 206``` 207Related instructions in the bytecode: 208```assembly 209.function any .#~B=#B(any a0, any a1, any a2) { 210label_1: 211label_0: 212 callruntime.ldsendablevar 0x0, 0x0 213 sta v0 214 throw.undefinedifholewithname A 215 ... 216label_2: 217} 218 219.function any .func_main_0(any a0, any a1, any a2) { 220label_1: 221label_0: 222 callruntime.newsendableenv 0x1 223 ... 224 callruntime.definesendableclass 0x0, .#~A=#A, _3, 0x0, v0 225 callruntime.stsendablevar 0x0, 0x0 226 ... 227label_2: 228} 229``` 230an instruction callruntime.newsendableenv 0x1: creates a shared lexical environment with one slot and enters this lexical environment.<br> 231*callruntime.stsendablevar 0x0, 0x0*: stores the value in the acc into slot 0 of the lexical environment outside level 0.<br> 232*callruntime.ldsendablevar 0x0, 0x0*: stores the value from slot 0 of the lexical environment 0 level outside the current lexical environment into the acc. 233 234#### Patch Variables 235The ArkCompiler supports patch mode compilation. When a source file is modified, patch mode compilation generates a patch bytecode that, together with the original bytecode, completes the functional update. During patch mode compilation, patch variables generated by the ArkCompiler are stored in a special patch lexical environment. Instructions in the Ark bytecode use slot numbers from the patch lexical environment to reference patch variables. For example, the instruction *ldpatchvar 0x1* is used to load the patch variable from slot 1.<br> 236 237Example: 238```ts 239function bar(): void {} // Add a statement and compile the patch. 240 241function foo(): void { 242 bar(); // Add a statement and compile the patch. 243} 244``` 245Related instructions in the bytecode: 246```assembly 247.function any foo(...) { 248 ... 249 wide.ldpatchvar 0x0 250 sta v4 251 lda v4 252 callarg0 0x0 253 ... 254} 255 256.function any patch_main_0(...) { 257 newlexenv 0x1 258 definefunc 0x1, bar:(any,any,any), 0x0 259 wide.stpatchvar 0x0 260 ... 261} 262``` 263*wide.stpatchvar 0x0*: stores the **bar** function into slot 0 of the patch lexical environment.<br> 264*wide.ldpatchvar 0x0*: stores the value from slot 0 in the patch lexical environment into the acc. 265 266### Function Call Specifications 267For a method with N formal parameters, the last N+3 registers are used to pass parameters. The first three registers are fixed to represent the function object (FunctionObject), [new.target](https://262.ecma-international.org/12.0/#sec-function-environment-records) (NewTarget), and **this** from the lexical environment where the function resides. The subsequent N registers correspond to the N formal parameters.<br> 268 269Example: 270```ts 271function foo(a: number, b: number): void {} 272``` 273Related instructions in the bytecode: 274```assembly 275.function any .foo(any a0, any a1, any a2, any a3, any a4) { 276 // a0: FunctionObject 277 // a1: NewTarget 278 // a2: this 279 // a3: a 280 // a4: b 281} 282``` 283 284## Bytecode Format Description 285| Mnemonic | Semantic Description | 286| ---------- | ---------- | 287| ID16 | 8-bit operation code and 16-bit id | 288| IMM16 | 8-bit operation code and 16-bit immediate value | 289| IMM16_ID16 | 8-bit operation code, 16-bit immediate value, and 16-bit id | 290| IMM16_ID16_ID16_IMM16_V8 | 8-bit operation code, 16-bit immediate value, two 16-bit id, 16-bit immediate value, and 8-bit register | 291| IMM16_ID16_IMM8 | 8-bit operation code, 16-bit immediate value, 16-bit id, and 8-bit immediate value | 292| IMM16_ID16_V8 | 8-bit operation code, 16-bit immediate value, 16-bit id, and 8-bit register | 293| IMM16_IMM16 | 8-bit operation code and two 16-bit immediate values | 294| IMM16_IMM8_V8 | 8-bit operation code, 16-bit immediate value, 8-bit immediate value, and 8-bit register | 295| IMM16_V8 | 8-bit operation code, 16-bit immediate value, and 8-bit register | 296| IMM16_V8_IMM16 | 8-bit operation code, 16-bit immediate value, 8-bit register, and 16-bit immediate value | 297| IMM16_V8_V8 | 8-bit operation code, 16-bit immediate value, and two 8-bit registers | 298| IMM32 | 8-bit operation code and 32-bit immediate value | 299| IMM4_IMM4 | 8-bit operation code and two 4-bit immediate values | 300| IMM64 | 8-bit operation code and 64-bit immediate value | 301| IMM8 | 8-bit operation code and 8-bit immediate value | 302| IMM8_ID16 | 8-bit operation code, 8-bit immediate value, and 16-bit id | 303| IMM8_ID16_ID16_IMM16_V8 | 8-bit operation code, 8-bit immediate value, two 16-bit id, 16-bit immediate value, and 8-bit register | 304| IMM8_ID16_IMM8 | 8-bit operation code, 8-bit immediate value, 16-bit id, 8-bit immediate value | 305| IMM8_ID16_V8 | 8-bit operation code, 8-bit immediate value, 16-bit id, and 8-bit register | 306| IMM8_IMM16 | 8-bit operation code, 8-bit immediate value, and 16-bit immediate value | 307| IMM8_IMM8 | 8-bit operation code and two 8-bit immediate values | 308| IMM8_IMM8_V8 | 8-bit operation code, two 8-bit immediate values, and 8-bit register | 309| IMM8_V8 | 8-bit operation code, 8-bit immediate value, and 8-bit register | 310| IMM8_V8_IMM16 | 8-bit operation code, 8-bit immediate value, 8-bit register, and 16-bit immediate value | 311| IMM8_V8_V8 | 8-bit operation code, 8-bit immediate value, and two 8-bit registers | 312| IMM8_V8_V8_V8 | 8-bit operation code, 8-bit immediate value, and three 8-bit registers | 313| IMM8_V8_V8_V8_V8 | 8-bit operation code, 8-bit immediate value, and four 8-bit registers | 314| NONE | 8-bit operation code | 315| PREF_IMM16 | 16-bit prefixed operation code, 16-bit immediate value | 316| PREF_IMM16_ID16 | 16-bit prefixed operation code, 16-bit immediate value, and 16-bit id | 317| PREF_IMM16_V8 | 16-bit prefixed operation code, 16-bit immediate value, and 8-bit register | 318| PREF_IMM16_V8_V8 | 16-bit prefixed operation code, 16-bit immediate value, and two 8-bit registers | 319| PREF_IMM8 | 16-bit prefixed operation code and 8-bit immediate value | 320| PREF_NONE | 16-bit prefixed operation code | 321| PREF_V8 | 16-bit prefixed operation code and 8-bit register | 322| PREF_V8_ID16 | 16-bit prefixed operation code, 8-bit register, and 16-bit id | 323| PREF_V8_IMM32 | 16-bit prefixed operation code, 8-bit register, and 32-bit immediate value | 324| V16_V16 | 8-bit operation code and two 16-bit registers | 325| V4_V4 | 8-bit operation code and two 4-bit registers | 326| V8 | 8-bit operation code and 8-bit register | 327| V8_IMM16 | 8-bit operation code, 8-bit register, and 16-bit immediate value | 328| V8_IMM8 | 8-bit operation code, 8-bit register, and 8-bit immediate value | 329| V8_V8 | 8-bit operation code and two 8-bit registers | 330| V8_V8_V8 | 8-bit operation code and three 8-bit registers | 331| V8_V8_V8_V8 | 8-bit operation code and four 8-bit registers | 332 333## Bytecode Summary 334The table below summarizes all Ark bytecode instructions in the current version. The register index, immediate value, and id are described using a character to represent each four-bit width.<br> 335For example, consider the instruction *defineclasswithbuffer RR, @AAAA, @BBBB, +CCCC, vDD*:<br> 336* *defineclasswithbuffer*: mnemonic for the operation code. 337* *RR*: 8-bit reserved number used internally during the Ark runtime. The number mentioned here is just an example showing a complete instruction format. 338* *@AAAA, @BBBB*: 16-bit id 339* *+CCCC*: 16-bit immediate value 340* *vDD*: 8-bit register index 341 342| Operation Code | Format | Mnemonic/Syntax | Parameters | Description | 343| ------- | ------- | ---------- | ---------- | -------- | 344| 0x00 | NONE | ldundefined | | Loads **undefined** to the acc. | 345| 0x01 | NONE | ldnull | | Loads **null** to the acc. | 346| 0x02 | NONE | ldtrue | | Loads **true** to the acc. | 347| 0x03 | NONE | ldfalse | | Loads **false** to the acc. | 348| 0x04 | NONE | createemptyobject | | Creates an empty object and stores it in the acc. | 349| 0x05 | IMM8| createemptyarray RR | R: 8-bit reserved number used in Ark runtime| Creates an empty array and stores it in the acc. | 350| 0x06 | IMM8_ID16 | createarraywithbuffer RR, @AAAA | R: 8-bit reserved number used in Ark runtime<br>A: 16-bit literal id| Uses the literal array corresponding to index A to create an array object and stores it in the acc. | 351| 0x07 | IMM8_ID16 | createobjectwithbuffer RR, @AAAA | R: 8-bit reserved number used in Ark runtime<br>A: 16-bit literal id| Uses the literal array corresponding to index A to create an object and stores it in the acc. | 352| 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| Uses **B + 1, ..., B + A - 1** as a parameter to create an instance of class B and stores it in the acc. | 353| 0x09 | IMM8 | newlexenv +AA | A: number of slots in the lexical environment| Creates a lexical environment with slot A, stores it in the acc, and enters the lexical environment. | 354| 0x0a | IMM8_V8 | add2 RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A + acc` and stores the result in the acc. | 355| 0x0b | IMM8_V8 | sub2 RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A - acc` and stores the result in the acc. | 356| 0x0c | IMM8_V8 | mul2 RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A * acc` and stores the result in the acc. | 357| 0x0d | IMM8_V8 | div2 RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A / acc` and stores the result in the acc. | 358| 0x0e | IMM8_V8 | mod2 RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A % acc` and stores the result in the acc. | 359| 0x0f | IMM8_V8 | eq RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A == acc` and stores the result in the acc. | 360| 0x10 | IMM8_V8 | noteq RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A != acc` and stores the result in the acc. | 361| 0x11 | IMM8_V8 | less RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A < acc` and stores the result in the acc. | 362| 0x12 | IMM8_V8 | lesseq RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A <= acc` and stores the result in the acc. | 363| 0x13 | IMM8_V8 | greater RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A > acc` and stores the result in the acc. | 364| 0x14 | IMM8_V8 | greatereq RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A >= acc` and stores the result in the acc. | 365| 0x15 | IMM8_V8 | shl2 RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A << acc` and stores the result in the acc. | 366| 0x16 | IMM8_V8 | shr2 RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A >>> acc` and stores the result in the acc. | 367| 0x17 | IMM8_V8 | ashr2 RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A >> acc` and stores the result in the acc. | 368| 0x18 | IMM8_V8 | and2 RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A & acc` and stores the result in the acc. | 369| 0x19 | IMM8_V8 | or2 RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A \| acc` and stores the result in the acc. | 370| 0x1a | IMM8_V8 | xor2 RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A ^ acc` and stores the result in the acc. 371| 0x1b | IMM8_V8 | exp RR, vAA | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime<br>A: operand| Calculates `A ** acc` and stores the result in the acc. | 372| 0x1c | IMM8 | typeof RR | Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime| Calculates `typeof acc` and stores the result in the acc. | 373| 0x1d | IMM8 | tonumber RR | Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime| Uses the acc as a parameter, executes [ToNumber](https://262.ecma-international.org/12.0/#sec-tonumber), and stores the result in the acc. | 374| 0x1e | IMM8 | tonumeric RR | Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime| Uses the acc as a parameter, executes [ToNumeric](https://262.ecma-international.org/12.0/#sec-tonumeric), and stores the result in the acc. | 375| 0x1f | IMM8 | neg RR | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime| Calculates `-acc` and stores the result in the acc. | 376| 0x20 | IMM8 | not RR | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime| Calculates `~acc` and stores the result in the acc. | 377| 0x21 | IMM8 | inc RR | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime| Calculates `acc + 1` and stores the result in the acc. | 378| 0x22 | IMM8 | dec RR | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime| Calculates `acc - 1` and stores the result in the acc. | 379| 0x23 | NONE | istrue | Default input parameter: acc: object| Calculates `acc == true` and stores the result in the acc. | 380| 0x24 | NONE | isfalse | Default input parameter: acc: object| Calculates `acc == false` and stores the result in the acc. | 381| 0x25 | IMM8_V8 | isin RR, vAA | Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime<br>A: Object| Calculates `A in acc` and stores the result in the acc. | 382| 0x26 | IMM8_V8 | instanceof RR, vAA | Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime<br>A: Object| Calculates `A instanceof acc` and stores the result in the acc. | 383| 0x27 | IMM8_V8 | strictnoteq RR, vAA | Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime<br>A: Object| Calculates `acc !== A` and stores the result in the acc. | 384| 0x28 | IMM8_V8 | stricteq RR, vAA | Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime<br>A: Object| Calculates `acc === A` and stores the result in the acc. | 385| 0x29 | IMM8 | callarg0 RR | Default input parameter: acc: function object<br>R: 8-bit reserved number used in Ark runtime| Directly calls the function object stored in the acc without passing parameters and stores the result in the acc. | 386| 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| Uses **A** as a parameter to call the function object stored in the acc and stores the result in the acc. | 387| 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 and B: parameters| Uses **A** and **B** as parameters to call the function object stored in the acc and stores the result in the acc. | 388| 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| Uses **A**, **B**, and **C** as parameters to call the function object stored in the acc and stores the result in the acc. | 389| 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| Sets **this** to **A**, calls the function object stored in the acc without passing parameters, and stores the result in the acc. | 390| 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| Sets **this** to **A**, calls the function object stored in the acc by setting **B** as a parameter, and stores the result in the acc. | 391| 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 | Sets **this** to **A**, calls the function object stored in the acc by setting **B** and **C** as parameters, and stores the result in the acc. | 392| 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 | Sets **this** to **A**, calls the function object stored in the acc by setting **B**, **C**, and **D** as parameters, and stores the result in the acc. | 393| 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| Sets **this** to **B**, calls the function object stored in the acc by setting **B + 1, ..., B + A** as a parameter, and stores the result in the acc. | 394| 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| Uses **B, ..., B + A - 1** as a parameter to call the **super** function and stores the result in the acc.<br>When the value of **A** is **0**, the value of **B** is **undefined**.<br>This instruction appears only in non-arrow functions. | 395| 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| Creates the function object of method A and stores it in the acc. | 396| 0x34 | IMM8_ID16_IMM8 | definemethod RR, @AAAA, +BB | Default input parameter: acc: class object or its prototype. When the static method is used, the parameter is a class object in the acc.<br>R: 8-bit reserved number used in Ark runtime<br>A: method id<br>B: number of formal parameters of method A | Creates the function object of method A, sets the object in the acc to the [HomeObject](https://262.ecma-international.org/12.0/#sec-ecmascript-function-objects) property of the function object, and stores this function object in the acc. | 397| 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| Uses the literal array corresponding to index B and parent class D to create a class object of A and stores it in the acc. | 398| 0x36 | V8 | getnextpropname vAA | A: iterator| Executes 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 stores the result in the acc. | 399| 0x37 | IMM8_V8 | ldobjbyvalue RR, vAA | Default input parameter: acc: property key<br>R: 8-bit reserved number used in Ark runtime<br>A: Object| Loads the property whose key is **acc** of object A and stores the result in the acc. 400| 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: property key| Stores the value in the acc to the property whose key is B of object A. | 401| 0x39 | IMM8_V8 | ldsuperbyvalue RR, vAA | Default input parameter: acc: property key<br>R: 8-bit reserved number used in Ark runtime<br>A: Object| In the current function, obtains the property whose key of **super** is **acc** and stores the property in the acc. If the property is of an accessor, the object in A is used as the **this** parameter when the **getter** function of the property is called. | 402| 0x3a | IMM8_IMM16 | ldobjbyindex RR, +AAAA | Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime<br>A: property key| Loads the property whose key is A of the object stored in the acc and stores the property in the **acc**. | 403| 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: property key| Stores the value in the **acc** to the property whose key is B of object A. | 404| 0x3c | IMM4_IMM4 | ldlexvar +A, +B | A: lexical environment level<br>B: slot number| Stores the value of slot B in the lexical environment beyond A levels in the acc. | 405| 0x3d | IMM4_IMM4 | stlexvar +A, +B | Default input parameter: acc: value<br>A: lexical environment level<br>B: slot number| Stores the value in the acc to slot B in the lexical environment beyond A levels. | 406| 0x3e | ID16 | lda.str @AAAA | A: string id| Stores the string corresponding to index A to **acc**. | 407| 0x3f | IMM8_ID16 | tryldglobalbyname RR, @AAAA | R: 8-bit reserved number used in Ark runtime<br>A: string id| Stores the global variable whose name is the string corresponding to index A in the acc. If the global variable named A does not exist, an exception is thrown. | 408| 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| Stores the value in the acc to the global variable whose name is the string corresponding to index A. If the global variable named A does not exist, an exception is thrown. | 409| 0x41 | IMM16_ID16 | ldglobalvar RRRR, @AAAA | R: 16-bit reserved number used in Ark runtime<br>A: string id| Stores the value of the global variable whose name is the string corresponding to index A in the acc. The variable must exist. | 410| 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| Loads the property whose key of the object stored in the acc is the string corresponding to index A and stores the property in the acc. | 411| 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| Stores the value in the acc to the property whose key of object B is the string corresponding to index A. | 412| 0x44 | V4_V4 | mov vA, vB | A, B: register index| Copies the contents in register B to register A. | 413| 0x45 | V8_V8 | mov vAA, vBB | A, B: register index| Copies the contents in register B to register A. | 414| 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, obtains the property whose key of **super** is the string corresponding to index A and stores the property in the acc. If the property is of an accessor, the object in the acc is used as the **this** parameter when the **getter** function of the property is called. | 415| 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| Stores the value in the acc to the constant of the string corresponding to index A defined by **const** in the global variable. | 416| 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| Stores the value in the acc to the variable of the string corresponding to index A defined by **let** in the global variable. | 417| 0x49 | IMM8_ID16 | ldthisbyname RR, @AAAA | R: 8-bit reserved number used in Ark runtime<br>A: string id| Loads the property whose key of **this** is the string corresponding to index A and stores the result in the acc. | 418| 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| Stores the value in the acc to the property whose key of **this** is the string corresponding to index A. | 419| 0x4b | IMM8 | ldthisbyvalue RR | Default input parameter: acc: property key<br>R: 8-bit reserved number used in Ark runtime| Loads the property whose key of **this** is **acc** and stores the result in the acc. | 420| 0x4c | IMM8_V8 | stthisbyvalue RR, vAA | Default input parameter: acc: value<br>R: 8-bit reserved number used in Ark runtime<br>A: property key| Stores the value in the acc to the property whose key of **this** is A. | 421| 0x4d | IMM8 | jmp +AA | A: signed branch offset| Jumps to branch A unconditionally. | 422| 0x4e | IMM16 | jmp +AAAA | A: signed branch offset| Jumps to branch A unconditionally. | 423| 0x4f | IMM8 | jeqz +AA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc == 0` and jumps to branch A if it is true. | 424| 0x50 | IMM16 | jeqz +AAAA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc == 0` and jumps to branch A if it is true. | 425| 0x51 | IMM8 | jnez +AA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc != 0` and jumps to branch A if it is true. | 426| 0x52 | IMM8 | jstricteqz +AA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc === 0` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 427| 0x53 | IMM8 | jnstricteqz +AA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc !== 0` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 428| 0x54 | IMM8 | jeqnull +AA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc == null` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 429| 0x55 | IMM8 | jnenull +AA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc != null` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 430| 0x56 | IMM8 | jstricteqnull +AA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc === null` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 431| 0x57 | IMM8 | jnstricteqnull +AA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc !== null` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 432| 0x58 | IMM8 | jequndefined +AA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc == undefined` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 433| 0x59 | IMM8 | jneundefined +AA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc != undefined` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 434| 0x5a | IMM8 | jstrictequndefined +AA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc === undefined` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 435| 0x5b | IMM8 | jnstrictequndefined +AA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc !== undefined` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 436| 0x5c | V8_IMM8 | jeq vAA, +BB | Default input parameter: acc: value<br>A: value<br>B: signed branch offset| Calculates `acc == A` and jumps to branch B if it is true.<br>The instruction feature is disabled and is unavailable currently. | 437| 0x5d | V8_IMM8 | jne vAA, +BB | Default input parameter: acc: value<br>A: value<br>B: signed branch offset| Calculates `acc != A` and jumps to branch B if it is true.<br>The instruction feature is disabled and is unavailable currently. | 438| 0x5e | V8_IMM8 | jstricteq vAA, +BB | Default input parameter: acc: object<br>A: Object<br>B: signed branch offset| Calculates `acc === A` and jumps to branch B if it is true.<br>The instruction feature is disabled and is unavailable currently. | 439| 0x5f | V8_IMM8 | jnstricteq vAA, +BB | Default input parameter: acc: object<br>A: Object<br>B: signed branch offset| Calculates `acc !== A` and jumps to branch B if it is true.<br>The instruction feature is disabled and is unavailable currently. | 440| 0x60 | V8 | lda vAA | A: register index| Stores the contents of register A in the acc. | 441| 0x61 | V8 | sta vAA | Default input parameter: acc<br>A: register index| Stores the contents of acc in register A. | 442| 0x62 | IMM32 | ldai +AAAAAAAA | A: constant literal| Stores the integer literal A in the acc. | 443| 0x63 | IMM64 | fldai +AAAAAAAAAAAAAAAA | A: constant literal| Stores the double-precision floating-point literal A in the acc. | 444| 0x64 | NONE | return | Default input parameter: acc: value| Returns the value in the acc. | 445| 0x65 | NONE | returnundefined | | Returns **undefined**. | 446| 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 the acc. | 447| 0x67 | IMM8 | getiterator RR | Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime| Executes the [GetIterator](https://262.ecma-international.org/12.0/#sec-getiterator) (acc, sync) method and stores the result in the acc. | 448| 0x68 | IMM8_V8 | closeiterator RR, vAA | R: 8-bit reserved number used in Ark runtime<br>A: Object| Uses 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 stores the result in the acc. | 449| 0x69 | NONE | poplexenv | | Jumps out of the current lexical environment and enters the outer lexical environment. | 450| 0x6a | NONE | ldnan | | Stores the **nan** value in the acc. | 451| 0x6b | NONE | ldinfinity | | Stores the **infinity** value in the acc. | 452| 0x6c | NONE | getunmappedargs | | Stores the **arguments** of the current function in the acc. | 453| 0x6d | NONE | ldglobal | | Stores the **global** object in the acc.| 454| 0x6e | NONE | ldnewtarget | | Stores the **NewTarget** implicit parameter of the current function in the acc.<br>The instruction feature is disabled and is unavailable currently. | 455| 0x6f | NONE | ldthis | | Stores the **this** value in the acc. | 456| 0x70 | NONE | ldhole | | Stores the **hole** value in the acc. | 457| 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| Uses the string corresponding to index A and the modifier corresponding to index B to create a regular expression and stores it in the acc.<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**. | 458| 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| Uses the string corresponding to index A and the modifier corresponding to index B to create a regular expression and stores it in the acc.<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**. | 459| 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| Uses **B, ..., B + A - 1** as a parameter to call the function object stored in the acc and stores the result in the acc. | 460| 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| Creates the function object of method A and stores it in the acc. | 461| 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| Uses the literal array corresponding to index B and parent class D to create a class object of A and stores it in the acc. | 462| 0x76 | IMM8 | gettemplateobject RR | Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime| Executes [GetTemplateObject](https://262.ecma-international.org/12.0/#sec-gettemplateobject) (acc) and stores the result in the acc. | 463| 0x77 | IMM8_V8 | setobjectwithproto RR, vAA | Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime<br>A: value| Sets the **\_\_proto\_\_** property of the object stored in the acc to A. | 464| 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: property key| Stores the value in the acc to the property whose key is B of object A. | 465| 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: property key| Stores the value in the acc to the property whose key is B of object A. | 466| 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| Stores the value in the acc to the property whose key of object B is the string corresponding to index A. | 467| 0x7b | IMM8 | getmodulenamespace +AA | A: module index| Executes the [GetModuleNamespace](https://262.ecma-international.org/12.0/#sec-getmodulenamespace) instruction for module A and stores the result in the acc. | 468| 0x7c | IMM8 | stmodulevar +AA | Default input parameter: acc: value<br>A: slot number| Stores the value in the acc to the module variable of slot A. | 469| 0x7d | IMM8 | ldlocalmodulevar +AA | A: slot number| Stores the local module variables of slot A in the acc. | 470| 0x7e | IMM8 | ldexternalmodulevar +AA | A: slot number| Stores the external module variable of slot A in the acc. | 471| 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| Stores the value in the acc to the global variable whose name is the string corresponding to index A. This variable must exist. | 472| 0x80 | IMM16 | createemptyarray RRRR | R: 16-bit reserved number used in Ark runtime| Creates an empty array and stores it in the acc. | 473| 0x81 | IMM16_ID16 | createarraywithbuffer RRRR, @AAAA | R: 16-bit reserved number used in Ark runtime<br>A: literal id| Uses the literal array corresponding to index A to create an array object and stores it in the acc. | 474| 0x82 | IMM16_ID16 | createobjectwithbuffer RRRR, @AAAA | R: 16-bit reserved number used in Ark runtime<br>A: literal id| Uses the literal array corresponding to index A to create an object and stores it in the acc. | 475| 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| Uses **B + 1, ..., B + A - 1** as a parameter to create an instance of class B and stores it in the acc. | 476| 0x84 | IMM16 | typeof RRRR | Default input parameter: acc: object<br>R: 16-bit reserved number used in Ark runtime| Calculates `typeof acc` and stores the result in the acc. | 477| 0x85 | IMM16_V8 | ldobjbyvalue RRRR, vAA | Default input parameter: acc: property key<br>R: 16-bit reserved number used in Ark runtime<br>A: Object| Loads the property whose key is **acc** of object A and stores the result in the acc. | 478| 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: property key| Stores the value in the acc to the property whose key is B of object A. | 479| 0x87 | IMM16_V8 | ldsuperbyvalue RRRR, vAA | Default input parameter: acc: property key<br>R: 16-bit reserved number used in Ark runtime<br>A: Object| In the current function, obtains the property whose key of **super** is **acc** and stores the property in the acc. If the property is of an accessor, the object in A is used as the **this** parameter when the **getter** function of the property is called. | 480| 0x88 | IMM16_IMM16 | ldobjbyindex RRRR, +AAAA | Default input parameter: acc: object<br>R: 16-bit reserved number used in Ark runtime<br>A: property key| Loads the property whose key is A of the object stored in the acc and stores the property in the acc. | 481| 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: property key| Stores the value in the acc to the property whose key is B of object A. | 482| 0x8a | IMM8_IMM8 | ldlexvar +AA, +BB | A: lexical environment level<br>B: slot number| Stores the value of slot B in the lexical environment beyond A levels in the acc. | 483| 0x8b | IMM8_IMM8 | stlexvar +AA, +BB | Default input parameter: acc: value<br>A: lexical environment level<br>B: slot number| Stores the value in the acc to slot B in the lexical environment beyond A levels. | 484| 0x8c | IMM16_ID16 | tryldglobalbyname RRRR, @AAAA | R: 16-bit reserved number used in Ark runtime<br>A: string id| Stores the global variable whose name is the string corresponding to index A in the acc. If the global variable named A does not exist, an exception is thrown. | 485| 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| Stores the value in the acc to the global variable whose name is the string corresponding to index A. If the global variable named A does not exist, an exception is thrown. | 486| 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| Stores the function object in the acc to the property whose key of object B is the string corresponding to index A and sets the function name to the string corresponding to index A. | 487| 0x8f | V16_V16 | mov vAAAA, vBBBB | A, B: register index| Copies the contents in register B to register A. | 488| 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| Loads the property whose key of the object stored in the acc is the string corresponding to index A and stores the property in the acc. | 489| 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| Stores the value in the acc to the property whose key of object B is the string corresponding to index A. | 490| 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, obtains the property whose key of **super** is the string corresponding to index A and stores the property in the acc. If the property is of an accessor, the object in the acc is used as the **this** parameter when the **getter** function of the property is called. | 491| 0x93 | IMM16_ID16 | ldthisbyname RRRR, @AAAA | R: 16-bit reserved number used in Ark runtime<br>A: string id| Loads the property whose key of **this** is the string corresponding to index A and stores the result in the acc. | 492| 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| Stores the value in the acc to the property whose key of **this** is the string corresponding to index A. | 493| 0x95 | IMM16 | ldthisbyvalue RRRR | Default input parameter: acc: property key<br>R: 16-bit reserved number used in Ark runtime| Loads the property whose key of **this** is **acc** and stores the result in the acc. | 494| 0x96 | IMM16_V8 | stthisbyvalue RRRR, vAA | Default input parameter: acc: value<br>R: 16-bit reserved number used in Ark runtime<br>A: property key| Stores the value in the acc to the property whose key of **this** is A. | 495| 0x97 | V8 | asyncgeneratorreject vAA | Default input parameter: acc: exception<br>A: generator| Uses the exception stored in [generator](https://262.ecma-international.org/12.0/#sec-generator-objects) A and the acc, executes [AsyncGeneratorReject](https://262.ecma-international.org/12.0/#sec-asyncgeneratorreject), and stores the result in the acc. | 496| 0x98 | IMM32 | jmp +AAAAAAAA | A: signed branch offset| Jumps to branch A unconditionally. | 497| 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: property key| Stores the value in the acc to the property whose key of object A is B and set the function name to B. | 498| 0x9a | IMM32 | jeqz +AAAAAAAA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc == 0` and jumps to branch A if it is true. | 499| 0x9b | IMM16 | jnez +AAAA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc != 0` and jumps to branch A if it is true. | 500| 0x9c | IMM32 | jnez +AAAAAAAA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc != 0` and jumps to branch A if it is true. | 501| 0x9d | IMM16 | jstricteqz +AAAA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc === 0` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 502| 0x9e | IMM16 | jnstricteqz +AAAA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc !== 0` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 503| 0x9f | IMM16 | jeqnull +AAAA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc == null` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 504| 0xa0 | IMM16 | jnenull +AAAA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc != null` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 505| 0xa1 | IMM16 | jstricteqnull +AAAA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc === null` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 506| 0xa2 | IMM16 | jnstricteqnull +AAAA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc !== null` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 507| 0xa3 | IMM16 | jequndefined +AAAA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc == undefined` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 508| 0xa4 | IMM16 | jneundefined +AAAA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc != undefined` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 509| 0xa5 | IMM16 | jstrictequndefined +AAAA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc === undefined` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 510| 0xa6 | IMM16 | jnstrictequndefined +AAAA | Default input parameter: acc: value<br>A: signed branch offset| Calculates `acc !== undefined` and jumps to branch A if it is true.<br>The instruction feature is disabled and is unavailable currently. | 511| 0xa7 | V8_IMM16 | jeq vAA, +BBBB | Default input parameter: acc: value<br>A: value<br>B: signed branch offset| Calculates `acc == A` and jumps to branch B if it is true.<br>The instruction feature is disabled and is unavailable currently. | 512| 0xa8 | V8_IMM16 | jne vAA, +BBBB | Default input parameter: acc: value<br>A: value<br>B: signed branch offset| Calculates `acc != A` and jumps to branch B if it is true.<br>The instruction feature is disabled and is unavailable currently. | 513| 0xa9 | V8_IMM16 | jstricteq vAA, +BBBB | Default input parameter: acc: value<br>A: value<br>B: signed branch offset| Calculates `acc === A` and jumps to branch B if it is true.<br>The instruction feature is disabled and is unavailable currently. | 514| 0xaa | V8_IMM16 | jnstricteq vAA, +BBBB | Default input parameter: acc: value<br>A: value<br>B: signed branch offset| Calculates `acc !== A` and jumps to branch B if it is true.<br>The instruction feature is disabled and is unavailable currently. | 515| 0xab | IMM16 | getiterator RRRR | Default input parameter: acc: object<br>R: 16-bit reserved number used in Ark runtime| Executes the [GetIterator](https://262.ecma-international.org/12.0/#sec-getiterator) (acc, sync) method and stores the result in the acc. | 516| 0xac | IMM16_V8 | closeiterator RRRR, vAA | R: 16-bit reserved number used in Ark runtime<br>A: Object| Uses 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 stores the result in the acc. | 517| 0xad | NONE | ldsymbol | | Load the **Symbol** object in **acc**. | 518| 0xae | NONE | asyncfunctionenter | | Creates an asynchronous function object and store the object in the acc. | 519| 0xaf | NONE | ldfunction | | Loads the current function object in the acc. | 520| 0xb0 | NONE | debugger | | Pauses execution during debugging. | 521| 0xb1 | V8 | creategeneratorobj vAA | A: function object| Uses function object A to create a generator and stores it in the acc. | 522| 0xb2 | V8_V8 | createiterresultobj vAA, vBB | A: Object<br>B: Boolean value| Sets *value* A and *done* B as parameters to execute [CreateIterResultObject](https://262.ecma-international.org/12.0/#sec-createiterresultobject) instruction and stores the result in the acc. | 523| 0xb3 | IMM8_V8_V8 | createobjectwithexcludedkeys +AA, vBB, vCC | A: number of range registers<br>B: object<br>C, ..., C + A: property key value.| Based on object B, creates an object excluding the key **C, ..., C + A** and stores it in the acc.<br>This instruction supports object creation by using destructor and extension syntax. | 524| 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| Uses the parameter list stored in the acc to create an instance of class A and stores it in the acc. | 525| 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| Uses the parameter list stored in the acc to create an instance of class A and stores it in the acc. | 526| 0xb6 | IMM8_ID16 | newlexenvwithname +AA, @BBBB | A: number of slots in the lexical environment<br>B: literal id| Uses the lexical variable name stored in the literal array corresponding to index B to create a lexical environment with A slots, stores this lexical environment in the acc, and enters the lexical environment. | 527| 0xb7 | V8 | createasyncgeneratorobj vAA | A: function object| Creates an asynchronous generator based on function object A and stores it in the acc. | 528| 0xb8 | V8_V8_V8 | asyncgeneratorresolve vAA, vBB, vCC | A: generator<br>B: object<br>C: boolean value| Uses *generator* A, *value* B, and *done* C as parameters to execute [AsyncGeneratorResolve](https://262.ecma-international.org/12.0/#sec-asyncgeneratorresolve) and stores the result in the acc. | 529| 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| Uses parameter list A as a parameter, calls the parent class constructor of the class stored in the acc, and stores the result in the acc. | 530| 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| Sets **this** to A, use parameter list B as a parameter, calls the function object stored in the acc, and stores the return value in the acc. | 531| 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| Uses **B, ..., B + A - 1** as a parameter to call the constructor function of the parent class of the class stored in the acc and stores the result in the acc.<br>If the value of A is **0**, B is **undefined**.<br>This instruction appears only in arrow functions. | 532| 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: property key<br>C: **getter** function object<br>D: **setter** function object| Uses **getter** method C and **setter** method D as parameters to define the accessor of the property whose key of object A is B and stores the result object in the acc.<br>If C is **undefined** and D is **undefined**, **getter** and **setter** are not set respectively. | 533| 0xbd | NONE | dynamicimport | Default input parameter: acc: value| Uses the value in the acc as a parameter, executes [ImportCalls](https://262.ecma-international.org/12.0/#sec-import-calls), and stores the result in the acc. | 534| 0xbe | IMM16_ID16_IMM8 | definemethod RRRR, @AAAA, +BB | Default input parameter: acc: class object or its prototype. When the static method is used, the parameter is a class object in the acc.<br>R: 16-bit reserved number used in Ark runtime<br>A: method id<br>B: number of formal parameters of method A| Creates the function object of method A, sets the object in the acc to the [HomeObject](https://262.ecma-international.org/12.0/#sec-ecmascript-function-objects) property of the function object, and stores this function object in the acc. | 535| 0xbf | NONE | resumegenerator | Default input parameter: acc: generator| Executes [GeneratorResume](https://262.ecma-international.org/12.0/#sec-generatorresume) based on the generator stored in the acc and stores the result in the acc. | 536| 0xc0 | NONE | getresumemode | Default input parameter: acc: generator| After the generator finishes executing, obtains the restored value and stores it in the acc. | 537| 0xc1 | IMM16 | gettemplateobject RRRR | Default input parameter: acc: object<br>R: 16-bit reserved number used in Ark runtime| Executes [GetTemplateObject](https://262.ecma-international.org/12.0/#sec-gettemplateobject) (acc) and stores the result in the acc. | 538| 0xc2 | V8 | delobjprop vAA | Default input parameter: acc: property key<br>A: Object| Deletes the property whose key is **acc** of object A. | 539| 0xc3 | V8 | suspendgenerator vAA | Default input parameter: acc: value<br>A: generator| Uses the value stored in the acc to suspend *generator* A and stores the result in the acc. | 540| 0xc4 | V8 | asyncfunctionawaituncaught vAA | Default input parameter: acc: value<br>A: function object| Uses the function object A and the value in the acc to execute [AwaitExpression](https://262.ecma-international.org/12.0/#prod-AwaitExpression) and stores the result in the acc. | 541| 0xc5 | V8 | copydataproperties vAA | Default input parameter: acc: object<br>A: target object| Copies all properties of the object stored in the acc to A and stores A in the acc. | 542| 0xc6 | V8_V8 | starrayspread vAA, vBB | Default input parameter: acc: value<br>A: array<br>B: array index| Stores the value in the 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 stores the length of the result array in the acc. | 543| 0xc7 | IMM16_V8 | setobjectwithproto RRRR, vAA | Default input parameter: acc: object<br>R: 16-bit reserved number used in Ark runtime<br>A: value| Sets the **\_\_proto\_\_** property of the object stored in the acc to A. | 544| 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: property key| Stores the value in the acc to the property whose key is B of object A. | 545| 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: property key| In the current function, stores the value in the acc to the property whose key of **super** is B. If the property is of an accessor, the object in A is used as the **this** parameter when the **setter** function of the property is called. | 546| 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: property key| In the current function, stores the value in the acc to the property whose key of **super** is B. If the property is of an accessor, the object in A is used as the **this** parameter when the **setter** function of the property is called. | 547| 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: property key| Stores the value in the acc to the property whose key is B of object A. | 548| 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| Stores the value in the acc to the property whose key of object B is the string corresponding to index A. | 549| 0xcd | V8 | asyncfunctionresolve vAA | Default input parameter: acc: value<br>A: asynchronous function object| Uses the value in the acc to parse the **Promise** object of object A and stores the result in the acc. | 550| 0xce | V8 | asyncfunctionreject vAA | Default input parameter: acc: value<br>A: asynchronous function object| Uses the value in the acc to reject the **Promise** object of object A and stores the result in the acc. | 551| 0xcf | IMM8 | copyrestargs +AA | A: position of the [rest parameter](https://262.ecma-international.org/12.0/#prod-FunctionRestParameter) in the formal parameter list| Copies the rest parameters and stores the parameter array copy in the acc. | 552| 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, stores the value in the acc to the property whose key of **super** is the string corresponding to index A.<br>If the property is of an accessor, the object in B is used as the **this** parameter when the **setter** function of the property is called. | 553| 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, stores the value in the acc to the property whose key of **super** is the string corresponding to index A.<br>If the property is of an accessor, the object in B is used as the **this** parameter when the **setter** function of the property is called. | 554| 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: property key| Stores the value in the acc to the property whose key of object A is B and set the function name to B. | 555| 0xd3 | ID16 | ldbigint @AAAA | A: string id| Creates a value of the **BigInt** type based on the string corresponding to index A and stores the value in the acc. | 556| 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| Stores the function object in the acc to the property whose key of object B is the string corresponding to index A and sets the function name to the string corresponding to index A. | 557| 0xd5 | NONE | nop | | No operation. | 558| 0xd6 | IMM8 | setgeneratorstate +AA | Default input parameter: acc: generator object<br>A: generator state| Sets the generator state stored in the 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). | 559| 0xd7 | IMM8 | getasynciterator RR | Default input parameter: acc: object<br>R: 8-bit reserved number used in Ark runtime| Executes the [GetIterator](https://262.ecma-international.org/12.0/#sec-getiterator) (acc, async) and stores the result in the acc. | 560| 0xd8 | IMM8_IMM16_IMM16 | ldprivateproperty RR, +AAAA, +BBBB | Default input parameter: acc: object<br>A: lexical environment level<br>B: slot number| Loads and sets the value of slot B in the lexical environment beyond A levels as the property key, and stores the value corresponding to the key of the object in the acc. | 561| 0xd9 | IMM8_IMM16_IMM16_V8 | stprivateproperty RR, +AAAA, +BBBB, vCC | A: lexical environment level<br>B: slot number<br>C: object| Loads the value of slot B in the lexical environment beyond A levels as the property key and stores the value in the acc to the key of the object C stored in the acc. | 562| 0xda | IMM8_IMM16_IMM16 | testin RR, +AAAA, +BBBB | Default input parameter: acc: object<br>A: lexical environment level<br>B: slot number| Loads the value of slot B in the lexical environment beyond A levels, calculates whether the value is **in acc**, and stores the result in the acc. | 563| 0xdb | IMM8_ID16_V8 | definefieldbyname RR, @AAAA, vBB | Default input parameter: acc: value<br>A: string id<br>B: object| Defines a property whose key is A for object B and store the value in the acc to the property. | 564| 0xdc | IMM8_ID16_V8 | definepropertybyname RR, @AAAA, vBB | Default input parameter: acc: value<br>A: string id<br>B: object| Defines a property whose key is A for object B and store the value in the acc to the property. | 565| 0xfb | PREF_NONE | callruntime.notifyconcurrentresult | Default input parameter: acc: return value of the concurrent function| Notifies the runtime of the return value of the concurrent function.<br>This instruction appears only in concurrent functions. | 566| 0xfc | (deprecated) | | | Deprecated operation code.| 567| 0xfd | PREF_IMM16_V8_V8 | wide.createobjectwithexcludedkeys +AAAA, vBB, vCC | A: number of range registers<br>B: object<br>C, ..., C + A: property key value.| Based on object B, creates an object excluding the key **C, ..., C + A** and stores it in the acc.<br>This instruction supports object creation by using destructor and extension syntax. | 568| 0xfe | PREF_NONE | throw | Default input parameter: acc: exception| Throws the exception stored in acc. | 569| 0x01fb | PREF_IMM8_V8_V8 | callruntime.definefieldbyvalue RR, vAA, vBB | Default input parameter: acc: value<br>A: property key<br>B: object| Defines a property whose key is A for object B and store the value in the acc to the property. | 570| 0x01fc | (deprecated) | | | Deprecated operation code.| 571| 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| Uses **B + 1, ..., B + A - 1** as a parameter to create an instance of class B and stores it in the acc. | 572| 0x01fe | PREF_NONE | throw.notexists | | Exception thrown: undefined method. | 573| 0x02fb | PREF_IMM8_IMM32_V8 | callruntime.definefieldbyindex RR, +AAAAAAAA, vBB | Default input parameter: acc: value<br>A: property key<br>B: object| Defines a property whose key is A for object B and store the value in the acc to the property. | 574| 0x02fc | (deprecated) | | | Deprecated operation code.| 575| 0x02fd | PREF_IMM16 | wide.newlexenv +AAAA | A: number of slots in the lexical environment| Creates a lexical environment with slot A, stores it in the acc, and enters the lexical environment. | 576| 0x02fe | PREF_NONE | throw.patternnoncoercible | | Throws an exception indicating that this object cannot be forcibly executed. | 577| 0x03fb | PREF_NONE | callruntime.topropertykey | Default input parameter: acc: value| Converts the value in the acc to the property value. If the conversion fails, an error is thrown. | 578| 0x03fc | (deprecated) | | | Deprecated operation code.| 579| 0x03fd | PREF_IMM16_ID16 | wide.newlexenvwithname +AAAA, @BBBB | A: number of slots in the lexical environment<br>B: literal id| Uses the lexical variable name stored in the literal array corresponding to index B to create a lexical environment with A slots, stores this lexical environment in the acc, and enters the lexical environment. | 580| 0x03fe | PREF_NONE | throw.deletesuperproperty | | Throws an exception indicating an attempt to delete the property of the parent class. | 581| 0x04fb | PREF_IMM_16_ID16 | callruntime.createprivateproperty +AAAA, @BBBB | A: number of symbols to be created<br>B: literal id| Creates A symbols. Obtain the stored private method from the literal array corresponding to index B. If a private instance method exists, an additional symbol ("method") will be created. Based on the creation sequence, place the created symbols at the end of the lexical environment where the current class is located.<br>This instruction appears only when a class is defined. | 582| 0x04fc | (deprecated) | | | Deprecated operation code.| 583| 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| Uses **B, ..., B + A - 1** as a parameter to call the function object stored in the acc and stores the result in the acc. | 584| 0x04fe | PREF_V8 | throw.constassignment vAA | A: constant variable name| Throws an exception indicating a value is assigned to a constant variable. | 585| 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| Loads the value of slot B in the lexical environment beyond A levels, changes the value to **acc**, and adds it to object C as a private property. | 586| 0x05fc | (deprecated) | | | Deprecated operation code.| 587| 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| Sets **this** to **B**, calls the function object stored in the acc by setting **B + 1, ..., B + A** as a parameter, and stores the result in the acc. | 588| 0x05fe | PREF_V8 | throw.ifnotobject vAA | A: Object| Throws an exception if A is not an object. | 589| 0x06fb | PREF_IMM8_V8 | callruntime.callinit +RR, vAA | acc: function object<br>R: 8-bit reserved number used in Ark runtime<br>A: Object| Sets **this** to **A**, calls the function object stored in the acc without passing parameters, and stores the result in the acc. | 590| 0x06fc | (deprecated) | | | Deprecated operation code.| 591| 0x06fd | PREF_IMM16_V8 | wide.supercallthisrange +AAAA, vBB | A: number of parameters<br>B, ..., B + A - 1: parameter| Uses **B, ..., B + A - 1** as a parameter to call the **super** function and stores the result in the acc.<br>When the value of **A** is **0**, the value of **B** is **undefined**.<br>This instruction appears only in non-arrow functions. | 592| 0x06fe | PREF_V8_V8 | throw.undefinedifhole vAA, vBB | A: Object<br>B: object name| Throws an exception indicating that the value of B is **undefined**, if the value of A is **hole**. | 593| 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 of [sendable class](arkts-sendable.md#sendable-class)<br>B: literal id<br>C: number of formal parameters of method A<br>D: parent class| Uses the literal array corresponding to index B and parent class D to create a class object of A and stores it in the acc. | 594| 0x07fc | (deprecated) | | | Deprecated operation code.| 595| 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| Uses **B, ..., B + A - 1** as a parameter to call the constructor function of the parent class of the class stored in the acc and stores the result in the acc.<br>If the value of A is **0**, B is **undefined**.<br>This instruction appears only in arrow functions. | 596| 0x07fe | PREF_IMM8 | throw.ifsupernotcorrectcall +AA | Default input parameter: acc: object<br>A: error type| Throws an exception if **super** is not called properly. | 597| 0x08fb | PREF_IMM16 | callruntime.ldsendableclass +AAAA | A: lexical environment level| Stores the [Sendable class](arkts-sendable.md#sendable-class) of the lexical environment beyond A levels in the acc. | 598| 0x08fc | (deprecated) | | | Deprecated operation code.| 599| 0x08fd | PREF_IMM32 | wide.ldobjbyindex +AAAAAAAA | Default input parameter: acc: object<br>A: property key| Loads the property whose key is A of the object stored in the acc and stores the property in the acc. | 600| 0x08fe | PREF_IMM16 | throw.ifsupernotcorrectcall +AAAA | Default input parameter: acc: object<br>A: error type| Throws an exception if **super** is not called properly. | 601| 0x09fb | PREF_IMM8 | callruntime.ldsendableexternalmodulevar +AA | A: slot number| Stores the external module variable of slot A in the acc. This instruction is used only in Sendable classes and [Sendable functions](arkts-sendable.md#sendable-function). | 602| 0x09fc | (deprecated) | | | Deprecated operation code.| 603| 0x09fd | PREF_V8_IMM32 | wide.stobjbyindex vAA, +BBBBBBBB | Default input parameter: acc: value<br>A: Object<br>B: property key| Stores the value in the acc to the property whose key is B of object A. | 604| 0x09fe | PREF_ID16 | throw.undefinedifholewithname @AAAA | Default input parameter: acc: object<br>A: string id| Throws an exception indicating that the value of A is **undefined**, if the value in the acc is **hole**. | 605| 0x0afb | PREF_IMM16 | callruntime.wideldsendableexternalmodulevar +AAAA | A: slot number| Stores the external module variable of slot A in the acc. This instruction is used only in Sendable classes and Sendable functions. | 606| 0x0afc | (deprecated) | | | Deprecated operation code.| 607| 0x0afd | PREF_V8_IMM32 | wide.stownbyindex vAA, +BBBBBBBB | Default input parameter: acc: value<br>A: Object<br>B: property key| Stores the value in the acc to the property whose key is B of object A. | 608| 0x0bfb | PREF_IMM8 | callruntime.newsendableenv +AA | A: number of slots in a shared lexical environment| Creates a shared lexical environment with slot A and enters the lexical environment. | 609| 0x0bfc | (deprecated) | | | Deprecated operation code.| 610| 0x0bfd | PREF_IMM16 | wide.copyrestargs +AAAA | A: start position of the rest parameters in the formal parameter list| Copies the rest parameters and stores the parameter array copy in the acc. | 611| 0x0cfb | PREF_IMM16 | callruntime.widenewsendableenv +AAAA | A: number of slots in a shared lexical environment| Creates a shared lexical environment with slot A and enters the lexical environment. | 612| 0x0cfc | (deprecated) | | | Deprecated operation code.| 613| 0x0cfd | PREF_IMM16_IMM16 | wide.ldlexvar +AAAA, +BBBB | A: lexical environment level<br>B: slot number| Stores the value of slot B in the lexical environment beyond A levels in the acc. | 614| 0x0dfb | PREF_IMM4_IMM4 | callruntime.stsendablevar +A +B | Default input parameter: acc: value<br>A: shared lexical environment level<br>B: slot number| Stores the value in the acc to slot B in the shared lexical environment beyond A levels. | 615| 0x0dfc | (deprecated) | | | Deprecated operation code.| 616| 0x0dfd | PREF_IMM16_IMM16 | wide.stlexvar +AAAA, +BBBB | Default input parameter: acc: value<br>A: lexical environment level<br>B: slot number| Stores the value in the acc to slot B in the lexical environment beyond A levels. | 617| 0x0efb | PREF_IMM8_IMM8 | callruntime.stsendablevar +AA +BB | Default input parameter: acc: value<br>A: shared lexical environment level<br>B: slot number | Stores the value in the acc to slot B in the shared lexical environment beyond A levels. | 618| 0x0efc | (deprecated) | | | Deprecated operation code.| 619| 0x0efd | PREF_IMM16 | wide.getmodulenamespace +AAAA | A: module index| Executes the [GetModuleNamespace](https://262.ecma-international.org/12.0/#sec-getmodulenamespace) instruction for module A and stores the result in the acc. | 620| 0x0ffb | PREF_IMM16_IMM16 | callruntime.widestsendablevar +AAAA +BBBB | Default input parameter: acc: value<br>A: shared lexical environment level<br>B: slot number| Stores the value in the acc to slot B in the shared lexical environment beyond A levels. | 621| 0x0ffc | (deprecated) | | | Deprecated operation code.| 622| 0x0ffd | PREF_IMM16 | wide.stmodulevar +AAAA | Default input parameter: acc: value<br>A: slot number| Stores the value in the acc to the module variable of slot A. | 623| 0x10fb | PREF_IMM4_IMM4 | callruntime.ldsendablevar +A +B | A: shared lexical environment level<br>B: slot number | Stores the value of slot B in the shared lexical environment beyond A levels in the acc. | 624| 0x10fc | (deprecated) | | | Deprecated operation code.| 625| 0x10fd | PREF_IMM16 | wide.ldlocalmodulevar +AAAA | A: slot number| Stores the local module variables of slot A in the acc.| 626| 0x11fb | PREF_IMM8_IMM8 | callruntime.ldsendablevar +AA + BB | A: shared lexical environment level<br>B: slot number | Stores the value of slot B in the shared lexical environment beyond A levels in the acc. | 627| 0x11fc | (deprecated) | | | Deprecated operation code.| 628| 0x11fd | PREF_IMM16 | wide.ldexternalmodulevar +AAAA | A: slot number| Stores the external module variable of slot A in the acc.| 629| 0x12fb | PREF_IMM16_IMM16 | callruntime.wideldsendablevar +AAAA +BBBB | A: shared lexical environment level<br>B: slot number| Stores the value of slot B in the shared lexical environment beyond A levels in the acc. | 630| 0x12fc | (deprecated) | | | Deprecated operation code.| 631| 0x12fd | PREF_IMM16 | wide.ldpatchvar +AAAA | A: slot number of the patch variable| Loads the patch variable of slot A to the acc.<br>This instruction is used only build scenarios under the patch mode.| 632| 0x13fb | PREF_IMM8 | callruntime.istrue +RR | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime| Calculates `acc == true` and stores the result in the acc. | 633| 0x13fc | (deprecated) | | | Deprecated operation code.| 634| 0x13fd | PREF_IMM16 | wide.stpatchvar +AAAA | Default input parameter: acc: value<br>A: slot number of the patch variable| Stores the value in the acc to the patch variable of slot A.<br>This instruction is used only build scenarios under the patch mode.| 635| 0x14fb | PREF_IMM8 | callruntime.isfalse +RR | Default input parameter: acc: operand<br>R: 8-bit reserved number used in Ark runtime| Calculates `acc == false` and stores the result in the acc. | 636| 0x15fb | PREF_IMM8 | callruntime.ldlazymodulevar +AA | A: slot number| Stores the external module variable of slot A in the acc. This instruction applies only to module variables imported using [lazy import](arkts-lazy-import.md). | 637| 0x16fb | PREF_IMM16 | callruntime.wideldlazymodulevar +AAAA | A: slot number| Stores the external module variable of slot A in the acc. This instruction applies only to module variables imported using lazy import. | 638| 0x17fb | PREF_IMM8 | callruntime.ldlazysendablemodulevar +AA | A: slot number| Stores the external module variable of slot A in the acc. This instruction applies only to module variables imported through lazy import and appears only in Sendable classes and Sendable functions. | 639| 0x18fb | PREF_IMM16 | callruntime.wideldlazysendablemodulevar +AAAA | A: slot number| Stores the external module variable of slot A in the acc. This instruction applies only to module variables imported through lazy import and appears only in Sendable classes and Sendable functions. | 640| 0x14fc<br>0x15fc<br>...<br>0x2efc | (deprecated) | | | Deprecated operation code.| 641