IL | Bytecode | Other bytes | Stack [before]→[after] |
Description | |
حسابی و منطقی | |||||
add | dadd | value1, value2 → result | adds two doubles | ||
fadd | value1, value2 → result | adds two floats | |||
iadd | value1, value2 → result | adds two ints together | |||
ladd | value1, value2 → result | add two longs | |||
div | ddiv | value1, value2 → result | divides two doubles | ||
fdiv | value1, value2 → result | divides two floats | |||
idiv | value1, value2 → result | divides two integers | |||
ldiv | value1, value2 → result | divide two longs | |||
mul | dmul | value1, value2 → result | multiplies two doubles | ||
fmul | value1, value2 → result | multiplies two floats | |||
imul | value1, value2 → result | multiply two integers | |||
lmul | value1, value2 → result | multiplies two longs | |||
neg | dneg | value → result | negates a double | ||
fneg | value → result | negates a float | |||
ineg | value → result | negate int | |||
lneg | value → result | negates a long | |||
rem | drem | value1, value2 → result | gets the remainder from a division between two doubles | ||
frem | value1, value2 → result | gets the remainder from a division between two floats | |||
irem | value1, value2 → result | logical int remainder | |||
lrem | value1, value2 → result | remainder of division of two longs | |||
sub | dsub | value1, value2 → result | subtracts a double from another | ||
fsub | value1, value2 → result | subtracts two floats | |||
isub | value1, value2 → result | int subtract | |||
lsub | value1, value2 → result | subtract two longs | |||
and | iand | value1, value2 → result | performs a bitwise and on two integers | ||
land | value1, value2 → result | bitwise and of two longs | |||
or | ior | value1, value2 → result | bitwise int or | ||
lor | value1, value2 → result | bitwise or of two longs | |||
xor | ixor | value1, value2 → result | int xor | ||
lxor | value1, value2 → result | bitwise exclusive or of two longs | |||
انتقال داده | |||||
bipush | byte | → value | pushes a byte onto the stack as an integer value | ||
pop | pop2 | {value2, value1} → | discards the top two values on the stack (or one value, if it is a double or long) | ||
pop | value → | discards the top value on the stack | |||
dup | dup | value → value, value | duplicates the value on top of the stack | ||
dup2 | {value2, value1} → {value2, value1}, {value2, value1} | duplicate top two stack words (two values, if value1 is not double nor long; a single value, if value1 is double or long) | |||
dup2_x2 | {value4, value3}, {value2, value1} → {value2, value1}, {value4, value3}, {value2, value1} | duplicate two words and insert beneath fourth word | |||
dup2_x1 | value3, {value2, value1} → {value2, value1}, value3, {value2, value1} | duplicate two words and insert beneath third word (see explanation above) | |||
dup_x2 | value3, value2, value1 → value1, value3, value2, value1 | inserts a copy of the top value into the stack two (if value2 is double or long it takes up the entry of value3, too) or three values (if value2 is neither double nor long) from the top | |||
dup_x1 | value2, value1 → value1, value2, value1 | inserts a copy of the top value into the stack two values from the top | |||
ldloc <uint16 (indx)> | dload | index | → value | loads a double value from a local variable #index | |
fload | index | → value | loads a float value from a local variable #index | ||
lload | index | → value | load a long value from a local variable #index | ||
iload | index | → value | loads an int value from a local variable #index | ||
ldloc.0 | lload_0 | → value | load a long value from a local variable 0 | ||
dload_0 | → value | loads a double from local variable 0 | |||
fload_0 | → value | loads a float value from local variable 0 | |||
iload_0 | → value | loads an int value from local variable 0 | |||
ldloc.1 | lload_1 | → value | load a long value from a local variable 1 | ||
dload_1 | → value | loads a double from local variable 1 | |||
fload_1 | → value | loads a float value from local variable 1 | |||
iload_1 | → value | loads an int value from local variable 1 | |||
ldloc.2 | lload_2 | → value | load a long value from a local variable 2 | ||
dload_2 | → value | loads a double from local variable 2 | |||
fload_2 | → value | loads a float value from local variable 2 | |||
iload_2 | → value | loads an int value from local variable 2 | |||
ldloc.3 | lload_3 | → value | load a long value from a local variable 3 | ||
dload_3 | → value | loads a double from local variable 3 | |||
fload_3 | → value | loads a float value from local variable 3 | |||
iload_3 | → value | loads an int value from local variable 3 | |||
ldc.i4.0 | iconst_0 | → 0 | loads the int value 0 onto the stack | Push 0 onto the stack as i | |
ldc.i4.1 | iconst_1 | → 1 | loads the int value 1 onto the stack | ||
iconst_2 | → 2 | loads the int value 2 onto the stack | Push 2 onto the stack as i | ||
iconst_3 | → 3 | loads the int value 3 onto the stack | Push 3 onto the stack as i | ||
iconst_4 | → 4 | loads the int value 4 onto the stack | Push 4 onto the stack as i | ||
iconst_5 | → 5 | loads the int value 5 onto the stack | Push 5 onto the stack as i | ||
ldc.i4.m1 or ldc.i4.M1 | iconst_m1 | → -1 | loads the int value -1 onto the stack | Push -1 onto the stack as i | |
ldc.i4.s <int8 (num)> ldc.i8 <int64 (num)> ldc.r4 <float32 (num)> ldc.r8 <float64 (num)> |
ldc2_w | indexbyte1, indexbyte2 | → value | pushes a constant #index from a constant pool (double or long) onto the stack (wide index is constructed as indexbyte1 << 8 + indexbyte2) | |
ldc | index | → value | pushes a constant #index from a constant pool (String, int or float) onto the stack | ||
ldc_w | indexbyte1, indexbyte2 | → value | pushes a constant #index from a constant pool (String, int or float) onto the stack (wide index is constructed as indexbyte1 << 8 + indexbyte2) | ||
sipush | byte1, byte2 | → value | pushes a short onto the stack | ||
fconst_0 | → 0.0f | pushes 0.0f on the stack | |||
fconst_1 | → 1.0f | pushes 1.0f on the stack | |||
fconst_2 | → 2.0f | pushes 2.0f on the stack | |||
dconst_0 | → 0.0 | pushes the constant 0.0 onto the stack | |||
dconst_1 | → 1.0 | pushes the constant 1.0 onto the stack | |||
lconst_0 | → 0L | pushes the long 0 onto the stack | |||
lconst_1 | → 1L | pushes the long 1 onto the stack | |||
stloc.0 | lstore_0 | value → | store a long value in a local variable 0 | ||
istore_0 | value → | store int value into variable 0 | |||
dstore_0 | value → | stores a double into local variable 0 | |||
fstore_0 | value → | stores a float value into local variable 0 | |||
stloc.1 | lstore_1 | value → | store a long value in a local variable 1 | ||
istore_1 | value → | store int value into variable 1 | |||
dstore_1 | value → | stores a double into local variable 1 | |||
fstore_1 | value → | stores a float value into local variable 1 | |||
stloc.2 | lstore_2 | value → | store a long value in a local variable 2 | ||
istore_2 | value → | store int value into variable 2 | |||
dstore_2 | value → | stores a double into local variable 2 | |||
fstore_2 | value → | stores a float value into local variable 2 | |||
stloc.3 | lstore_3 | value → | store a long value in a local variable 3 | ||
istore_3 | value → | store int value into variable 3 | |||
dstore_3 | value → | stores a double into local variable 3 | |||
fstore_3 | value → | stores a float value into local variable 3 | |||
stloc <uint16 (indx)> | istore | index | value → | store int value into variable #index | |
lstore | index | value → | store a long value in a local variable #index | ||
dstore | index | value → | stores a double value into a local variable #index | ||
fstore | index | value → | stores a float value into a local variable #index | ||
شرطی و پرشی | |||||
dreturn | value → [empty] | returns a double from a method | |||
freturn | value → [empty] | returns a float | |||
return | → [empty] | return void from method | |||
ireturn | value → [empty] | returns an integer from a method | |||
lreturn | value → [empty] | returns a long value | |||
br.s | goto | branchbyte1, branchbyte2 | [no change] | goes to another instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) | Branch to target, short for |
br | goto_w | branchbyte1, branchbyte2, branchbyte3, branchbyte4 | [no change] | goes to another instruction at branchoffset (signed int constructed from unsigned bytes branchbyte1 << 24 + branchbyte2 << 16 + branchbyte3 << 8 + branchbyte4) | |
beq <int32 (ta | if_icmpeq | branchbyte1, branchbyte2 | value1, value2 → | if ints are equal, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) | |
bne.un <int32 | if_icmpne | branchbyte1, branchbyte2 | value1, value2 → | if ints are not equal, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) | |
blt <int32 (ta | if_icmplt | branchbyte1, branchbyte2 | value1, value2 → | if value1 is less than value2, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) | |
bge <int32 (ta | if_icmpge | branchbyte1, branchbyte2 | value1, value2 → | if value1 is greater than or equal to value2, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) | |
bgt <int32 (ta | if_icmpgt | branchbyte1, branchbyte2 | value1, value2 → | if value1 is greater than value2, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) | |
ble <int32 (ta | if_icmple | branchbyte1, branchbyte2 | value1, value2 → | if value1 is less than or equal to value2, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) | |
brzero <int32 | ifeq | branchbyte1, branchbyte2 | value → | if value is 0, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) | |
brfalse <int32 | |||||
brtrue.s <int8 | ifne | branchbyte1, branchbyte2 | value → | if value is not 0, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) | |
brinst <int32 (target)> | ifnonnull | branchbyte1, branchbyte2 | value → | if value is not null, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) | |
brnull <int32 (target)> | ifnull | branchbyte1, branchbyte2 | value → | if value is null, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) | |
dcmpg | value1, value2 → result | compares two doubles | |||
dcmpl | value1, value2 → result | compares two doubles | |||
fcmpg | value1, value2 → result | compares two floats | |||
fcmpl | value1, value2 → result | compares two floats | |||
lcmp | value1, value2 → result | compares two longs values | |||
iflt | branchbyte1, branchbyte2 | value → | if value is less than 0, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) | ||
ifge | branchbyte1, branchbyte2 | value → | if value is greater than or equal to 0, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) | ||
ifgt | branchbyte1, branchbyte2 | value → | if value is greater than 0, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) | ||
ifle | branchbyte1, branchbyte2 | value → | if value is less than or equal to 0, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) | ||
jsr | branchbyte1, branchbyte2 | → address | jump to subroutine at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) and place the return address on the stack | ||
jsr_w | branchbyte1, branchbyte2, branchbyte3, branchbyte4 | → address | jump to subroutine at branchoffset (signed int constructed from unsigned bytes branchbyte1 << 24 + branchbyte2 << 16 + branchbyte3 << 8 + branchbyte4) and place the return address on the stack | ||
switch <uint32, int32,int32 (t1..tN)> | tableswitch | [0-3 bytes padding], defaultbyte1, defaultbyte2, defaultbyte3, defaultbyte4, lowbyte1, lowbyte2, lowbyte3, lowbyte4, highbyte1, highbyte2, highbyte3, highbyte4, jump offsets... | index → | continue execution from an address in the table at offset index | |
lookupswitch | <0-3 bytes padding>, defaultbyte1, defaultbyte2, defaultbyte3, defaultbyte4, npairs1, npairs2, npairs3, npairs4, match-offset pairs... | key → | a target address is looked up from a table using a key and execution continues from the instruction at that address | ||
ret | index | [No change] | continue execution from address taken from a local variable #index (the asymmetry with jsr is intentional) | ||
سایر | |||||
conv.r4 | d2f | value → result | converts a double to a float | ||
i2f | value → result | converts an int into a float | |||
l2f | value → result | converts a long to a float | |||
conv.i4 | d2i | value → result | converts a double to an int | ||
f2i | value → result | converts a float to an int | |||
l2i | value → result | converts a long to a int | |||
conv.i8 | d2l | value → result | converts a double to a long | ||
f2l | value → result | converts a float to a long | |||
i2l | value → result | converts an int into a long | |||
conv.r8 | f2d | value → result | converts a float to a double | ||
i2d | value → result | converts an int into a double | |||
l2d | value → result | converts a long to a double | |||
conv.u1 | i2b | value → result | converts an int into a byte | ||
conv.i1 | i2c | value → result | converts an int into a character | ||
conv.i2 | i2s | value → result | converts an int into a short | ||
iinc | index, const | [No change] | increment local variable #index by signed byte const | ||
ishl | value1, value2 → result | int shift left | |||
ishr | value1, value2 → result | int arithmetic shift right | |||
iushr | value1, value2 → result | int logical shift right | |||
lshl | value1, value2 → result | bitwise shift left of a long value1 by value2 positions | |||
lshr | value1, value2 → result | bitwise shift right of a long value1 by value2 positions | |||
lushr | value1, value2 → result | bitwise shift right of a long value1 by value2 positions, unsigned | |||
nop | nop | [No change] | performs no operation | ||
swap | value2, value1 → value1, value2 | swaps two top words on the stack (note that value1 and value2 must not be double or long) | |||
wide | opcode, indexbyte1, indexbyte2 | [same as for corresponding instructions] | execute opcode, where opcode is either iload, fload, aload, lload, dload, istore, fstore, astore, lstore, dstore, or ret, but assume the index is 16 bit; or execute iinc, where the index is 16 bits and the constant to increment by is a signed 16 bit short | ||
or | |||||
iinc, indexbyte1, indexbyte2, countbyte1, countbyte2 | |||||
break | breakpoint | reserved for breakpoints in Java debuggers; should not appear in any class file | |||
دستوراتی که در IL فقط هست | |||||
add.ovf | …,Value1,Value2 → …,RESULT | Add signed integer values with overflow check. | |||
add.ovf.un | …,Value1,Value2 → …,RESULT | Add unsigned integer values with overflow check. | |||
arglist | Return argument list handle for the current method. | ||||
beq.s <int8 (target)> | …,Value1,Value2 → … | Branch to target if equal, short form. | |||
bge.s <int8 (target)> | …,Value1,Value2 → … | Branch to target if greater than or equal to, short form. | |||
bge.un <int32 (target)> | …,Value1,Value2 → … | Branch to target if greater than or equal to (unsigned or unordered). | |||
bge.un.s <int8 (target)> | …,Value1,Value2 → … | Branch to target if greater than or equal to (unsigned or unordered), short form | |||
bgt.s <int8 (target)> | …,Value1,Value2 → … | Branch to target if greater than, short form. | |||
bgt.un <int32 (target)> | …,Value1,Value2 → … | Branch to target if greater than (unsigned or unordered). | |||
bgt.un.s <int8 (target)> | …,Value1,Value2 → … | Branch to target if greater than (unsigned or unordered), short form. | |||
ble.s <int8 (target)> | …,Value1,Value2 → … | Branch to target if less than or equal to, short form. | |||
ble.un <int32 (target)> | …,Value1,Value2 → … | Branch to target if less than or equal to (unsigned or unordered). | |||
ble.un.s <int8 (target)> | …,Value1,Value2 → … | Branch to target if less than or equal to (unsigned or unordered), short form | |||
blt <int32 (target)> | …,Value1,Value2 → … | Branch to target if less than. | |||
blt.s <int8 (target)> | …,Value1,Value2 → … | Branch to target if less than, short form. | |||
blt.un <int32 (target)> | …,Value1,Value2 → … | Branch to target if less than (unsigned or unordered). | |||
blt.un.s <int8 (target)> | …,Value1,Value2 → … | Branch to target if less than (unsigned or unordered), short form. | |||
bne.un <int32 (target)> | …,Value1,Value2 → … | Branch to target if unequal or unordered. | |||
bne.un.s <int8 (target)> | …,Value1,Value2 → … | Branch to target if unequal or unordered, short form. | |||
brfalse.s <int8 (target)> | …,Value → … | Branch to target if value is zero (false), short form. | |||
brinst.s <int8 (target)> | …,Value → … | Branch to target if value is a non-null object reference, short form (alias for brtrue.s). | |||
brnull.s <int8 (target)> | …,Value → … | Branch to target if value is null (alias for brfalse.s), short form. | |||
brtrue <int32 (target)> | …,Value → … | Branch to target if value is non-zero (true). | |||
brtrue.s <int8 (target)> | …,Value → … | Branch to target if value is non-zero (true), short form. | |||
brzero.s <int8 (target)> | …,Value → … | Branch to target if value is zero (alias for brfalse.s), short form. | |||
call <method> | …,arg1,arg2 … argn→ ..,retVal | Call method described by method. | |||
calli <callsitedescr> | …,arg1,arg2 … argn,fnt→ ..,retVal | Call method indicated on the stack with arguments described by callsitedescr. | |||
ceq | …,Value1,Value2 → …,RESULT | Push 1 (of type int32) if value1 equals value2, else push 0. | |||
cgt | …,Value1,Value2 → …,RESULT | Push 1 (of type int32) if value1 > value2, else push 0. | |||
cgt.un | …,Value1,Value2 → …,RESULT | Push 1 (of type int32) if value1 > value2, unsigned or unordered, else push 0. | |||
ckfinite | …,Value → …,Value | Throw ArithmeticException if value is not a finite number. | |||
clt | …,Value1,Value2 → …,RESULT | Push 1 (of type int32) if value1 < value2, else push 0. | |||
clt.un | …,Value1,Value2 → …,RESULT | Push 1 (of type int32) if value1 < value2, unsigned or unordered, else push 0. | |||
constrained. <thisType> [prefix] | Call a virtual method on a type constrained to be type T | ||||
conv.i | .., Value → RESULT | Convert to native int, pushing native int on stack. | |||
conv.ovf.i | .., Value → RESULT | Convert to a native int (on the stack as native int) and throw an exception on overflow. | |||
conv.ovf.i.un | .., Value → RESULT | Convert unsigned to a native int (on the stack as native int) and throw an exception on overflow. | |||
conv.ovf.i1 | .., Value → RESULT | Convert to an int8 (on the stack as int32) and throw an exception on overflow. | |||
conv.ovf.i1.un | .., Value → RESULT | Convert unsigned to an int8 (on the stack as int32) and throw an exception on overflow. | |||
conv.ovf.i2 | .., Value → RESULT | Convert to an int16 (on the stack as int32) and throw an exception on overflow. | |||
conv.ovf.i2.un | .., Value → RESULT | Convert unsigned to an int16 (on the stack as int32) and throw an exception on overflow. | |||
conv.ovf.i4 | .., Value → RESULT | Convert to an int32 (on the stack as int32) and throw an exception on overflow. | |||
conv.ovf.i4.un | .., Value → RESULT | Convert unsigned to an int32 (on the stack as int32) and throw an exception on overflow. | |||
conv.ovf.i8 | .., Value → RESULT | Convert to an int64 (on the stack as int32) and throw an exception on overflow. | |||
conv.ovf.i8.un | .., Value → RESULT | Convert unsigned to an int64 (on the stack as int32) and throw an exception on overflow. | |||
conv.ovf.u | .., Value → RESULT | Convert to a native unsigned int (on the stack as native int) and throw an exception on overflow. | |||
conv.ovf.u.un | .., Value → RESULT | Convert unsigned to a native unsigned int (on the stack as native int) and throw an exception on overflow. | |||
conv.ovf.u1.un | .., Value → RESULT | Convert unsigned to an unsigned int8 (on the stack as int32) and throw an exception on overflow. | |||
conv.ovf.u2 | .., Value → RESULT | Convert to an unsigned int16 (on the stack as int32) and throw an exception on overflow. | |||
conv.ovf.u2.un | .., Value → RESULT | Convert unsigned to an unsigned int16 (on the stack as int32) and throw an exception on overflow. | |||
conv.ovf.u4 | .., Value → RESULT | Convert to an unsigned int32 (on the stack as int32) and throw an exception on overflow. | |||
conv.ovf.u4.un | .., Value → RESULT | Convert unsigned to an unsigned int32 (on the stack as int32) and throw an exception on overflow. | |||
conv.ovf.u8 | .., Value → RESULT | Convert to an unsigned int64 (on the stack as int32) and throw an exception on overflow. | |||
conv.ovf.u8.un | .., Value → RESULT | Convert unsigned to an unsigned int64 (on the stack as int32) and throw an exception on overflow. | |||
conv.r.un | .., Value → RESULT | Convert unsigned integer to floating-point, pushing F on stack. | |||
conv.u | .., Value → RESULT | Convert to native unsigned int, pushing native int on stack. | |||
conv.u1 | .., Value → RESULT | Convert to unsigned int8, pushing int32 on stack. | |||
conv.u2 | .., Value → RESULT | Convert to unsigned int16, pushing int32 on stack. | |||
conv.u4 | .., Value → RESULT | Convert to unsigned int32, pushing int32 on stack. | |||
conv.u8 | .., Value → RESULT | Convert to unsigned int64, pushing int64 on stack. | |||
cpblk | …, DESADDR,SECADDR,SIZE→… | Copy data from memory to memory. | |||
div.un | …,Value1,Value2 → …,RESULT | Divide two values, unsigned, returning a quotient. | |||
endfault | …,value → … | End fault clause of an exception block. | |||
endfilter | …,value → … | End an exception handling filter clause. | |||
endfinally | …,value → … | End finally clause of an exception block. | |||
idind.u8 | Indirect load value of type unsigned int64 as int64 on the stack (alias for ldind.i8). | ||||
initblk | …,ADDR, Value,SIZE → … | Set all bytes in a block of memory to a given byte value. | |||
jmp <method> | …. , → …. | Exit current method and jump to the specified method. | |||
ldarg <uint16 (num)> | …. , → …,value | Load argument numbered num onto the stack. | |||
ldarg.0 | …. , → …,value | Load argument 0 onto the stack. | |||
ldarg.1 | …. , → …,value | Load argument 1 onto the stack. | |||
ldarg.2 | …. , → …,value | Load argument 2 onto the stack. | |||
ldarg.3 | …. , → …,value | Load argument 3 onto the stack. | |||
ldarg.s <uin8 (num)> | …. , → …,value | Load argument numbered num onto the stack, short form. | |||
ldarga <uint16 (argNum)> | …, → …,address of argument | Fetch the address of argument argNum. | |||
ldarga.s <uint8 (argNum)> | …, → …,address of argument | Fetch the address of argument argNum, short form. | |||
ldc.i4 <int32 (num)> | …, → …, num | Push num of type int32 onto the stack as int32. | |||
ldc.i4.6 | …, → …, num | Push 6 onto the stack as int32. | |||
ldc.i4.7 | …, → …, num | Push 7 onto the stack as int32. | |||
ldc.i4.8 | …, → …, num | Push 8 onto the stack as int32. | |||
ldc.i4.s <int8 (num)> | …, → …, num | Push num onto the stack as int32, short form. | |||
ldc.i8 <int64 (num)> | …, → …, num | Push num of type int64 onto the stack as int64. | |||
ldc.r4 <float32 (num)> | …, → …, num | Push num of type float32 onto the stack as F. | |||
ldc.r8 <float64 (num)> | …, → …, num | Push num of type float64 onto the stack as F. | |||
ldftn <method> | …, → …,ftn | Push a pointer to a method referenced by method, on the stack. | |||
ldind.i | …,addr → …,Value | Indirect load value of type native int as native int on the stack | |||
ldind.i1 | …,addr → …,Value | Indirect load value of type int8 as int32 on the stack. | |||
ldind.i2 | …,addr → …,Value | Indirect load value of type int16 as int32 on the stack. | |||
ldind.i4 | …,addr → …,Value | Indirect load value of type int32 as int32 on the stack. | |||
ldind.i8 | …,addr → …,Value | Indirect load value of type int64 as int64 on the stack. | |||
ldind.r4 | …,addr → …,Value | Indirect load value of type float32 as F on the stack. | |||
ldind.r8 | …,addr → …,Value | Indirect load value of type float64 as F on the stack. | |||
ldind.ref | …,addr → …,Value | Indirect load value of type object ref as O on the stack. | |||
ldind.u1 | …,addr → …,Value | Indirect load value of type unsigned int8 as int32 on the stack | |||
ldind.u2 | …,addr → …,Value | Indirect load value of type unsigned int16 as int32 on the stack | |||
ldind.u4 | …,addr → …,Value | Indirect load value of type unsigned int32 as int32 on the stack | |||
ldloc.s <uint8 (indx)> | …, → …,Value | Load local variable of index indx onto stack, short form. | |||
ldloca <uint16 (indx)> | … → …,address | Load address of local variable with index indx. | |||
ldloca.s <uint8 (indx)> | … → …,address | Load address of local variable with index indx, short form. | |||
ldnull | … → …, null value | Push a null reference on the stack. | |||
leave <int32 (target)> | …, → | Exit a protected region of code. | |||
leave.s <int8 (target)> | …, → | Exit a protected region of code, short form. | |||
localloc | …, size → …,address | Allocate space from the local memory pool. | |||
mul.ovf.<type> | …,value1,value2 → …,result | Multiply signed integer values. Signed result shall fit in same size | |||
mul.ovf.un | …,value1,value2 → …,result | Multiply unsigned integer values. Unsigned result shall fit in same size | |||
not | …,value → …,result | Bitwise complement. | |||
rem.un | …,Value1,Value2 → …,result | Remainder when dividing one unsigned value by another. | |||
shl | …,value,shiftAmount → …,result | Shift an integer left (shifting in zeros), return an integer. | |||
shr | …,value,shiftAmount → …,result | Shift an integer right (shift in sign), return an integer. | |||
shr.un | …,value,shiftAmount → …,result | Shift an integer right (shift in zero), return an integer. | |||
starg <uint16 (num)> | …,value → …, | Store value to the argument numbered num. | |||
starg.s <uint8 (num)> | …,value → …, | Store value to the argument numbered num, short form. | |||
stind.i | …,addr , val → … | Store value of type native int into memory at address | |||
stind.i1 | …,addr , val → … | Store value of type int8 into memory at address | |||
stind.i2 | …,addr , val → … | Store value of type int16 into memory at address | |||
stind.i4 | …,addr , val → … | Store value of type int32 into memory at address | |||
stind.i8 | …,addr , val → … | Store value of type int64 into memory at address | |||
stind.r4 | …,addr , val → … | Store value of type float32 into memory at address | |||
stind.r8 | …,addr , val → … | Store value of type float64 into memory at address | |||
stind.ref | …,addr , val → … | Store value of type object ref (type O) into memory at address | |||
stloc <uint16 (indx)> | …,value → … | Pop a value from stack into local variable indx. | |||
stloc.s <uint8 (indx)> | …,value → … | Pop a value from stack into local variable indx, short form. | |||
sub.ovf | …,Value1,Value2 → …,result | Subtract native int from a native int. Signed result shall fit in same size | |||
sub.ovf.un | …,Value1,Value2 → …,result | Subtract native unsigned int from a native unsigned int. Unsigned result shall fit in same size. |