| 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. | |||
浙公网安备 33010602011771号