MSIL指令速查表

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
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值