最初阅读IL的时候,很多指令会记不住,你把以下这两个表格打印下来,备在案前,可供速查!
最初我阅读IL时,就是这么做的。后来我教别人反编译,都要别人先打印这份表格。
自己查文档也可以获得一下资料。不过,或许我整理的这个表格,速查更方便!
下载地址:http://www.cnblogs.com/Files/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
转载:http://www.cnblogs.com/jobs/archive/2004/07/21/26022.aspx