MSIL指令\操作\Opcode对照表 | ||||
Opcode | 名称 | 参数 | 弹出(Pop) | 压入(Push) |
00 | nop | |||
01 | break | |||
02 | ldarg.0 | * | ||
03 | ldarg.1 | * | ||
04 | ldarg.2 | * | ||
05 | ldarg.3 | * | ||
06 | ldloc.0 | * | ||
07 | ldloc.1 | * | ||
08 | ldloc.2 | * | ||
09 | ldloc.3 | * | ||
0A | stloc.0 | * | ||
0B | stloc.1 | * | ||
0C | stloc.2 | * | ||
0D | stloc.3 | * | ||
0E | ldarg.s | uint8 | * | |
0F | ldarga.s | uint8 | & | |
10 | starg.s | uint8 | * | |
11 | ldloc.s | uint8 | * | |
12 | ldloca.s | uint8 | & | |
13 | stloc.s | uint8 | * | |
14 | ldnull | &=0 | ||
15 | ldc.i4.m1,ldc.i4.M1 | int32=–1 | ||
16 | ldc.i4.0 | int32=0 | ||
17 | ldc.i4.1 | int32=1 | ||
18 | ldc.i4.2 | int32=2 | ||
19 | ldc.i4.3 | int32=3 | ||
1A | ldc.i4.4 | int32=4 | ||
1B | ldc.i4.5 | int32=5 | ||
1C | ldc.i4.6 | int32=6 | ||
1D | ldc.i4.7 | int32=7 | ||
1E | ldc.i4.8 | int32=8 | ||
1F | ldc.i4.s | int8 | int32 | |
20 | ldc.i4 | int32 | int32 | |
21 | ldc.i8 | int64 | int64 | |
22 | ldc.r4 | float32 | Float | |
23 | ldc.r8 | float64 | Float | |
25 | dup | * | *,* | |
26 | pop | * | ||
27 | jmp | <Method> | ||
28 | call | <Method> | N个参数 | Ret.value |
29 | calli | <Signature> | N个参数 | Ret.value |
2A | ret | * | ||
2B | br.s | int8 | ||
2C | brfalse.s,brnull.s,brzero.s | int8 | int32 | |
2D | brtrue.s,brinst.s | int8 | int32 | |
2E | beq.s | int8 | *,* | |
2F | bge.s | int8 | *,* | |
30 | bgt.s | int8 | *,* | |
31 | ble.s | int8 | *,* | |
32 | blt.s | int8 | *,* | |
33 | bne.un.s | int8 | *,* | |
34 | bge.un.s | int8 | *,* | |
35 | bgt.un.s | int8 | *,* | |
36 | ble.un.s | int8 | *,* | |
37 | blt.un.s | int8 | *,* | |
38 | br | int32 | ||
39 | brfalse,brnull,brzero | int32 | int32 | |
3A | brtrue,brinst | int32 | int32 | |
3B | beq | int32 | *,* | |
3C | bge | int32 | *,* | |
3D | bgt | int32 | *,* | |
3E | ble | int32 | *,* | |
3F | blt | int32 | *,* | |
40 | bne.un | int32 | *,* | |
41 | bge.un | int32 | *,* | |
42 | bgt.un | int32 | *,* | |
43 | ble.un | int32 | *,* | |
44 | blt.un | int32 | *,* | |
45 | switch | (uint32=N)+N(int32) | int32 | |
46 | ldind.i1 | & | int32 | |
47 | ldind.u1 | & | int32 | |
48 | ldind.i2 | & | int32 | |
49 | ldind.u2 | & | int32 | |
4A | ldind.i4 | & | int32 | |
4B | ldind.u4 | & | int32 | |
4C | ldind.i8,ldind.u8 | & | int64 | |
4D | ldind.i | & | int32 | |
4E | ldind.r4 | & | Float | |
4F | ldind.r8 | & | Float | |
50 | ldind.ref | & | & | |
51 | stind.ref | &,& | ||
52 | stind.i1 | int32,& | ||
53 | stind.i2 | int32,& | ||
54 | stind.i4 | int32,& | ||
55 | stind.i8 | int32,& | ||
56 | stind.r4 | Float,& | ||
57 | stind.r8 | Float,& | ||
58 | add | *,* | * | |
59 | sub | *,* | * | |
5A | mul | *,* | * | |
5B | div | *,* | * | |
5C | div.un | *,* | * | |
5D | rem | *,* | * | |
5E | rem.un | *,* | * | |
5F | and | *,* | * | |
60 | or | *,* | * | |
61 | xor | *,* | * | |
62 | shl | *,* | * | |
63 | shr | *,* | * | |
64 | shr.un | *,* | * | |
65 | neg | * | * | |
66 | not | * | * | |
67 | conv.i1 | * | int32 | |
68 | conv.i2 | * | int32 | |
69 | conv.i4 | * | int32 | |
6A | conv.i8 | * | int64 | |
6B | conv.r4 | * | Float | |
6C | conv.r8 | * | Float | |
6D | conv.u4 | * | int32 | |
6E | conv.u8 | * | int64 | |
6F | callvirt | <Method> | N个参数 | Ret.value |
70 | cpobj | <Type> | &,& | |
71 | ldobj | <Type> | & | * |
72 | ldstr | <String> | o | |
73 | newobj | <Method> | N个参数 | o |
74 | castclass | <Type> | o | o |
75 | isinst | <Type> | o | int32 |
76 | conv.r.un | * | Float | |
79 | unbox | <Type> | o | & |
7A | throw | o | ||
7B | ldfld | <Field> | o/&/* | * |
7C | ldflda | <Field> | o/& | & |
7D | stfld | <Field> | o/&,* | |
7E | ldsfld | <Field> | * | |
7F | ldsflda | <Field> | & | |
80 | stsfld | <Field> | * | |
81 | stobj | <Type> | &,* | |
82 | conv.ovf.i1.un | * | int32 | |
83 | conv.ovf.i2.un | * | int32 | |
84 | conv.ovf.i4.un | * | int32 | |
85 | conv.ovf.i8.un | * | int64 | |
86 | conv.ovf.u1.un | * | int32 | |
87 | conv.ovf.u2.un | * | int32 | |
88 | conv.ovf.u4.un | * | int32 | |
89 | conv.ovf.u8.un | * | int64 | |
8A | conv.ovf.i.un | * | int32 | |
8B | conv.ovf.u.un | * | int64 | |
8C | box | <Type> | * | o |
8D | newarr | <Type> | int32 | o |
8E | ldlen | o | int32 | |
8F | ldelema | <Type> | int32,o | & |
90 | ldelem.i1 | int32,o | int32 | |
91 | ldelem.u1 | int32,o | int32 | |
92 | ldelem.i2 | int32,o | int32 | |
93 | ldelem.u2 | int32,o | int32 | |
94 | ldelem.i4 | int32,o | int32 | |
95 | ldelem.u4 | int32,o | int32 | |
96 | ldelem.i8,ldelem.u8 | int32,o | int64 | |
97 | ldelem.i | int32,o | int32 | |
98 | ldelem.r4 | int32,o | Float | |
99 | ldelem.r8 | int32,o | Float | |
9A | ldelem.ref | int32,o | o/& | |
9B | stelem.i | int32,int32,o | ||
9C | stelem.i1 | int32,int32,o | ||
9D | stelem.i2 | int32,int32,o | ||
9E | stelem.i4 | int32,int32,o | ||
9F | stelem.i8 | int64,int32,o | ||
A0 | stelem.r4 | Float,int32,o | ||
A1 | stelem.r8 | Float,int32,o | ||
A2 | stelem.ref | o/&,int32,o | ||
A3 | ldelem,ldelem.any | <Type> | int32,o | * |
A4 | stelem,stelem.any | <Type> | o/&,int32,o | |
A5 | unbox.any | <Type> | o | * |
B3 | conv.ovf.i1 | * | int32 | |
B4 | conv.ovf.u1 | * | int32 | |
B5 | conv.ovf.i2 | * | int32 | |
B6 | conv.ovf.u2 | * | int32 | |
B7 | conv.ovf.i4 | * | int32 | |
B8 | conv.ovf.u4 | * | int32 | |
B9 | conv.ovf.i8 | * | int64 | |
BA | conv.ovf.u8 | * | int64 | |
C2 | refanyval | <Type> | * | & |
C3 | ckfinite | * | Float | |
C6 | mkrefany | <Type> | & | & |
D0 | ldtoken | <Type>/<Field>/<Method> | & | |
D1 | conv.u2 | * | int32 | |
D2 | conv.u1 | * | int32 | |
D3 | conv.i | * | int32 | |
D4 | conv.ovf.i | * | int32 | |
D5 | conv.ovf.u | * | int32 | |
D6 | add.ovf | *,* | * | |
D7 | add.ovf.un | *,* | * | |
D8 | mul.ovf | *,* | * | |
D9 | mul.ovf.un | *,* | * | |
DA | sub.ovf | *,* | * | |
DB | sub.ovf.un | *,* | * | |
DC | endfinally,endfault | |||
DD | leave | int32 | ||
DE | leave.s | int8 | ||
DF | stind.i | int32,& | ||
E0 | conv.u | * | int32 | |
FE00 | arglist | * | & | |
FE01 | ceq | *,* | int32 | |
FE02 | cgt | *,* | int32 | |
FE03 | cgt.un | *,* | int32 | |
FE04 | clt | *,* | int32 | |
FE05 | clt.un | *,* | int32 | |
FE06 | ldftn | <Method> | & | |
FE07 | ldvirtftn | <Method> | o | & |
FE09 | ldarg | uint32 | * | |
FE0A | ldarga | uint32 | & | |
FE0B | starg | uint32 | * | |
FE0C | ldloc | uint32 | * | |
FE0D | ldloca | uint32 | & | |
FE0E | stloc | uint32 | * | |
FE0F | localloc | int32 | & | |
FE11 | endfilter | int32 | ||
FE12 | unaligned. | uint8 | ||
FE13 | volatile. | |||
FE14 | tail. | |||
FE15 | initobj | <Type> | & | |
FE16 | constrained. | <Type> | ||
FE17 | cpblk | int32,&,& | ||
FE18 | initblk | int32,int32,& | ||
FE1A | rethrow | |||
FE1C | sizeof | <Type> | int32 | |
FE1D | refanytype | * | & | |
FE1E | readonly. | |||