Lines Matching +full:single +full:- +full:dimensional
1 # Copyright (c) 2021-2022 Huawei Device Co., Ltd.
6 # http://www.apache.org/licenses/LICENSE-2.0
14 ---
17 - name: General design
21 - name: Registers
23 Registers are wide enough to hold a single reference when working with objects.
31 - name: Accumulator
40 register-to-register moves.
42 - name: Calling sequence
48 On return, callee frame is destroyed. If function return value is non-void, it is passed to caller via
52 - name: Supported primitive types
54 VM support operations on registers with i32 and i64 integral values. However, 8-bit and 16-bit integral values
56 value to match storage size with i32. Similarly, passing an 8-bit or 16-bit value to a function can be emulated by
57 passing a value, which is zero or sign-extended to i32.
58 VM support operations on registers with f32 and f64 values, which corresponds to IEEE-754 single and double precision
59 floating-point represenation.
68 ### Floating-point literals
70 Decimal floating-point literals can have the following parts:
72 - Sign ("`+`" or "`-`")
73 - Whole number part
74 - Decimal point
75 - Fractional part
76 - Exponent indicator ("`e`")
77 - Exponent sign
78 - Exponent
80 Decimal floating-point literals must have at least one digit and either decimal point or exponent part.
84 - Positive zero (+0.0, hexadecimal representation is `0x0000000000000000`)
85 - Negative zero (-0.0, hexadecimal representation is `0x8000000000000000`)
86 - Minimal positive value (4.9E-324, hexadecimal representation is `0x0000000000000001`)
87 - Maximal negative value (-4.9E-324, hexadecimal representation is `0x8000000000000001`)
88 - Maximal positive value (1.7976931348623157e308, hexadecimal representation is `0x7fefffffffffffff`)
89 - Minimal negative value (-1.7976931348623157e308, hexadecimal representation is `0xffefffffffffffff`)
90 - Positive infinity (hexadecimal representation is `0x7ff0000000000000`)
91 - Negative infinity (hexadecimal representation is `0xfff0000000000000`)
92 - Not a number - set of all NaN values (one of hexadecimal representations is `0x7ff8000000000000`)
94 - name: Language-dependent types
100 - name: Dynamically-typed languages support
105 to hold 'any' value. When VM executes code inside dynamically-typed language context, regular static instructions
120 - tag: type_id
122 - tag: method_id
124 - tag: string_id
126 - tag: literalarray_id
128 - tag: field_id
130 - tag: call
132 - tag: call_virt
134 - tag: return
136 - tag: suspend
138 - tag: jump
140 - tag: conditional
142 - tag: float
144 - tag: dynamic
146 - tag: maybe_dynamic
148 - tag: language_type
150 - tag: initialize_type
152 - tag: ic_slot
153 description: Use the immedate number after opcode of length 8-bit or 16-bit as ic slot.
154 - tag: jit_ic_slot
155 description: Use the immedate number after opcode of length 8-bit as jit ic slot.
156 - tag: one_slot
158 - tag: two_slot
160 - tag: eight_bit_ic
162 - tag: sixteen_bit_ic
164 - tag: eight_sixteen_bit_ic
168 - tag: x_none
170 - tag: x_null
172 - tag: x_bounds
174 - tag: x_negsize
176 - tag: x_store
178 - tag: x_abstract
180 - tag: x_arith
182 - tag: x_cast
184 - tag: x_classdef
186 - tag: x_oom
188 - tag: x_init
190 - tag: x_call
192 - tag: x_throw
194 - tag: x_link
197 - tag: none
199 - tag: v1_array
201 - tag: v1_object
203 - tag: v1_array_type
206 - tag: v1_i32
208 - tag: v1_type
210 - tag: v1_obj_or_null
212 - tag: v2_i32
214 - tag: v2_object
216 - tag: v2_type
218 - tag: acc_i32
220 - tag: acc_type
222 - tag: acc_return_type
225 - tag: v1_throw_type
227 - tag: acc_obj_or_null
229 - tag: type_id_array
231 - tag: type_id_object
233 - tag: type_id_any_object
235 - tag: method_id_static
236 description: Method_id must resolve to a static method or into initializer for a type other than one-dimensional array.
237 - tag: method_id_non_static
238 description: Method_id must resolve to a non-static method.
239 - tag: method_id_non_abstract
241 - tag: method_id_accessible
243 - tag: constant_string_id
244 description: Id must resolve into a constant-pool string.
245 - tag: constant_literalarray_id
247 - tag: compatible_arguments
249 - tag: method_init_obj
250 description: Method_id must resolve into initializer for a type other than one-dimensional array.
251 - tag: branch_target
253 - tag: field_id_non_static
254 description: Field_id must resolve to a non-static object field.
255 - tag: field_id_static
257 - tag: field_id_size
259 - tag: valid_in_dynamic_context
260 description: Instruction valid only for dynamically-typed language context.
263 - description: The last encoding number of various ISA. It should be maintained as long as ISA changes.
271 - name: throw
274 - name: wide
277 - name: deprecated
280 - name: callruntime
285 - title: constant object loaders
288 - none
290 - x_none
292 - acc_read
293 - acc_write
300 - sig: ldnan
304 - sig: ldinfinity
308 - sig: ldundefined
312 - sig: ldnull
316 - sig: ldsymbol
320 - sig: ldglobal
324 - sig: ldtrue
328 - sig: ldfalse
332 - sig: ldhole
336 - sig: deprecated.ldlexenv
341 - sig: ldnewtarget
345 - sig: ldthis
349 - sig: poplexenv
353 - sig: deprecated.poplexenv
358 - sig: getunmappedargs
362 - sig: asyncfunctionenter
366 - sig: ldfunction
370 - sig: debugger
375 - title: iterator instructions
378 - none
380 - x_none
382 - acc_read
383 - acc_write
390 - sig: getpropiterator
394 - sig: getiterator imm:u16
399 - sig: closeiterator imm:u16, v:in:top
404 - sig: deprecated.getiteratornext v1:in:top, v2:in:top
409 - sig: getasynciterator imm:u8
414 - sig: ldprivateproperty imm1:u8, imm2:u16, imm3:u16
419 - sig: stprivateproperty imm1:u8, imm2:u16, imm3:u16, v:in:top
424 - sig: testin imm1:u8, imm2:u16, imm3:u16
429 - sig: definefieldbyname imm:u8, string_id, v:in:top
434 - sig: definepropertybyname imm:u8, string_id, v:in:top
440 - title: object creaters
443 - none
445 - x_none
447 - acc_read
448 - acc_write
455 - sig: createemptyobject
459 - sig: createemptyarray imm:u16
464 - sig: creategeneratorobj v:in:top
468 - sig: createiterresultobj v1:in:top, v2:in:top
472 - sig: createobjectwithexcludedkeys imm:u8, v1:in:top, v2:in:top
476 - sig: wide.createobjectwithexcludedkeys imm:u16, v1:in:top, v2:in:top
481 - sig: createarraywithbuffer imm:u16, literalarray_id
486 - sig: deprecated.createarraywithbuffer imm:u16
491 - sig: createobjectwithbuffer imm:u16, literalarray_id
496 - sig: deprecated.createobjectwithbuffer imm:u16
501 - sig: createregexpwithliteral imm1:u16, string_id, imm2:u8
506 - sig: newobjapply imm:u16, v:in:top
511 - sig: newobjrange imm1:u16, imm2:u8, v:in:top
516 - sig: wide.newobjrange imm:u16, v:in:top
521 - sig: newlexenv imm:u8
525 - sig: wide.newlexenv imm:u16
530 - sig: newlexenvwithname imm:u8, literalarray_id
535 - sig: wide.newlexenvwithname imm:u16, literalarray_id
541 - sig: createasyncgeneratorobj v:in:top
545 - sig: asyncgeneratorresolve v1:in:top, v2:in:top, v3:in:top
550 - title: binary operations
553 - none
555 - x_none
557 - acc_read
558 - acc_write
565 - sig: add2 imm:u8, v:in:top
570 - sig: sub2 imm:u8, v:in:top
575 - sig: mul2 imm:u8, v:in:top
580 - sig: div2 imm:u8, v:in:top
585 - sig: mod2 imm:u8, v:in:top
590 - sig: eq imm:u8, v:in:top
595 - sig: noteq imm:u8, v:in:top
600 - sig: less imm:u8, v:in:top
605 - sig: lesseq imm:u8, v:in:top
610 - sig: greater imm:u8, v:in:top
615 - sig: greatereq imm:u8, v:in:top
620 - sig: shl2 imm:u8, v:in:top
625 - sig: shr2 imm:u8, v:in:top
630 - sig: ashr2 imm:u8, v:in:top
635 - sig: and2 imm:u8, v:in:top
640 - sig: or2 imm:u8, v:in:top
645 - sig: xor2 imm:u8, v:in:top
650 - sig: exp imm:u8, v:in:top
656 - title: unary operations
659 - none
661 - x_none
663 - acc_read
664 - acc_write
671 - sig: typeof imm:u16
676 - sig: tonumber imm:u8
681 - sig: deprecated.tonumber v:in:top
686 - sig: tonumeric imm:u8
691 - sig: deprecated.tonumeric v:in:top
696 - sig: neg imm:u8
701 - sig: deprecated.neg v:in:top
706 - sig: not imm:u8
711 - sig: deprecated.not v:in:top
716 - sig: inc imm:u8
721 - sig: deprecated.inc v:in:top
726 - sig: dec imm:u8
731 - sig: deprecated.dec v:in:top
736 - sig: istrue
740 - sig: isfalse
745 - title: comparation instructions
748 - none
750 - x_none
752 - acc_read
753 - acc_write
760 - sig: isin imm:u8, v:in:top
765 - sig: instanceof imm:u8, v:in:top
770 - sig: strictnoteq imm:u8, v:in:top
775 - sig: stricteq imm:u8, v:in:top
781 - title: call runtime functions
784 - none
786 - x_none
788 - acc_read
789 - acc_write
796 - sig: callruntime.notifyconcurrentresult
801 - sig: callruntime.definefieldbyvalue imm:u8, v1:in:top, v2:in:top
807 - sig: callruntime.definefieldbyindex imm1:u8, imm2:u32, v:in:top
813 - sig: callruntime.topropertykey
818 - sig: callruntime.createprivateproperty imm:u16, literalarray_id
824 - sig: callruntime.defineprivateproperty imm1:u8, imm2:u16, imm3:u16, v:in:top
830 - sig: callruntime.callinit imm:u8, v:in:top
836 - sig: callruntime.definesendableclass imm1:u16, method_id, literalarray_id, imm2:u16, v:in:top
842 - sig: callruntime.ldsendableclass imm:u16
847 - sig: callruntime.ldsendableexternalmodulevar imm:u8
852 - sig: callruntime.wideldsendableexternalmodulevar imm:u16
857 - sig: callruntime.newsendableenv imm:u8
862 - sig: callruntime.widenewsendableenv imm:u16
867 - sig: callruntime.stsendablevar imm1:u8, imm2:u8
872 - sig: callruntime.widestsendablevar imm1:u16, imm2:u16
877 - sig: callruntime.ldsendablevar imm1:u8, imm2:u8
882 - sig: callruntime.wideldsendablevar imm1:u16, imm2:u16
887 - sig: callruntime.istrue imm:u8
893 - sig: callruntime.isfalse imm:u8
899 - sig: callruntime.ldlazymodulevar imm:u8
904 - sig: callruntime.wideldlazymodulevar imm:u16
909 - sig: callruntime.ldlazysendablemodulevar imm:u8
914 - sig: callruntime.wideldlazysendablemodulevar imm:u16
920 - title: throw instructions
923 - none
925 - x_none
927 - acc_read
928 - acc_write
935 - sig: throw
941 - x_throw
942 - sig: throw.notexists
947 - sig: throw.patternnoncoercible
952 - sig: throw.deletesuperproperty
957 - sig: throw.constassignment v:in:top
962 - sig: throw.ifnotobject v:in:top
967 - sig: throw.undefinedifhole v1:in:top, v2:in:top
972 - sig: throw.ifsupernotcorrectcall imm:u16
977 - sig: throw.undefinedifholewithname string_id
984 - title: call instructions
987 - none
989 - x_none
991 - acc_read
992 - acc_write
999 - sig: callarg0 imm:u8
1004 - sig: deprecated.callarg0 v:in:top
1009 - sig: callarg1 imm:u8, v:in:top
1014 - sig: deprecated.callarg1 v1:in:top, v2:in:top
1019 - sig: callargs2 imm:u8, v1:in:top, v2:in:top
1024 - sig: deprecated.callargs2 v1:in:top, v2:in:top, v3:in:top
1029 - sig: callargs3 imm:u8, v1:in:top, v2:in:top, v3:in:top
1034 - sig: deprecated.callargs3 v1:in:top, v2:in:top, v3:in:top, v4:in:top
1039 - sig: callrange imm1:u8, imm2:u8, v:in:top
1044 - sig: wide.callrange imm:u16, v:in:top
1049 - sig: deprecated.callrange imm:u16, v:in:top
1054 - sig: supercallspread imm:u8, v:in:top
1059 - sig: apply imm:u8, v1:in:top, v2:in:top
1064 - sig: deprecated.callspread v1:in:top, v2:in:top, v3:in:top
1069 - sig: callthis0 imm:u8, v:in:top
1074 - sig: callthis1 imm:u8, v1:in:top, v2:in:top
1079 - sig: callthis2 imm:u8, v1:in:top, v2:in:top, v3:in:top
1084 - sig: callthis3 imm:u8, v1:in:top, v2:in:top, v3:in:top, v4:in:top
1089 - sig: callthisrange imm1:u8, imm2:u8, v:in:top
1094 - sig: wide.callthisrange imm:u16, v:in:top
1099 - sig: deprecated.callthisrange imm:u16, v:in:top
1104 - sig: supercallthisrange imm1:u8, imm2:u8, v:in:top
1109 - sig: wide.supercallthisrange imm:u16, v:in:top
1114 - sig: supercallarrowrange imm1:u8, imm2:u8, v:in:top
1119 - sig: wide.supercallarrowrange imm:u16, v:in:top
1125 - title: definition instuctions
1128 - none
1130 - x_none
1132 - acc_read
1133 - acc_write
1140 - sig: definegettersetterbyvalue v1:in:top, v2:in:top, v3:in:top, v4:in:top
1144 - sig: definefunc imm1:u16, method_id, imm2:u8
1149 - sig: definemethod imm1:u16, method_id, imm2:u8
1154 - sig: defineclasswithbuffer imm1:u16, method_id, literalarray_id, imm2:u16, v:in:top
1159 - sig: deprecated.defineclasswithbuffer method_id, imm1:u16, imm2:u16, v1:in:top, v2:in:top
1166 - title: object visitors
1169 - none
1171 - x_none
1173 - acc_read
1174 - acc_write
1181 - sig: resumegenerator
1185 - sig: deprecated.resumegenerator v:in:top
1190 - sig: getresumemode
1194 - sig: deprecated.getresumemode v:in:top
1199 - sig: gettemplateobject imm:u16
1204 - sig: deprecated.gettemplateobject v:in:top
1209 - sig: getnextpropname v:in:top
1213 - sig: delobjprop v:in:top
1217 - sig: deprecated.delobjprop v1:in:top, v2:in:top
1222 - sig: suspendgenerator v:in:top
1226 - sig: deprecated.suspendgenerator v1:in:top, v2:in:top
1231 - sig: asyncfunctionawaituncaught v:in:top
1235 - sig: deprecated.asyncfunctionawaituncaught v1:in:top, v2:in:top
1240 - sig: copydataproperties v:in:top
1244 - sig: deprecated.copydataproperties v1:in:top, v2:in:top
1249 - sig: starrayspread v1:in:top, v2:in:top
1253 - sig: setobjectwithproto imm:u16, v:in:top
1258 - sig: deprecated.setobjectwithproto v1:in:top, v2:in:top
1263 - sig: ldobjbyvalue imm:u16, v:in:top
1268 - sig: deprecated.ldobjbyvalue v1:in:top, v2:in:top
1273 - sig: stobjbyvalue imm:u16, v1:in:top, v2:in:top
1278 - sig: stownbyvalue imm:u16, v1:in:top, v2:in:top
1283 - sig: ldsuperbyvalue imm:u16, v:in:top
1288 - sig: deprecated.ldsuperbyvalue v1:in:top, v2:in:top
1293 - sig: stsuperbyvalue imm:u16, v1:in:top, v2:in:top
1298 - sig: ldobjbyindex imm1:u16, imm2:u16
1303 - sig: wide.ldobjbyindex imm:u32
1308 - sig: deprecated.ldobjbyindex v:in:top, imm:u32
1313 - sig: stobjbyindex imm1:u16, v:in:top, imm2:u16
1318 - sig: wide.stobjbyindex v:in:top, imm:u32
1323 - sig: stownbyindex imm1:u16, v:in:top, imm2:u16
1328 - sig: wide.stownbyindex v:in:top, imm:u32
1333 - sig: asyncfunctionresolve v:in:top
1337 - sig: deprecated.asyncfunctionresolve v1:in:top, v2:in:top, v3:in:top
1342 - sig: asyncfunctionreject v:in:top
1346 - sig: deprecated.asyncfunctionreject v1:in:top, v2:in:top, v3:in:top
1351 - sig: copyrestargs imm:u8
1355 - sig: wide.copyrestargs imm:u16
1360 - sig: ldlexvar imm1:u8, imm2:u8
1364 - sig: wide.ldlexvar imm1:u16, imm2:u16
1369 - sig: stlexvar imm1:u8, imm2:u8
1373 - sig: wide.stlexvar imm1:u16, imm2:u16
1378 - sig: deprecated.stlexvar imm1:u16, imm2:u16, v:in:top
1383 - sig: getmodulenamespace imm:u8
1387 - sig: wide.getmodulenamespace imm:u16
1392 - sig: deprecated.getmodulenamespace string_id
1398 - sig: stmodulevar imm:u8
1402 - sig: wide.stmodulevar imm:u16
1407 - sig: deprecated.stmodulevar string_id
1413 - sig: tryldglobalbyname imm:u16, string_id
1418 - sig: trystglobalbyname imm:u16, string_id
1423 - sig: ldglobalvar imm:u16, string_id
1428 - sig: stglobalvar imm:u16, string_id
1433 - sig: ldobjbyname imm:u16, string_id
1438 - sig: deprecated.ldobjbyname string_id, v:in:top
1444 - sig: stobjbyname imm:u16, string_id, v:in:top
1449 - sig: stownbyname imm:u16, string_id, v:in:top
1454 - sig: ldsuperbyname imm:u16, string_id
1459 - sig: deprecated.ldsuperbyname string_id, v:in:top
1465 - sig: stsuperbyname imm:u16, string_id, v:in:top
1470 - sig: ldlocalmodulevar imm:u8
1474 - sig: wide.ldlocalmodulevar imm:u16
1479 - sig: ldexternalmodulevar imm:u8
1483 - sig: wide.ldexternalmodulevar imm:u16
1488 - sig: deprecated.ldmodulevar string_id, imm:u8
1494 - sig: stconsttoglobalrecord imm:u16, string_id
1499 - sig: deprecated.stconsttoglobalrecord string_id
1505 - sig: sttoglobalrecord imm:u16, string_id
1510 - sig: deprecated.stlettoglobalrecord string_id
1516 - sig: deprecated.stclasstoglobalrecord string_id
1522 - sig: deprecated.ldhomeobject
1527 - sig: deprecated.createobjecthavingmethod imm:u16
1532 - sig: stownbyvaluewithnameset imm:u16, v1:in:top, v2:in:top
1537 - sig: stownbynamewithnameset imm:u16, string_id, v:in:top
1542 - sig: ldbigint string_id
1547 - sig: ldthisbyname imm:u16, string_id
1552 - sig: stthisbyname imm:u16, string_id
1557 - sig: ldthisbyvalue imm:u16
1562 - sig: stthisbyvalue imm:u16, v:in:top
1567 - sig: wide.ldpatchvar imm:u16
1572 - sig: wide.stpatchvar imm:u16
1577 - sig: dynamicimport
1581 - sig: deprecated.dynamicimport v:in:top
1586 - sig: asyncgeneratorreject v:in:top
1590 - sig: deprecated.asyncgeneratorreject v1:in:top, v2:in:top
1595 - sig: setgeneratorstate imm:u8
1600 - title: Load accumulator from string constant pool
1602 Load string specified by id into accumulator. In dynamically-typed language context
1605 - string_id
1606 - language_type
1607 - maybe_dynamic
1609 - x_oom
1611 - constant_string_id
1615 - sig: lda.str string_id
1620 - title: jump operations
1625 - jump
1627 - x_none
1629 - branch_target
1633 - sig: jmp imm:i32
1637 - sig: jeqz imm:i32
1642 - sig: jnez imm:i32
1647 - sig: jstricteqz imm:i16
1652 - sig: jnstricteqz imm:i16
1657 - sig: jeqnull imm:i16
1662 - sig: jnenull imm:i16
1667 - sig: jstricteqnull imm:i16
1672 - sig: jnstricteqnull imm:i16
1677 - sig: jequndefined imm:i16
1682 - sig: jneundefined imm:i16
1687 - sig: jstrictequndefined imm:i16
1692 - sig: jnstrictequndefined imm:i16
1697 - sig: jeq v:in:top, imm:i16
1702 - sig: jne v:in:top, imm:i16
1707 - sig: jstricteq v:in:top, imm:i16
1712 - sig: jnstricteq v:in:top, imm:i16
1718 - title: Dynamic move register-to-register
1722 - valid_in_dynamic_context
1724 - x_none
1726 - dynamic
1730 - sig: mov v1:out:any, v2:in:any
1735 - title: Dynamic load accumulator from register
1739 - valid_in_dynamic_context
1741 - x_none
1743 - dynamic
1747 - sig: lda v:in:any
1752 - title: Dynamic store accumulator
1756 - valid_in_dynamic_context
1758 - x_none
1760 - dynamic
1764 - sig: sta v:out:any
1769 - title: Dynamic load accumulator from immediate
1773 - valid_in_dynamic_context
1775 - x_none
1777 - dynamic
1781 - sig: ldai imm:i32
1785 - sig: fldai imm:f64
1791 - title: dynamic return
1794 - valid_in_dynamic_context
1796 - x_none
1798 - dynamic
1799 - return
1804 - sig: return
1809 - sig: returnundefined
1815 - title: no operation
1818 - x_none
1820 - none
1824 - sig: nop