• Home
  • Raw
  • Download

Lines Matching +full:non +full:- +full:array

6 # http://www.apache.org/licenses/LICENSE-2.0
14 ---
17 - name: General design
21 - name: Registers
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…
52 - name: Supported primitive types
54 …VM support operations on registers with i32 and i64 integral values. However, 8-bit and 16-bit int…
56 …value to match storage size with i32. Similarly, passing an 8-bit or 16-bit value to a function ca…
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 a…
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 …
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 `0x7feffffffffffff…
89- Minimal negative value (-1.7976931348623157e308, hexadecimal representation is `0xffefffffffffff…
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 stat…
113 - tag: acc_none
115 - tag: acc_read
117 - tag: acc_write
119 - tag: type_id
121 - tag: method_id
123 - tag: string_id
125 - tag: literalarray_id
127 - tag: field_id
129 - tag: call
131 - tag: call_virt
133 - tag: return
135 - tag: jump
137 - tag: conditional
139 - tag: float
141 - tag: dynamic
143 - tag: maybe_dynamic
145 - tag: language_type
148 - tag: x_none
150 - tag: x_null
152 - tag: x_bounds
153 … description: Bytecode throws ArrayIndexOutOfBoundsException if index is out of bounds of an array.
154 - tag: x_negsize
156 - tag: x_store
157 …description: Bytecode throws ArrayStoreException if element isn't instance of array's element type.
158 - tag: x_abstract
160 - tag: x_arith
162 - tag: x_cast
164 - tag: x_classdef
166 - tag: x_oom
168 - tag: x_init
171 - tag: none
173 - tag: v1_array
174 description: First operand contains a reference to an array.
175 - tag: v1_object
176 description: First operand contains a reference to an object (other than array).
177 - tag: v1_array_type
178 …description: First operand contains a reference to an array of elements of type corresponding to b…
179 - tag: v1_i32
181 - tag: v1_type
183 - tag: v1_obj_or_null
185 - tag: v2_i32
187 - tag: v2_object
188 description: Second operand contains a reference to an object (other than array).
189 - tag: v2_type
191 - tag: acc_i32
193 - tag: acc_type
195 - tag: acc_return_type
197 - tag: v1_throw_type
199 - tag: acc_obj_or_null
201 - tag: type_id_array
202 description: Type_id operand must correspond to an array type.
203 - tag: type_id_object
204 description: Type_id operand must correspond to an object type (other than array).
205 - tag: type_id_any_object
207 - tag: method_id_static
209 - tag: method_id_non_static
210 description: Method_id must resolve to a non-static method.
211 - tag: method_id_non_abstract
213 - tag: method_id_accessible
215 - tag: constant_string_id
216 description: Id must resolve into a constant-pool string.
217 - tag: constant_literalarray_id
219 - tag: compatible_arguments
221 - tag: method_init_obj
222 description: Method_id must resolve into initializer for a type other than array.
223 - tag: branch_target
225 - tag: field_id_non_static
226 description: Field_id must resolve to a non-static object field.
227 - tag: field_id_static
229 - tag: field_id_size
231 - tag: valid_in_dynamic_context
232 description: Instruction is valid only for dynamically-typed language context.
235 - name: bit
238 - name: unsigned
241 - name: cast
244 - name: f32
245 description: IEEE-754 single precision floating-point operations.
249 - title: No operation
252 - acc_none
254 - x_none
256 - none
259 semantics: |-
262 - sig: nop
267 - title: Move register-to-register
270 - acc_none
272 - x_none
274 - v2_type
277 semantics: |-
280 …Value) if true that Op == "mov.obj" and (type_of(@Vs) is not object and type_of(@Vs) is not array);
284 - sig: mov v1:out:b32, v2:in:b32
288 - sig: mov.64 v1:out:b64, v2:in:b64
292 - sig: mov.obj v1:out:ref, v2:in:ref
297 - title: Move immediate-to-register
301 - acc_none
303 - x_none
305 - none
308 semantics: |-
330 - sig: movi v:out:i32, imm:i32
334 - sig: movi v:out:i32, imm:i32
338 - sig: movi.64 v:out:i64, imm:i64
342 - sig: fmovi v:out:f32, imm:f32
348 - sig: fmovi.64 v:out:f64, imm:f64
354 - title: Move null reference into register
357 - acc_none
359 - x_none
361 - none
364 semantics: |-
367 - sig: mov.null v:out:ref
372 - title: Load accumulator from register
375 - acc_write
377 - x_none
379 - v1_type
382 semantics: |-
393 … raise exception(WrongRegisterValue) if false that type_of(@Vs) is object or type_of(@Vs) is array;
400 - sig: lda v:in:i32
404 - sig: lda.64 v:in:b64
408 - sig: lda.obj v:in:ref
413 - title: Load accumulator from immediate
417 - acc_write
419 - x_none
421 - none
424 semantics: |-
446 - sig: ldai imm:i32
450 - sig: ldai imm:i32
454 - sig: ldai.64 imm:i64
458 - sig: fldai imm:f32
464 - sig: fldai.64 imm:f64
470 - title: Load accumulator from string constant pool
472 Load string specified by id into accumulator. In dynamically-typed language context
475 - acc_write
476 - string_id
477 - language_type
478 - maybe_dynamic
480 - x_none
482 - constant_string_id
485 semantics: |-
488 - sig: lda.str string_id
493 - title: Create and initialize new constant array
495 … Create a new single-dimensional constant literal array and put a reference to it into register.
497 - acc_none
498 - literalarray_id
500 - x_none
502 - constant_literalarray_id
505 semantics: |-
508 - sig: lda.const v:out:ref, literalarray_id
513 - title: Load accumulator from type constant pool
516 - acc_write
517 - type_id
518 - language_type
520 - x_none
522 - type_id_any_object
525 semantics: |-
528 - sig: lda.type type_id
533 - title: Load null reference into accumulator
536 - acc_write
538 - x_none
540 - none
543 semantics: |-
546 - sig: lda.null
551 - title: Store accumulator
554 - acc_read
556 - x_none
558 - acc_type
561 semantics: |-
564 …lue) if true that Op == "sta.obj" and (type_of(@acc) is not object and type_of(@acc) is not array);
569 - sig: sta v:out:i32
573 - sig: sta.64 v:out:b64
577 - sig: sta.obj v:out:ref
582 - title: Integer comparison
585 - acc_read
586 - acc_write
588 - x_none
590 - acc_type
591 - v1_type
594 acc = -1
600 semantics: |-
607 when @acc < @Vs do acc <~ value(i32, -1) end when;
613 - sig: cmp.64 v:in:i64
614 acc: inout:i64->i32
617 - sig: ucmp v:in:u32
618 acc: inout:u32->i32
622 - sig: ucmp.64 v:in:u64
623 acc: inout:u64->i32
628 - title: Floating-point comparison
631 - acc_read
632 - acc_write
633 - float
635 - x_none
637 - acc_type
638 - v1_type
647 acc = -1
650 acc = -1
657 semantics: |-
662 when Op in [[ "fcmpl", "fcmpl.64" ]] do acc <~ value(i32, -1) end when
668 when @acc < @Vs do acc <~ value(i32, -1) end when;
676 - sig: fcmpl v:in:f32
677 acc: inout:f32->i32
681 - sig: fcmpl.64 v:in:f64
682 acc: inout:f64->i32
685 - sig: fcmpg v:in:f32
686 acc: inout:f32->i32
690 - sig: fcmpg.64 v:in:f64
691 acc: inout:f64->i32
695 - title: Unconditional jump
700 - acc_none
701 - jump
703 - x_none
705 - branch_target
708 semantics: |-
711 - sig: jmp imm:i32
716 - title: Conditional object comparison jump
722 - acc_read
723 - jump
724 - conditional
726 - x_none
728 - branch_target
729 - acc_obj_or_null
730 - v1_obj_or_null
744 - sig: jeq.obj v:in:ref, imm:i32
748 - sig: jne.obj v:in:ref, imm:i32
753 - title: Conditional compared to null jump
759 - acc_read
760 - jump
761 - conditional
763 - x_none
765 - branch_target
766 - acc_obj_or_null
780 - sig: jeqz.obj imm:i32
784 - sig: jnez.obj imm:i32
789 - title: Conditional compared to zero jump
792 …signed 32-bit integer in accumulator compares with 0 as specified. Offset is sign extended to the …
795 - acc_read
796 - jump
797 - conditional
799 - x_none
801 - branch_target
802 - acc_type
829 semantics: |-
843 - sig: jeqz imm:i32
847 - sig: jnez imm:i32
851 - sig: jltz imm:i32
855 - sig: jgtz imm:i32
859 - sig: jlez imm:i32
863 - sig: jgez imm:i32
868 - title: Conditional compared to register jump
871 …32-bit integers in accumulator and register compare as specified. Offset is sign extended to the s…
874 - acc_read
875 - jump
876 - conditional
878 - x_none
880 - branch_target
881 - acc_type
882 - v1_type
910 semantics: |-
926 - sig: jeq v:in:i32, imm:i32
930 - sig: jne v:in:i32, imm:i32
934 - sig: jlt v:in:i32, imm:i32
938 - sig: jgt v:in:i32, imm:i32
942 - sig: jle v:in:i32, imm:i32
946 - sig: jge v:in:i32, imm:i32
951 - title: Floating-point unary
952 description: Perform specified floating-point operation on accumulator
954 - acc_read
955 - acc_write
956 - float
958 - x_none
960 - acc_type
965 acc = -acc
966 semantics: |-
970 - sig: fneg
975 - sig: fneg.64
980 - title: Unary
983 - acc_read
984 - acc_write
986 - x_none
988 - acc_type
993 acc = -acc
997 semantics: |-
1010 acc <~ neg(Acc) - value(i32, 1)
1014 acc <~ neg(Acc) - value(i64, 1)
1020 - sig: neg
1024 - sig: neg.64
1028 - sig: not
1033 - sig: not.64
1039 - title: Two address binary operation on accumulator
1042 - acc_read
1043 - acc_write
1045 - x_none
1047 - acc_type
1048 - v1_type
1056 acc = (acc - vs) % 2^32
1058 acc = (acc - vs) % 2^64
1087 semantics: |-
1102 acc <~ truncate_int(Acc - Vs)
1106 acc <~ truncate_int(Acc - Vs)
1171 - sig: add2 v:in:i32
1175 - sig: add2.64 v:in:i64
1179 - sig: sub2 v:in:i32
1183 - sig: sub2.64 v:in:i64
1187 - sig: mul2 v:in:i32
1191 - sig: mul2.64 v:in:i64
1195 - sig: and2 v:in:i32
1200 - sig: and2.64 v:in:i64
1205 - sig: or2 v:in:i32
1210 - sig: or2.64 v:in:i64
1215 - sig: xor2 v:in:i32
1220 - sig: xor2.64 v:in:i64
1225 - sig: shl2 v:in:i32
1230 - sig: shl2.64 v:in:i64
1235 - sig: shr2 v:in:i32
1240 - sig: shr2.64 v:in:i64
1245 - sig: ashr2 v:in:i32
1250 - sig: ashr2.64 v:in:i64
1256 - title: Two address floating-point binary operation on accumulator
1258 …Perform specified floating-point binary operation on accumulator and register and store result int…
1259 The results of instructions correspond IEEE-754 arithmetic rules.
1261 - Any operation with NaN results to NaN value.
1262 - The sum of opposite infinities or the difference of the same sign infinities is NaN.
1263 - Division is NaN if Infinity is divided by Infinity.
1264 - Division is NaN if zero is divided by zero.
1265 - Multiplication is NaN if zero is multiplied by infinity.
1266- The sign of division or multiplication result is positive if both values have the same sign, neg…
1267 - Division is infinity if any non zero value is divided by zero.
1268 - Multiplication is infinity if any non zero value is multiplied by infinity.
1269- The sum of two infinities of the same sign or the difference of two infinities of opposite sign …
1270- The sum or the difference of infinity and any finite value is infinity. The sign of result match…
1271- The sum or the difference of zeros is zero. Exceptions are the sum of two negative zeros and the…
1274 - acc_read
1275 - acc_write
1276 - float
1278 - x_none
1280 - acc_type
1281 - v1_type
1289 acc = acc - vs
1299 semantics: |-
1306 when Op == "fsub2" or Op == "fsub2.64" do acc <~ Acc - Vs end when;
1314 - sig: fadd2 v:in:f32
1319 - sig: fadd2.64 v:in:f64
1323 - sig: fsub2 v:in:f32
1328 - sig: fsub2.64 v:in:f64
1332 - sig: fmul2 v:in:f32
1337 - sig: fmul2.64 v:in:f64
1341 - sig: fdiv2 v:in:f32
1346 - sig: fdiv2.64 v:in:f64
1350 - sig: fmod2 v:in:f32
1355 - sig: fmod2.64 v:in:f64
1360 - title: Two address integer division and modulo on accumulator
1363 - acc_read
1364 - acc_write
1366 - x_arith
1368 - acc_type
1369 - v1_type
1376 if acc == INT32_MIN and vs == -1 then
1382 if acc == INT64_MIN and vs == -1 then
1391 if acc == INT32_MIN and vs == -1 then
1397 if acc == INT64_MIN and vs == -1 then
1405 semantics: |-
1445 - sig: div2 v:in:i32
1449 - sig: div2.64 v:in:i64
1453 - sig: mod2 v:in:i32
1457 - sig: mod2.64 v:in:i64
1461 - sig: divu2 v:in:u32
1466 - sig: divu2.64 v:in:u64
1471 - sig: modu2 v:in:u32
1476 - sig: modu2.64 v:in:u64
1482 - title: Two address binary operation with immediate on accumulator
1487 - acc_write
1488 - acc_read
1490 - x_none
1492 - acc_type
1498 acc = (acc - imm) % 2^32
1513 semantics: |-
1523 acc <~ truncate_int(Acc - Imm)
1550 - sig: addi imm:i32
1554 - sig: subi imm:i32
1558 - sig: muli imm:i32
1562 - sig: andi imm:i32
1566 - sig: ori imm:i32
1570 - sig: xori imm:i32
1575 - sig: shli imm:i32
1579 - sig: shri imm:i32
1583 - sig: ashri imm:i32
1588 - title: Two address integer division or modulo with immediate on accumulator
1593 - acc_write
1594 - acc_read
1596 - x_arith
1598 - acc_type
1605 if acc == INT32_MIN and imm == -1 then
1611 if acc == INT32_MIN and imm == -1 then
1616 semantics: |-
1632 - sig: divi imm:i32
1636 - sig: modi imm:i32
1641 - title: Three address binary operation
1644 - acc_write
1646 - x_none
1648 - v1_type
1649 - v2_type
1655 acc = (vs1 - vs2) % 2^32
1670 semantics: |-
1679 acc <~ truncate_int(Vs1 - Vs2)
1705 - sig: add v1:in:i32, v2:in:i32
1709 - sig: sub v1:in:i32, v2:in:i32
1713 - sig: mul v1:in:i32, v2:in:i32
1717 - sig: and v1:in:i32, v2:in:i32
1722 - sig: or v1:in:i32, v2:in:i32
1727 - sig: xor v1:in:i32, v2:in:i32
1732 - sig: shl v1:in:i32, v2:in:i32
1737 - sig: shr v1:in:i32, v2:in:i32
1742 - sig: ashr v1:in:i32, v2:in:i32
1748 - title: Three address integer division or modulo
1751 - acc_write
1753 - x_arith
1755 - v1_type
1756 - v2_type
1763 if vs1 == INT32_MIN and vs2 == -1 then
1769 if vs1 == INT32_MIN and vs2 == -1 then
1774 semantics: |-
1789 - sig: div v1:in:i32, v2:in:i32
1793 - sig: mod v1:in:i32, v2:in:i32
1798 - title: Increment register with immediate
1802 - acc_none
1804 - x_none
1806 - v1_i32
1809 semantics: |-
1816 - sig: inci v:inout:i32, imm:i32
1821 - title: Conversions between integer and floating point types
1824 Conversion from floating-point types to integer one obeys the following rules.
1826 - It is rounding toward zero.
1827- If converted integer is less than minimal value for destination type, the result is minimal valu…
1828 - If source is negative infinity, the result is minimal value for destination type.
1829- If converted integer is greater than maximum value for destination type, the result is maximum v…
1830 - If source is positive infinity, the result is maximum value for destination type.
1831 - If source is NaN, the result is equal to 0.
1834 - acc_read
1835 - acc_write
1836 - float
1838 - x_none
1840 - acc_type
1843 semantics: |-
1917 - sig: i32tof32
1918 acc: inout:i32->f32
1922 - sig: i32tof64
1923 acc: inout:i32->f64
1927 - sig: u32tof32
1928 acc: inout:u32->f32
1932 - sig: u32tof64
1933 acc: inout:u32->f64
1937 - sig: i64tof32
1938 acc: inout:i64->f32
1942 - sig: i64tof64
1943 acc: inout:i64->f64
1947 - sig: u64tof32
1948 acc: inout:u64->f32
1952 - sig: u64tof64
1953 acc: inout:u64->f64
1957 - sig: f32tof64
1958 acc: inout:f32->f64
1962 - sig: f32toi32
1963 acc: inout:f32->i32
1967 - sig: f32toi64
1968 acc: inout:f32->i64
1972 - sig: f32tou32
1973 acc: inout:f32->u32
1977 - sig: f32tou64
1978 acc: inout:f32->u64
1982 - sig: f64toi32
1983 acc: inout:f64->i32
1987 - sig: f64toi64
1988 acc: inout:f64->i64
1992 - sig: f64tou32
1993 acc: inout:f64->u32
1997 - sig: f64tou64
1998 acc: inout:f64->u64
2002 - sig: f64tof32
2003 acc: inout:f64->f32
2008 - title: Conversions from integer types to u1
2012 - If converted integer is not equal to zero, the result is 1.
2013 - Otherwise the result is 0.
2016 - acc_read
2017 - acc_write
2019 - x_none
2021 - acc_type
2024 semantics: |-
2046 - sig: i32tou1
2047 acc: inout:i32->u1
2051 - sig: i64tou1
2052 acc: inout:i64->u1
2056 - sig: u32tou1
2057 acc: inout:u32->u1
2061 - sig: u64tou1
2062 acc: inout:u64->u1
2067 - title: Integer truncations and extensions.
2070 Truncations discard all but N lowest-order bits, where N is the bit size of destination type.
2071 …If extension bytecode treats its source as signed integer, the value is sign-extended to destinati…
2072 …If extension bytecode treats its source as unsigned integer, the value is zero-extended to destina…
2074 - acc_read
2075 - acc_write
2077 - x_none
2079 - acc_type
2082 semantics: |-
2148 - sig: i32toi64
2149 acc: inout:i32->i64
2153 - sig: i32toi16
2154 acc: inout:i32->i16
2158 - sig: i32tou16
2159 acc: inout:i32->u16
2163 - sig: i32toi8
2164 acc: inout:i32->i8
2168 - sig: i32tou8
2169 acc: inout:i32->u8
2173 - sig: i64toi32
2174 acc: inout:i64->i32
2178 - sig: u32toi64
2179 acc: inout:u32->i64
2183 - sig: u32toi16
2184 acc: inout:u32->i16
2188 - sig: u32tou16
2189 acc: inout:u32->u16
2193 - sig: u32toi8
2194 acc: inout:u32->i8
2198 - sig: u32tou8
2199 acc: inout:u32->u8
2203 - sig: u64toi32
2204 acc: inout:u64->i32
2208 - sig: u64tou32
2209 acc: inout:u64->u32
2214 - title: Load from array
2216 Load an element from array using accumulator as an index and puts it into accumulator.
2220 - v1_array_type
2221 - acc_i32
2223 - acc_read
2224 - acc_write
2226 - x_null
2227 - x_bounds
2246 semantics: |-
2249 - sig: ldarr.8 v:in:i8[]
2253 - sig: ldarru.8 v:in:u8[]
2257 - sig: ldarr.16 v:in:i16[]
2261 - sig: ldarru.16 v:in:u16[]
2265 - sig: ldarr v:in:i32[]
2269 - sig: ldarr.64 v:in:i64[]
2270 acc: inout:i32->i64
2273 - sig: fldarr.32 v:in:f32[]
2274 acc: inout:i32->f32
2278 - sig: fldarr.64 v:in:f64[]
2279 acc: inout:i32->f64
2283 - sig: ldarr.obj v:in:ref[]
2284 acc: inout:i32->ref
2288 - title: Store to array
2290 Store accumulator content into array slot pointed by index.
2294 - v1_array_type
2295 - v2_i32
2296 - acc_type
2298 - acc_read
2300 - x_null
2301 - x_bounds
2302 - x_store
2320 semantics: |-
2321 (@Vs1) <~ (@Vs1) [ (@Vs2) ] <- (@acc)
2323 - sig: starr.8 v1:in:i8[], v2:in:i32
2327 - sig: starr.16 v1:in:i16[], v2:in:i32
2331 - sig: starr v1:in:i32[], v2:in:i32
2335 - sig: starr.64 v1:in:i64[], v2:in:i32
2339 - sig: fstarr.32 v1:in:f32[], v2:in:i32
2344 - sig: fstarr.64 v1:in:f64[], v2:in:i32
2349 - sig: starr.obj v1:in:ref[], v2:in:i32
2354 - title: Array length
2355 description: Get length of an array and put it into accumulator.
2357 - acc_write
2359 - v1_array
2361 - x_null
2367 semantics: |-
2370 - sig: lenarr v:in:top[]
2375 - title: Create new array
2377 …Create a new single-dimensional array of given type and size and put a reference to it into regist…
2378 …Elements of array are initialized to a default value, i.e. 0 for primitive types and null for obje…
2380 - type_id_array
2381 - v2_i32
2383 - x_negsize
2384 - x_oom
2386 - acc_none
2387 - type_id
2388 - language_type
2398 semantics: |-
2401 - sig: newarr v1:out:ref, v2:in:i32, type_id
2406 - title: Create new object
2413 - type_id_object
2415 - x_oom
2417 - acc_none
2418 - type_id
2425 semantics: |-
2428 - sig: newobj v:out:ref, type_id
2433 - title: Create new object and call initializer
2438 Non-range instructions can be used to pass up to 4 arguments.
2443 - method_id_non_static
2444 - method_id_accessible
2445 - method_init_obj
2446 - compatible_arguments
2448 - x_abstract
2449 - x_oom
2451 - acc_write
2452 - method_id
2460 semantics: |-
2463 - sig: initobj.short method_id, v1:in:none, v2:in:none
2467 - sig: initobj method_id, v1:in:none, v2:in:none, v3:in:none, v4:in:none
2471 - sig: initobj.range method_id, v:in:none
2476 - title: Get field from object to accumulator
2479 For non-object variant, the size of the field is determined by the field_id,
2483 - v1_object
2484 - field_id_non_static
2485 - field_id_size
2487 - acc_write
2488 - field_id
2490 - x_null
2501 semantics: |-
2504 - sig: ldobj v:in:ref, field_id
2508 - sig: ldobj.64 v:in:ref, field_id
2512 - sig: ldobj.obj v:in:ref, field_id
2517 - title: Store accumulator content into object field
2519 …Store accumulator content into object field by field_id. For non-object variant the size of actual…
2523 - v1_object
2524 - field_id_non_static
2525 - field_id_size
2526 - acc_type
2528 - acc_read
2529 - field_id
2531 - x_null
2542 semantics: |-
2545 - sig: stobj v:in:ref, field_id
2549 - sig: stobj.64 v:in:ref, field_id
2553 - sig: stobj.obj v:in:ref, field_id
2558 - title: Get field from object to register
2561 For non-object variant, the size of the field is determined by the field_id,
2566 - v2_object
2567 - field_id_non_static
2568 - field_id_size
2570 - acc_none
2571 - field_id
2573 - x_null
2586 semantics: |-
2589 - sig: ldobj.v v1:out:i32, v2:in:ref, field_id
2593 - sig: ldobj.v.64 v1:out:b64, v2:in:ref, field_id
2597 - sig: ldobj.v.obj v1:out:ref, v2:in:ref, field_id
2602 - title: Store register content into object field
2604 …Store register content into object field by field_id. For non-object variant the size of actually …
2608 - v1_type
2609 - v2_object
2610 - field_id_non_static
2611 - field_id_size
2613 - acc_none
2614 - field_id
2616 - x_null
2627 semantics: |-
2630 - sig: stobj.v v1:in:b32, v2:in:ref, field_id
2634 - sig: stobj.v.64 v1:in:b64, v2:in:ref, field_id
2638 - sig: stobj.v.obj v1:in:ref, v2:in:ref, field_id
2643 - title: Get static field
2646 For non-object variant, the size of the field is determined by the field_id,
2650 - field_id_static
2651 - field_id_size
2653 - acc_write
2654 - field_id
2656 - x_init
2664 semantics: |-
2667 - sig: ldstatic field_id
2671 - sig: ldstatic.64 field_id
2675 - sig: ldstatic.obj field_id
2680 - title: Store to static field
2682 …Store accumulator content into static field by field_id. For non-object variant the size of actual…
2686 - field_id_static
2687 - field_id_size
2688 - acc_type
2690 - acc_read
2691 - field_id
2693 - x_init
2701 semantics: |-
2704 - sig: ststatic field_id
2708 - sig: ststatic.64 field_id
2712 - sig: ststatic.obj field_id
2717 - title: Return value from method
2722 - acc_return_type
2724 - x_none
2726 - acc_read
2727 - return
2730 semantics: |-
2733 - sig: return
2737 - sig: return.64
2741 - sig: return.obj
2746 - title: Return from a void method
2752 - none
2754 - x_none
2756 - acc_none
2757 - return
2760 semantics: |-
2763 - sig: return.void
2768 - title: Throw exception
2772 …ndler is found, the frame of invoker is restored. If such frame exists, the exception is re-thrown.
2775 - v1_throw_type
2777 - x_null
2779 - acc_none
2785 semantics: |-
2788 - sig: throw v:in:ref
2793 - title: Check cast
2798 …to T if T is a root type in type hierarchy or T is such array that O array elements are the same o…
2799 T array elements.
2802 - type_id_any_object
2803 - acc_obj_or_null
2805 - x_cast
2807 - acc_read
2808 - type_id
2814 semantics: |-
2817 - sig: checkcast type_id
2822 - title: Is instance
2827 …type in type hierarchy or T is such array that O array elements are the same or subtype of T array
2830 - type_id_any_object
2831 - acc_obj_or_null
2833 - x_classdef
2835 - acc_read
2836 - acc_write
2837 - type_id
2845 semantics: |-
2848 - sig: isinstance type_id
2849 acc: inout:ref->i32
2853 - title: Static call
2861 runtime constant-pool.
2863 Non-range instructions can be used to pass up to 4 arguments (unused register slot values will
2867 In dynamically-typed language context accept 'any' values in source registers.
2869 - method_id_static
2870 - method_id_non_abstract
2871 - compatible_arguments
2873 - acc_write
2874 - method_id
2875 - call
2876 - maybe_dynamic
2878 - x_none
2882 semantics: |-
2891 - sig: call.short method_id, v1:in:top, v2:in:top
2895 - sig: call method_id, v1:in:top, v2:in:top, v3:in:top, v4:in:top
2899 - sig: call.range method_id, v:in:top
2904 - title: Static call with accumulator as input
2912 runtime constant-pool.
2914 Non-range instructions can be used to pass up to 4 arguments (unused register slot values will
2916 In dynamically-typed language context accept 'any' values in source registers.
2919 - method_id_static
2920 - method_id_non_abstract
2921 - compatible_arguments
2923 - acc_write
2924 - acc_read
2925 - method_id
2926 - call
2927 - maybe_dynamic
2929 - x_none
2938 args[i] = regs[i - 1]
2943 semantics: |-
2946 - sig: call.acc.short method_id, v:in:top, imm:u1
2950 - sig: call.acc method_id, v1:in:top, v2:in:top, v3:in:top, imm:u2
2955 - title: Object calls
2963 constant-pool based on object reference using language-specific semantics (currently only Java
2967 Non-range instructions can be used to pass up to 4 arguments (including object reference).
2973 - method_id_non_static
2974 - compatible_arguments
2975 - method_id_accessible
2977 - x_null
2978 - x_abstract
2980 - acc_write
2981 - method_id
2982 - call
2983 - call_virt
2993 semantics: |-
2996 - sig: call.virt.short method_id, v1:in:top, v2:in:top
3000 - sig: call.virt method_id, v1:in:top, v2:in:top, v3:in:top, v4:in:top
3004 - sig: call.virt.range method_id, v:in:top
3009 - title: Object calls with accumulator as input
3017 constant-pool based on object reference using language-specific semantics (currently only Java
3021 Non-range instructions can be used to pass up to 4 arguments (including object reference).
3026 - method_id_non_static
3027 - compatible_arguments
3028 - method_id_accessible
3030 - x_null
3031 - x_abstract
3033 - acc_write
3034 - acc_read
3035 - method_id
3036 - call
3037 - call_virt
3046 args[i] = regs[i - 1]
3057 semantics: |-
3060 - sig: call.virt.acc.short method_id, v:in:top, imm:u1
3064 - sig: call.virt.acc method_id, v1:in:top, v2:in:top, v3:in:top, imm:u2
3069 - title: Dynamic move register-to-register
3073 - valid_in_dynamic_context
3075 - x_none
3077 - acc_none
3078 - dynamic
3084 - sig: mov.dyn v1:out:any, v2:in:any
3089 - title: Dynamic load accumulator from register
3093 - valid_in_dynamic_context
3095 - x_none
3097 - acc_write
3098 - dynamic
3104 - sig: lda.dyn v:in:any
3109 - title: Dynamic store accumulator
3113 - valid_in_dynamic_context
3115 - x_none
3117 - acc_read
3118 - dynamic
3124 - sig: sta.dyn v:out:any
3129 - title: Dynamic load accumulator from immediate
3133 - valid_in_dynamic_context
3135 - x_none
3137 - acc_write
3138 - dynamic
3144 - sig: ldai.dyn imm:i32
3148 - sig: fldai.dyn imm:f64
3154 - title: Dynamic return from method
3158 - valid_in_dynamic_context
3160 - x_none
3162 - acc_read
3163 - dynamic
3164 - return
3170 - sig: return.dyn
3175 - title: Dynamic indirect call
3184 Non-range instructions can be used to pass up to 4 arguments (unused register slot values will
3189 - valid_in_dynamic_context
3191 - x_none
3193 - acc_write
3194 - dynamic
3195 - call
3202 - sig: calli.dyn.short imm, v1:in:any, v2:in:any, v3:in:any
3206 - sig: calli.dyn imm, v1:in:any, v2:in:any, v3:in:any, v4:in:any, v5:in:any
3210 - sig: calli.dyn.range imm, v:in:any