一.Flags部分可設置
1.可訪問性數組
2. Contract安全
3. Vitual method table (v-table) control flags多線程
4. Implementationless
5. Reservedide
二. Implementation Flags
1. Code typeui
2. Code managementthis
3. Implementation and interoperabilityspa
部分CIL 操做碼線程
操做碼 做用debug
add, sub, mul, div, rem 用於兩個數加減乘除求模
add, or, not, xor 用於在兩個值上進行二進制操做
ceq, cgt, clt 用不一樣的方法比較兩個在棧上的值,ceq:是否相等;cgt:是否大約;clt:是否小於
box, unbox 在引用類型和值類型之間轉換
ret 退出方法和返回一個值
beq, bgt, ble, blt, switch 控制方法中的條件分支,beg:若是相等就停止到代碼標籤;bgt:若是大於就停止到代碼標籤;
ble:若是小於等於就停止到代碼標籤;blt:若是小於就停止到代碼標籤;
全部的分支控制操做碼都須要給出一個CIL代碼標籤做爲條件爲真的跳轉目的
br.s (無條件)停止到代碼標籤
call 調用一個成員
nearer, newobj 在內存中建立一個新的數組或新的對象類型
主要的入棧CIL操做碼 (ld 加載)
操做碼 做用
ldarg (及多個變化形式) 加載方法的參數到棧中。除了泛型ldarg(須要一個索引做爲參數),還有後其餘不少的變化形式。
eg. 有個數字後綴的ldarg操做碼來指定須要加載的參數。同時還有不少ldarg的變化形式容許加載
指定的數據類型(ldarg_i4, 加載int32)和值(ldarg_i4_5 加載一個值爲5的int32)
ldc (及多個變化形式) 加載一個常數到棧中
ldfld (及多個變化形式) 加載一個對象實例的成員到棧中
ldloc (及多個變化形式) 加載一個本地變量到棧中
ldobj 得到一個堆對象的全部數據,並將它們放置到棧中
ldstr 加載一個字符串數據到棧中
主要的彈出棧操做碼 (st 存儲)
操做碼 做用
pop 刪除當前棧頂的值,可是並不影響存儲的值
starg 存儲棧頂的值到給出方法的參數,根據索引肯定這個參數
stloc (及多個變化形式) 彈出當前棧頂的值並存儲在一個本地變量列表中,根據因此肯定這個參數
stobj 從棧中複製一個特定的類型到指定的內存地址
stfld 用從棧中得到的值替換對象成員的值
Opcode |
Instruction |
Description |
Type of instruction |
0x00 |
nop |
Do nothing (No operation). |
Base instruction |
0x01 |
break |
Inform a debugger that a breakpoint has been reached. |
Base instruction |
0x02 |
ldarg.0 |
Load argument 0 onto the stack. |
Base instruction |
0x03 |
ldarg.1 |
Load argument 1 onto the stack. |
Base instruction |
0x04 |
ldarg.2 |
Load argument 2 onto the stack. |
Base instruction |
0x05 |
ldarg.3 |
Load argument 3 onto the stack. |
Base instruction |
0x06 |
ldloc.0 |
Load local variable 0 onto stack. |
Base instruction |
0x07 |
ldloc.1 |
Load local variable 1 onto stack. |
Base instruction |
0x08 |
ldloc.2 |
Load local variable 2 onto stack. |
Base instruction |
0x09 |
ldloc.3 |
Load local variable 3 onto stack. |
Base instruction |
0x0A |
stloc.0 |
Pop a value from stack into local variable 0. |
Base instruction |
0x0B |
stloc.1 |
Pop a value from stack into local variable 1. |
Base instruction |
0x0C |
stloc.2 |
Pop a value from stack into local variable 2. |
Base instruction |
0x0D |
stloc.3 |
Pop a value from stack into local variable 3. |
Base instruction |
0x0E |
ldarg.s <uint8 (num)> |
Load argument numbered num onto the stack, short form. |
Base instruction |
0x0F |
ldarga.s <uint8 (argNum)> |
Fetch the address of argument argNum, short form. |
Base instruction |
0x10 |
starg.s <uint8 (num)> |
Store value to the argument numbered num, short form. |
Base instruction |
0x11 |
ldloc.s <uint8 (indx)> |
Load local variable of index indx onto stack, short form. |
Base instruction |
0x12 |
ldloca.s <uint8 (indx)> |
Load address of local variable with index indx, short form. |
Base instruction |
0x13 |
stloc.s <uint8 (indx)> |
Pop a value from stack into local variable indx, short form. |
Base instruction |
0x14 |
ldnull |
Push a null reference on the stack. |
Base instruction |
0x15 |
ldc.i4.m1 |
Push -1 onto the stack as int32. |
Base instruction |
0x15 |
ldc.i4.M1 |
Push -1 of type int32 onto the stack as int32 (alias for ldc.i4.m1). |
Base instruction |
0x16 |
ldc.i4.0 |
Push 0 onto the stack as int32. |
Base instruction |
0x17 |
ldc.i4.1 |
Push 1 onto the stack as int32. |
Base instruction |
0x18 |
ldc.i4.2 |
Push 2 onto the stack as int32. |
Base instruction |
0x19 |
ldc.i4.3 |
Push 3 onto the stack as int32. |
Base instruction |
0x1A |
ldc.i4.4 |
Push 4 onto the stack as int32. |
Base instruction |
0x1B |
ldc.i4.5 |
Push 5 onto the stack as int32. |
Base instruction |
0x1C |
ldc.i4.6 |
Push 6 onto the stack as int32. |
Base instruction |
0x1D |
ldc.i4.7 |
Push 7 onto the stack as int32. |
Base instruction |
0x1E |
ldc.i4.8 |
Push 8 onto the stack as int32. |
Base instruction |
0x1F |
ldc.i4.s <int8 (num)> |
Push num onto the stack as int32, short form. |
Base instruction |
0x20 |
ldc.i4 <int32 (num)> |
Push num of type int32 onto the stack as int32. |
Base instruction |
0x21 |
ldc.i8 <int64 (num)> |
Push num of type int64 onto the stack as int64. |
Base instruction |
0x22 |
ldc.r4 <float32 (num)> |
Push num of type float32 onto the stack as F. |
Base instruction |
0x23 |
ldc.r8 <float64 (num)> |
Push num of type float64 onto the stack as F. |
Base instruction |
0x25 |
dup |
Duplicate the value on the top of the stack. |
Base instruction |
0x26 |
pop |
Pop value from the stack. |
Base instruction |
0x27 |
jmp <method> |
Exit current method and jump to the specified method. |
Base instruction |
0x28 |
call <method> |
Call method described by method. |
Base instruction |
0x29 |
calli <callsitedescr> |
Call method indicated on the stack with arguments described by callsitedescr. |
Base instruction |
0x2A |
ret |
Return from method, possibly with a value. |
Base instruction |
0x2B |
br.s <int8 (target)> |
Branch to target, short form. |
Base instruction |
0x2C |
brfalse.s <int8 (target)> |
Branch to target if value is zero (false), short form. |
Base instruction |
0x2C |
brnull.s <int8 (target)> |
Branch to target if value is null (alias for brfalse.s), short form. |
Base instruction |
0x2C |
brzero.s <int8 (target)> |
Branch to target if value is zero (alias for brfalse.s), short form. |
Base instruction |
0x2D |
brinst.s <int8 (target)> |
Branch to target if value is a non-null object reference, short form (alias for brtrue.s). |
Base instruction |
0x2D |
brtrue.s <int8 (target)> |
Branch to target if value is non-zero (true), short form. |
Base instruction |
0x2E |
beq.s <int8 (target)> |
Branch to target if equal, short form. |
Base instruction |
0x2F |
bge.s <int8 (target)> |
Branch to target if greater than orequal to, short form. |
Base instruction |
0x30 |
bgt.s <int8 (target)> |
Branch to target if greater than, short form. |
Base instruction |
0x31 |
ble.s <int8 (target)> |
Branch to target if less than or equal to, short form. |
Base instruction |
0x32 |
blt.s <int8 (target)> |
Branch to target if less than, short form. |
Base instruction |
0x33 |
bne.un.s <int8 (target)> |
Branch to target if unequal or unordered, short form. |
Base instruction |
0x34 |
bge.un.s <int8 (target)> |
Branch to target if greater than or equal to (unsigned or unordered), short form |
Base instruction |
0x35 |
bgt.un.s <int8 (target)> |
Branch to target if greater than (unsigned or unordered), short form. |
Base instruction |
0x36 |
ble.un.s <int8 (target)> |
Branch to target if less than or equal to (unsigned or unordered), short form |
Base instruction |
0x37 |
blt.un.s <int8 (target)> |
Branch to target if less than (unsigned or unordered), short form. |
Base instruction |
0x38 |
br <int32 (target)> |
Branch to target. |
Base instruction |
0x39 |
brfalse <int32 (target)> |
Branch to target if value is zero (false). |
Base instruction |
0x39 |
brnull <int32 (target)> |
Branch to target if value is null (alias for brfalse). |
Base instruction |
0x39 |
brzero <int32 (target)> |
Branch to target if value is zero (alias for brfalse). |
Base instruction |
0x3A |
brinst <int32 (target)> |
Branch to target if value is a non-null object reference (alias for brtrue). |
Base instruction |
0x3A |
brtrue <int32 (target)> |
Branch to target if value is non-zero (true). |
Base instruction |
0x3B |
beq <int32 (target)> |
Branch to target if equal. |
Base instruction |
0x3C |
bge <int32 (target)> |
Branch to target if greater than orequal to. |
Base instruction |
0x3D |
bgt <int32 (target)> |
Branch to target if greater than. |
Base instruction |
0x3E |
ble <int32 (target)> |
Branch to target if less than or equal to. |
Base instruction |
0x3F |
blt <int32 (target)> |
Branch to target if less than. |
Base instruction |
0x40 |
bne.un <int32 (target)> |
Branch to target if unequal or unordered. |
Base instruction |
0x41 |
bge.un <int32 (target)> |
Branch to target if greater than or equal to (unsigned or unordered). |
Base instruction |
0x42 |
bgt.un <int32 (target)> |
Branch to target if greater than (unsigned or unordered). |
Base instruction |
0x43 |
ble.un <int32 (target)> |
Branch to target if less than or equal to (unsigned or unordered). |
Base instruction |
0x44 |
blt.un <int32 (target)> |
Branch to target if less than (unsigned or unordered). |
Base instruction |
0x45 |
switch <uint32, int32, int32 (t1..tN)> |
Jump to one of n values. |
Base instruction |
0x46 |
ldind.i1 |
Indirect load value of type int8 as int32 on the stack. |
Base instruction |
0x47 |
ldind.u1 |
Indirect load value of type unsigned int8 as int32 on the stack |
Base instruction |
0x48 |
ldind.i2 |
Indirect load value of type int16 as int32 on the stack. |
Base instruction |
0x49 |
ldind.u2 |
Indirect load value of type unsigned int16 as int32 on the stack |
Base instruction |
0x4A |
ldind.i4 |
Indirect load value of type int32 as int32 on the stack. |
Base instruction |
0x4B |
ldind.u4 |
Indirect load value of type unsigned int32 as int32 on the stack |
Base instruction |
0x4C |
ldind.i8 |
Indirect load value of type int64 as int64 on the stack. |
Base instruction |
0x4C |
ldind.u8 |
Indirect load value of type unsigned int64 as int64 on the stack (alias for ldind.i8). |
Base instruction |
0x4D |
ldind.i |
Indirect load value of type native int as native int on the stack |
Base instruction |
0x4E |
ldind.r4 |
Indirect load value of type float32 as F on the stack. |
Base instruction |
0x4F |
ldind.r8 |
Indirect load value of type float64 as F on the stack. |
Base instruction |
0x50 |
ldind.ref |
Indirect load value of type object ref as O on the stack. |
Base instruction |
0x51 |
stind.ref |
Store value of type object ref (type O) into memory at address |
Base instruction |
0x52 |
stind.i1 |
Store value of type int8 into memory at address |
Base instruction |
0x53 |
stind.i2 |
Store value of type int16 into memory at address |
Base instruction |
0x54 |
stind.i4 |
Store value of type int32 into memory at address |
Base instruction |
0x55 |
stind.i8 |
Store value of type int64 into memory at address |
Base instruction |
0x56 |
stind.r4 |
Store value of type float32 into memory at address |
Base instruction |
0x57 |
stind.r8 |
Store value of type float64 into memory at address |
Base instruction |
0x58 |
add |
Add two values, returning a new value. |
Base instruction |
0x59 |
sub |
Subtract value2 from value1, returning a new value. |
Base instruction |
0x5A |
mul |
Multiply values. |
Base instruction |
0x5B |
div |
Divide two values to return a quotient or floating-point result. |
Base instruction |
0x5C |
div.un |
Divide two values, unsigned, returning a quotient. |
Base instruction |
0x5D |
rem |
Remainder when dividing one value by another. |
Base instruction |
0x5E |
rem.un |
Remainder when dividing one unsigned value by another. |
Base instruction |
0x5F |
and |
Bitwise AND of two integral values, returns an integral value. |
Base instruction |
0x60 |
or |
Bitwise OR of two integer values, returns an integer. |
Base instruction |
0x61 |
xor |
Bitwise XOR of integer values, returns an integer. |
Base instruction |
0x62 |
shl |
Shift an integer left (shifting in zeros), return an integer. |
Base instruction |
0x63 |
shr |
Shift an integer right (shift in sign), return an integer. |
Base instruction |
0x64 |
shr.un |
Shift an integer right (shift in zero), return an integer. |
Base instruction |
0x65 |
neg |
Negate value. |
Base instruction |
0x66 |
not |
Bitwise complement (logical not). |
Base instruction |
0x67 |
conv.i1 |
Convert to int8, pushing int32 on stack. |
Base instruction |
0x68 |
conv.i2 |
Convert to int16, pushing int32 on stack. |
Base instruction |
0x69 |
conv.i4 |
Convert to int32, pushing int32 on stack. |
Base instruction |
0x6A |
conv.i8 |
Convert to int64, pushing int64 on stack. |
Base instruction |
0x6B |
conv.r4 |
Convert to float32, pushing F on stack. |
Base instruction |
0x6C |
conv.r8 |
Convert to float64, pushing F on stack. |
Base instruction |
0x6D |
conv.u4 |
Convert to unsigned int32, pushing int32 on stack. |
Base instruction |
0x6E |
conv.u8 |
Convert to unsigned int64, pushing int64 on stack. |
Base instruction |
0x6F |
callvirt <method> |
Call a method associated with an object. |
Object model instruction |
0x70 |
cpobj <typeTok> |
Copy a value type from src to dest. |
Object model instruction |
0x71 |
ldobj <typeTok> |
Copy the value stored at address src to the stack. |
Object model instruction |
0x72 |
ldstr <string> |
Push a string object for the literal string. |
Object model instruction |
0x73 |
newobj <ctor> |
Allocate an uninitialized object or value type and call ctor. |
Object model instruction |
0x74 |
castclass <class> |
Cast obj to class. |
Object model instruction |
0x75 |
isinst <class> |
Test if obj is an instance of class, returning null or an instance of that class or interface. |
Object model instruction |
0x76 |
conv.r.un |
Convert unsigned integer to floating-point, pushing F on stack. |
Base instruction |
0x79 |
unbox <valuetype> |
Extract a value-type from obj, its boxed representation. |
Object model instruction |
0x7A |
throw |
Throw an exception. |
Object model instruction |
0x7B |
ldfld <field> |
Push the value of field of object (or value type) obj, onto the stack. |
Object model instruction |
0x7C |
ldflda <field> |
Push the address of field of object obj on the stack. |
Object model instruction |
0x7D |
stfld <field> |
Replace the value of field of the object obj with value. |
Object model instruction |
0x7E |
ldsfld <field> |
Push the value of field on the stack. |
Object model instruction |
0x7F |
ldsflda <field> |
Push the address of the static field, field, on the stack. |
Object model instruction |
0x80 |
stsfld <field> |
Replace the value of field with val. |
Object model instruction |
0x81 |
stobj <typeTok> |
Store a value of type typeTok at an address. |
Object model instruction |
0x82 |
conv.ovf.i1.un |
Convert unsigned to an int8 (on the stack as int32) and throw an exception on overflow. |
Base instruction |
0x83 |
conv.ovf.i2.un |
Convert unsigned to an int16 (on the stack as int32) and throw an exception on overflow. |
Base instruction |
0x84 |
conv.ovf.i4.un |
Convert unsigned to an int32 (on the stack as int32) and throw an exception on overflow. |
Base instruction |
0x85 |
conv.ovf.i8.un |
Convert unsigned to an int64 (on the stack as int64) and throw an exception on overflow. |
Base instruction |
0x86 |
conv.ovf.u1.un |
Convert unsigned to an unsigned int8 (on the stack as int32) and throw an exception on overflow. |
Base instruction |
0x87 |
conv.ovf.u2.un |
Convert unsigned to an unsigned int16 (on the stack as int32) and throw an exception on overflow. |
Base instruction |
0x88 |
conv.ovf.u4.un |
Convert unsigned to an unsigned int32 (on the stack as int32) and throw an exception on overflow. |
Base instruction |
0x89 |
conv.ovf.u8.un |
Convert unsigned to an unsigned int64 (on the stack as int64) and throw an exception on overflow. |
Base instruction |
0x8A |
conv.ovf.i.un |
Convert unsigned to a native int (on the stack as native int) and throw an exception on overflow. |
Base instruction |
0x8B |
conv.ovf.u.un |
Convert unsigned to a native unsigned int (on the stack as native int) and throw an exception on overflow. |
Base instruction |
0x8C |
box <typeTok> |
Convert a boxable value to its boxed form |
Object model instruction |
0x8D |
newarr <etype> |
Create a new array with elements of type etype. |
Object model instruction |
0x8E |
ldlen |
Push the length (of type native unsigned int) of array on the stack. |
Object model instruction |
0x8F |
ldelema <class> |
Load the address of element at index onto the top of the stack. |
Object model instruction |
0x90 |
ldelem.i1 |
Load the element with type int8 at index onto the top of the stack as an int32. |
Object model instruction |
0x91 |
ldelem.u1 |
Load the element with type unsigned int8 at index onto the top of the stack as an int32. |
Object model instruction |
0x92 |
ldelem.i2 |
Load the element with type int16 at index onto the top of the stack as an int32. |
Object model instruction |
0x93 |
ldelem.u2 |
Load the element with type unsigned int16 at index onto the top of the stack as an int32. |
Object model instruction |
0x94 |
ldelem.i4 |
Load the element with type int32 at index onto the top of the stack as an int32. |
Object model instruction |
0x95 |
ldelem.u4 |
Load the element with type unsigned int32 at index onto the top of the stack as an int32. |
Object model instruction |
0x96 |
ldelem.i8 |
Load the element with type int64 at index onto the top of the stack as an int64. |
Object model instruction |
0x96 |
ldelem.u8 |
Load the element with type unsigned int64 at index onto the top of the stack as an int64 (alias for ldelem.i8). |
Object model instruction |
0x97 |
ldelem.i |
Load the element with type native int at index onto the top of the stack as a native int. |
Object model instruction |
0x98 |
ldelem.r4 |
Load the element with type float32 at index onto the top of the stack as an F |
Object model instruction |
0x99 |
ldelem.r8 |
Load the element with type float64 at index onto the top of the stack as an F. |
Object model instruction |
0x9A |
ldelem.ref |
Load the element at index onto the top of the stack as an O. The type of the O is the same as the element type of the array pushed on the CIL stack. |
Object model instruction |
0x9B |
stelem.i |
Replace array element at index with the i value on the stack. |
Object model instruction |
0x9C |
stelem.i1 |
Replace array element at index with the int8 value on the stack. |
Object model instruction |
0x9D |
stelem.i2 |
Replace array element at index with the int16 value on the stack. |
Object model instruction |
0x9E |
stelem.i4 |
Replace array element at index with the int32 value on the stack. |
Object model instruction |
0x9F |
stelem.i8 |
Replace array element at index with the int64 value on the stack. |
Object model instruction |
0xA0 |
stelem.r4 |
Replace array element at index with the float32 value on the stack. |
Object model instruction |
0xA1 |
stelem.r8 |
Replace array element at index with the float64 value on the stack. |
Object model instruction |
0xA2 |
stelem.ref |
Replace array element at index with the ref value on the stack. |
Object model instruction |
0xA3 |
ldelem <typeTok> |
Load the element at index onto the top of the stack. |
Object model instruction |
0xA4 |
stelem <typeTok> |
Replace array element at index with the value on the stack |
Object model instruction |
0xA5 |
unbox.any <typeTok> |
Extract a value-type from obj, its boxed representation |
Object model instruction |
0xB3 |
conv.ovf.i1 |
Convert to an int8 (on the stack as int32) and throw an exception on overflow. |
Base instruction |
0xB4 |
conv.ovf.u1 |
Convert to an unsigned int8 (on the stack as int32) and throw an exception on overflow. |
Base instruction |
0xB5 |
conv.ovf.i2 |
Convert to an int16 (on the stack as int32) and throw an exception on overflow. |
Base instruction |
0xB6 |
conv.ovf.u2 |
Convert to an unsigned int16 (on the stack as int32) and throw an exception on overflow. |
Base instruction |
0xB7 |
conv.ovf.i4 |
Convert to an int32 (on the stack as int32) and throw an exception on overflow. |
Base instruction |
0xB8 |
conv.ovf.u4 |
Convert to an unsigned int32 (on the stack as int32) and throw an exception on overflow. |
Base instruction |
0xB9 |
conv.ovf.i8 |
Convert to an int64 (on the stack as int64) and throw an exception on overflow. |
Base instruction |
0xBA |
conv.ovf.u8 |
Convert to an unsigned int64 (on the stack as int64) and throw an exception on overflow. |
Base instruction |
0xC2 |
refanyval <type> |
Push the address stored in a typed reference. |
Object model instruction |
0xC3 |
ckfinite |
Throw ArithmeticException if value is not a finite number. |
Base instruction |
0xC6 |
mkrefany <class> |
Push a typed reference to ptr of type class onto the stack. |
Object model instruction |
0xD0 |
ldtoken <token> |
Convert metadata token to its runtime representation. |
Object model instruction |
0xD1 |
conv.u2 |
Convert to unsigned int16, pushing int32 on stack. |
Base instruction |
0xD2 |
conv.u1 |
Convert to unsigned int8, pushing int32 on stack. |
Base instruction |
0xD3 |
conv.i |
Convert to native int, pushing native int on stack. |
Base instruction |
0xD4 |
conv.ovf.i |
Convert to a native int (on the stack as native int) and throw an exception on overflow. |
Base instruction |
0xD5 |
conv.ovf.u |
Convert to a native unsigned int (on the stack as native int) and throw an exception on overflow. |
Base instruction |
0xD6 |
add.ovf |
Add signed integer values withoverflow check. |
Base instruction |
0xD7 |
add.ovf.un |
Add unsigned integer values withoverflow check. |
Base instruction |
0xD8 |
mul.ovf |
Multiply signed integer values. Signed result shall fit in same size |
Base instruction |
0xD9 |
mul.ovf.un |
Multiply unsigned integer values. Unsigned result shall fit in same size |
Base instruction |
0xDA |
sub.ovf |
Subtract native int from a native int. Signed result shall fit in same size |
Base instruction |
0xDB |
sub.ovf.un |
Subtract native unsigned int from a native unsigned int. Unsigned result shall fit in same size. |
Base instruction |
0xDC |
endfault |
End fault clause of an exception block. |
Base instruction |
0xDC |
endfinally |
End finally clause of an exception block. |
Base instruction |
0xDD |
leave <int32 (target)> |
Exit a protected region of code. |
Base instruction |
0xDE |
leave.s <int8 (target)> |
Exit a protected region of code, short form. |
Base instruction |
0xDF |
stind.i |
Store value of type native int into memory at address |
Base instruction |
0xE0 |
conv.u |
Convert to native unsigned int, pushing native int on stack. |
Base instruction |
0xFE 0x00 |
arglist |
Return argument list handle for the current method. |
Base instruction |
0xFE 0x01 |
ceq |
Push 1 (of type int32) if value1 equals value2, else push 0. |
Base instruction |
0xFE 0x02 |
cgt |
Push 1 (of type int32) if value1 > value2, else push 0. |
Base instruction |
0xFE 0x03 |
cgt.un |
Push 1 (of type int32) if value1 > value2, unsigned or unordered, else push 0. |
Base instruction |
0xFE 0x04 |
clt |
Push 1 (of type int32) if value1 < value2, else push 0. |
Base instruction |
0xFE 0x05 |
clt.un |
Push 1 (of type int32) if value1 < value2, unsigned or unordered, else push 0. |
Base instruction |
0xFE 0x06 |
ldftn <method> |
Push a pointer to a method referenced by method, on the stack. |
Base instruction |
0xFE 0x07 |
ldvirtftn <method> |
Push address of virtual method on the stack. |
Object model instruction |
0xFE 0x09 |
ldarg <uint16 (num)> |
Load argument numbered num onto the stack. |
Base instruction |
0xFE 0x0A |
ldarga <uint16 (argNum)> |
Fetch the address of argument argNum. |
Base instruction |
0xFE 0x0B |
starg <uint16 (num)> |
Store value to the argument numbered num. |
Base instruction |
0xFE 0x0C |
ldloc <uint16 (indx)> |
Load local variable of index indx onto stack. |
Base instruction |
0xFE 0x0D |
ldloca <uint16 (indx)> |
Load address of local variable with index indx. |
Base instruction |
0xFE 0x0E |
stloc <uint16 (indx)> |
Pop a value from stack into local variable indx. |
Base instruction |
0xFE 0x0F |
localloc |
Allocate space from the local memory pool. |
Base instruction |
0xFE 0x11 |
endfilter |
End an exception handling filter clause. |
Base instruction |
0xFE 0x12 |
unaligned. (alignment) |
Subsequent pointer instruction might be unaligned. |
Prefix to instruction |
0xFE 0x13 |
volatile. |
Subsequent pointer reference isvolatile. |
Prefix to instruction |
0xFE 0x14 |
tail. |
Subsequent call terminates current method |
Prefix to instruction |
0xFE 0x15 |
initobj <typeTok> |
Initialize the value at address dest. |
Object model instruction |
0xFE 0x16 |
constrained. <thisType> |
Call a virtual method on a type constrained to be type T |
Prefix to instruction |
0xFE 0x17 |
cpblk |
Copy data from memory to memory. |
Base instruction |
0xFE 0x18 |
initblk |
Set all bytes in a block of memory to a given byte value. |
Base instruction |
0xFE 0x19 |
no. { typecheck, rangecheck, nullcheck } |
The specified fault check(s) normally performed as part of the execution of the subsequent instruction can/shall be skipped. |
Prefix to instruction |
0xFE 0x1A |
rethrow |
Rethrow the current exception. |
Object model instruction |
0xFE 0x1C |
sizeof <typeTok> |
Push the size, in bytes, of a type as an unsigned int32. |
Object model instruction |
0xFE 0x1D |
refanytype |
Push the type token stored in a typed reference. |
Object model instruction |
0xFE 0x1E |
readonly. |
Specify that the subsequent array address operation performs no type check at runtime, and that it returns a controlled-mutability managed pointer |
Prefix to instruction |