MSIL指令表
- 格式:doc
- 大小:162.50 KB
- 文档页数:6
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
conv.ovf.<to type>.un
unsigned data conversion with overflow detection
…, value…, result
30
cpblk
copy data from memory to memory
…, destaddr, srcaddr, size…
…, value1, value2…, result
3
and
bitwise AND
…, value1, value2…, result
4
arglist
get argument list
……, argListHandle
5
beq.<length>
branch on equal
…, value1, value2…
…, value, shiftAmount…, result
59
shr
shift integer right
…, value, shiftAmount…, result
60
shr.un
shift integer right, unsigned
…, value, shiftAmount…, result
…,…
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
40
ldc.<type>
load numeric constant
……, num
41
ldftn
load method pointer
……, ftn
42
ldind.<type>
load value indirect onto the stack
…, c
load local variable onto the stack
…,
47
localloc
allocate space in the local dynamic memory pool
sizeaddress
48
mul
multiply values
…, value1, value2…, result
49
mul.ovf<type>
multiply integer values with overflow check
…, 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
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
MSIL指令速查表
最初阅读IL的时候,很多指令会记不住,你把以下这两个表格打印下来,备在案前,可供速查!
最初我阅读IL时,就是这么做的。后来我教别人反编译,都要别人先打印这份表格。
自己查文档也可以获得一下资料。不过,或许我整理的这个表格,速查更方便!
下载地址:/jobs/msil.rar
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>
…, 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
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
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
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)
……, 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
…, value…
64
sub
substract numeric values
…, value1, value2…, result
65
sub.ovf.<type>
substract integer values, checking for overflow
…, value1, value2…, result
…, 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 numberargNum
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
15
ldstr
load a literal string
Base Instructions
Instruction
Description
Stack Transition
1
add
add two values, returning a new value
…, value1, value2…, result
2
add.ovf.<signed>