MSIL指令速 查表
MSIL指令速 查表
下载地址:https://files.cnblogs.com/jobs/msil.rar
Base Instructions
|
| Instruction | Description | Stack Transition |
| 1 | add | add two values, returning a new value | …, value1, value2à…, result |
| 2 | add.ovf.<signed> | add integer value with overflow check | …, value1, value2à…, result |
| 3 | and | bitwise AND | …, value1, value2 à…, result |
| 4 | arglist | get argument list | … à …, argListHandle |
| 5 | beq.<length> | branch on equal | …, value1, value2 à … |
| 6 | bge.<length> | branch on greater than or equal to | …, value1, value2 à … |
| 7 | bge.un.<length> | branch on greater/equal, unsigned or unordered | …, value1, value2 à … |
| 8 | bgt.<length> | branch on greater than | …, value1, value2 à … |
| 9 | bgt.un<length> | branch on greater than, unsigned or unordered | …, value1, value2 à … |
| 10 | ble.<length> | branch on less than or equal to | …, value1, value2 à … |
| 11 | ble..un<length> | branch on less/equal, unsigned or unordered | …, value1, value2 à … |
| 12 | blt.<length> | branch on less than | …, value1, value2 à … |
| 13 | blt.un.<length> | branch on less than, unsigned or unordered | …, value1, value2 à … |
| 14 | bne.un<length> | branch on not equal or unorded | …, value1, value2 à … |
| 15 | br.<length> | unconditional branch | …, à … |
| 16 | break | breakpoint instruction | …, à … |
| 17 | brfalse.<length> | branch on false, null, or zero | …, value à … |
| 18 | brtrue.<length> | branch on non-false or non-null | …, value à … |
| 19 | call | call a method | …, arg1, arg2 … argn à …, retVal (not always returned) |
| 20 | calli | indirect method call | …, arg1, arg2 … argn, ftn à …, retVal (not always returned) |
| 21 | ceq | compare equal | …, value1, value2à…, result |
| 22 | cgt | compare greater than | …, value1, value2à…, result |
| 23 | cgt.un | compare greater than, unsigned or unordered | …, value1, value2à…, result |
| 24 | ckfinite | check for a finite real number | …, value à …, value |
| 25 | clt | compare less than | …, value1, value2à…, result |
| 26 | clt.un | compare less than, unsigned or unordered | …, value1, value2à…, result |
| 27 | conv.<to type> | data conversion | …, value à …, result |
| 28 | conv.ovf<to type> | data conversion with overflow detection | …, value à …, result |
| 29 | conv.ovf.<to type>.un | unsigned data conversion with overflow detection | …, value à …, result |
| 30 | cpblk | copy data from memory to memory | …, destaddr, srcaddr, size à … |
| 31 | div | divide values | …, value1, value2à…, result |
| 32 | div.un | divide integer values, unsigned | …, value1, value2à…, result |
| 33 | dup | duplicate the top value of the stack | …, value à …, value, value |
| 34 | endfilter | end filter clause of SEH | …, value à … |
| 35 | endfinally | end the finally or fault clause of exception block | … à … |
| 36 | initblk | initialize a block of memory to a value | …, addr, value, size à … |
| 37 | jmp | jump to method | … à … |
| 38 | ldarg.<length> | load argument onto the stack | … à …, value |
| 39 | ldarga.<length> | load an argument address | …, à …, address of argument number argNum |
| 40 | ldc.<type> | load numeric constant | … à …, num |
| 41 | ldftn | load method pointer | … à …, ftn |
| 42 | ldind.<type> | load value indirect onto the stack | …, addr à …, value |
| 43 | ldloc | load local variable onto the stack | … à …, value |
| 44 | ldloca.<length> | load local variable address | … à …, address |
| 45 | ldnull | load a null pointer | … à …, null value |
| 46 | leave.<length> | exit a protected region of code | …, à |
| 47 | localloc | allocate space in the local dynamic memory pool | size à address |
| 48 | mul | multiply values | …, value1, value2 à …, result |
| 49 | mul.ovf<type> | multiply integer values with overflow check | …, value1, value2 à …, result |
| 50 | neg | negate | …, value à …, result |
| 51 | nop | no operation | …, à …, |
| 52 | not | bitwise complement | …, value à …, result |
| 53 | or | bitwise OR | …, value1, value2 à …, result |
| 54 | pop | remove the top element of the stack | …, value à … |
| 55 | rem | compute the remainder | …, value1, value2 à …, result |
| 56 | rem.un | compute integer remainder, unsigned | …, value1, value2 à …, result |
| 57 | ret | return from method | retVal on callee evaluation stack (not always present) à …, retVal on caller evaluation stack (not always present) |
| 58 | shl | shift integer left | …, value, shiftAmount à …, result |
| 59 | shr | shift integer right | …, value, shiftAmount à …, result |
| 60 | shr.un | shift integer right, unsigned | …, value, shiftAmount à …, result |
| 61 | starg.<length> | store a value in an argument slot | …, value à …, |
| 62 | stind.<type> | store value indirect from stack | …, addr, val à … |
| 63 | stloc | pop value from stack to local variable | …, value à … |
| 64 | sub | substract numeric values | …, value1, value2 à …, result |
| 65 | sub.ovf.<type> | substract integer values, checking for overflow | …, value1, value2 à …, result |
| 66 | switch | table switch on value | …, value à …, |
| 67 | xor | bitwise XOR | ..., value1, value2 à ..., result |
Object Model Instructions
Instruction
Description
Stack Transition
1
box
convert value type to object reference
…, valueType à …, obj
2
callvirt
call a method associated, a runtime, with an object
…, obj, arg1, … argN à …, returnVal (not always returned)
3
cast class
cast an object to a class
…, obj à …, obj2
4
cpobj
copy a value type
…, destValObj, srcValObj à …,
5
initobj
Initialize a value type
…,addrOfValObj à …,
6
isinst
test if an object is is an instance of a class or interface
…, obj à …, result
7
ldelem.<type>
load an element fo an array
…, array, index à …, value
8
ldelema
load address of an element of an array
…, array, index à …, address
9
ldfld
load field of an object
…, obj à …, value
10
ldflda
load field address
…, obj à …, address
11
ldlen
load the length of an array
…, array à …, length
12
ldobj
copy value type to the stack
…, addrOfValObj à …, valObj
13
ldsfld
load static field of a class
…, à …, value
14
ldsflda
load static field address
…, à …, address
15
ldstr
load a literal string
…, à …, string
16
ldtoken
load the runtime representation of metadata token
… à …, RuntimeHandle
17
ldvirtfn
load a virtual method pointer
… object à …, ftn
18
mkrefany
push a typed reference on the stack
…, ptr à …, typedRef
19
newarr
Create a zero-base, on-dimensional array
…, numElems à …, array
20
newobj
create a new object
…, arg1, … argN à …, obj
21
refanytype
load the type out of a typed reference
…, TypedRef à …, type
22
refanyval
load the address out of a typed reference
…, TypedRef à …, address
23
rethrow
rethrow the current exception
…, à …,
24
sizeof
load the size in bytes of a value type
…, à …, size (4 bytes, unsigned)
25
stelem.<type>
store an element of an array
…, array, index, value à …,
26
stfld
store into a field of an object
…, obj, value à …,
27
stobj
store a value type from the stack into memory
…, addr, valObj à …,
28
stsfld
store a static field of class
…, val à …,
29
throw
throw an exception
…, object à …,
30
unbox
convert boxed value type to its raw form
Instruction
Description
Stack Transition
1
box
convert value type to object reference
…, valueType à …, obj
2
callvirt
call a method associated, a runtime, with an object
…, obj, arg1, … argN à …, returnVal (not always returned)
3
cast class
cast an object to a class
…, obj à …, obj2
4
cpobj
copy a value type
…, destValObj, srcValObj à …,
5
initobj
Initialize a value type
…,addrOfValObj à …,
6
isinst
test if an object is is an instance of a class or interface
…, obj à …, result
7
ldelem.<type>
load an element fo an array
…, array, index à …, value
8
ldelema
load address of an element of an array
…, array, index à …, address
9
ldfld
load field of an object
…, obj à …, value
10
ldflda
load field address
…, obj à …, address
11
ldlen
load the length of an array
…, array à …, length
12
ldobj
copy value type to the stack
…, addrOfValObj à …, valObj
13
ldsfld
load static field of a class
…, à …, value
14
ldsflda
load static field address
…, à …, address
15
ldstr
load a literal string
…, à …, string
16
ldtoken
load the runtime representation of metadata token
… à …, RuntimeHandle
17
ldvirtfn
load a virtual method pointer
… object à …, ftn
18
mkrefany
push a typed reference on the stack
…, ptr à …, typedRef
19
newarr
Create a zero-base, on-dimensional array
…, numElems à …, array
20
newobj
create a new object
…, arg1, … argN à …, obj
21
refanytype
load the type out of a typed reference
…, TypedRef à …, type
22
refanyval
load the address out of a typed reference
…, TypedRef à …, address
23
rethrow
rethrow the current exception
…, à …,
24
sizeof
load the size in bytes of a value type
…, à …, size (4 bytes, unsigned)
25
stelem.<type>
store an element of an array
…, array, index, value à …,
26
stfld
store into a field of an object
…, obj, value à …,
27
stobj
store a value type from the stack into memory
…, addr, valObj à …,
28
stsfld
store a static field of class
…, val à …,
29
throw
throw an exception
…, object à …,
30
unbox
convert boxed value type to its raw form
浙公网安备 33010602011771号