Skip to content

Instantly share code, notes, and snippets.

@kumpera
Created July 23, 2018 15:16
Show Gist options
  • Save kumpera/5251a91b2a2e4a69fa18d20a50080f8c to your computer and use it in GitHub Desktop.
Save kumpera/5251a91b2a2e4a69fa18d20a50080f8c to your computer and use it in GitHub Desktop.
using System;
namespace SimpleJit.CIL
{
public enum Opcode : byte
{
Nop = 0x00,
Break = 0x01,
Ldarg0 = 0x02,
Ldarg1 = 0x03,
Ldarg2 = 0x04,
Ldarg3 = 0x05,
Ldloc0 = 0x06,
Ldloc1 = 0x07,
Ldloc2 = 0x08,
Ldloc3 = 0x09,
Stloc0 = 0x0a,
Stloc1 = 0x0b,
Stloc2 = 0x0c,
Stloc3 = 0x0d,
LdargS = 0x0e,
LdargaS = 0x0f,
StargS = 0x10,
LdlocS = 0x11,
LdlocaS = 0x12,
StlocS = 0x13,
Ldnull = 0x14,
LdcI4M1 = 0x15,
LdcI4_0 = 0x16,
LdcI4_1 = 0x17,
LdcI4_2 = 0x18,
LdcI4_3 = 0x19,
LdcI4_4 = 0x1a,
LdcI4_5 = 0x1b,
LdcI4_6 = 0x1c,
LdcI4_7 = 0x1d,
LdcI4_8 = 0x1e,
LdcI4S = 0x1f,
LdcI4 = 0x20,
LdcI8 = 0x21,
LdcR4 = 0x22,
LdcR8 = 0x23,
Dup = 0x25,
Pop = 0x26,
Jmp = 0x27,
Call = 0x28,
Calli = 0x29,
Ret = 0x2a,
BrS = 0x2b,
BrfalseS = 0x2c,
BrtrueS = 0x2d,
BeqS = 0x2e,
BgeS = 0x2f,
BgtS = 0x30,
BleS = 0x31,
BltS = 0x32,
BneUnS = 0x33,
BgeUnS = 0x34,
BgtUnS = 0x35,
BleUnS = 0x36,
BltUnS = 0x37,
Br = 0x38,
Brfalse = 0x39,
Brtrue = 0x3a,
Beq = 0x3b,
Bge = 0x3c,
Bgt = 0x3d,
Ble = 0x3e,
Blt = 0x3f,
BneUn = 0x40,
BgeUn = 0x41,
BgtUn = 0x42,
BleUn = 0x43,
BltUn = 0x44,
Switch = 0x45,
LdindI1 = 0x46,
LdindU1 = 0x47,
LdindI2 = 0x48,
LdindU2 = 0x49,
LdindI4 = 0x4a,
LdindU4 = 0x4b,
LdindI8 = 0x4c,
LdindI = 0x4d,
LdindR4 = 0x4e,
LdindR8 = 0x4f,
LdindRef = 0x50,
StindRef = 0x51,
StindI1 = 0x52,
StindI2 = 0x53,
StindI4 = 0x54,
StindI8 = 0x55,
StindR4 = 0x56,
StindR8 = 0x57,
Add = 0x58,
Sub = 0x59,
Mul = 0x5a,
Div = 0x5b,
DivUn = 0x5c,
Rem = 0x5d,
RemUn = 0x5e,
And = 0x5f,
Or = 0x60,
Xor = 0x61,
Shl = 0x62,
Shr = 0x63,
ShrUn = 0x64,
Neg = 0x65,
Not = 0x66,
ConvI1 = 0x67,
ConvI2 = 0x68,
ConvI4 = 0x69,
ConvI8 = 0x6a,
ConvR4 = 0x6b,
ConvR8 = 0x6c,
ConvU4 = 0x6d,
ConvU8 = 0x6e,
Callvirt = 0x6f,
Cpobj = 0x70,
Ldobj = 0x71,
Ldstr = 0x72,
Newobj = 0x73,
Castclass = 0x74,
Isinst = 0x75,
ConvRUn = 0x76,
Unbox = 0x79,
Throw = 0x7a,
Ldfld = 0x7b,
Ldflda = 0x7c,
Stfld = 0x7d,
Ldsfld = 0x7e,
Ldsflda = 0x7f,
Stsfld = 0x80,
Stobj = 0x81,
ConvOvfI1Un = 0x82,
ConvOvfI2Un = 0x83,
ConvOvfI4Un = 0x84,
ConvOvfI8Un = 0x85,
ConvOvfU1Un = 0x86,
ConvOvfU2Un = 0x87,
ConvOvfU4Un = 0x88,
ConvOvfU8Un = 0x89,
ConvOvfIUn = 0x8a,
ConvOvfUUn = 0x8b,
Box = 0x8c,
Newarr = 0x8d,
Ldlen = 0x8e,
Ldelema = 0x8f,
LdelemI1 = 0x90,
LdelemU1 = 0x91,
LdelemI2 = 0x92,
LdelemU2 = 0x93,
LdelemI4 = 0x94,
LdelemU4 = 0x95,
LdelemI8 = 0x96,
LdelemI = 0x97,
LdelemR4 = 0x98,
LdelemR8 = 0x99,
LdelemRef = 0x9a,
StelemI = 0x9b,
StelemI1 = 0x9c,
StelemI2 = 0x9d,
StelemI4 = 0x9e,
StelemI8 = 0x9f,
StelemR4 = 0xa0,
StelemR8 = 0xa1,
StelemRef = 0xa2,
LdelemAny = 0xa3,
StelemAny = 0xa4,
UnboxAny = 0xa5,
ConvOvfI1 = 0xb3,
ConvOvfU1 = 0xb4,
ConvOvfI2 = 0xb5,
ConvOvfU2 = 0xb6,
ConvOvfI4 = 0xb7,
ConvOvfU4 = 0xb8,
ConvOvfI8 = 0xb9,
ConvOvfU8 = 0xba,
Refanyval = 0xc2,
Ckfinite = 0xc3,
Mkrefany = 0xc6,
Ldtoken = 0xd0,
ConvU2 = 0xd1,
ConvU1 = 0xd2,
ConvI = 0xd3,
ConvOvfI = 0xd4,
ConvOvfU = 0xd5,
AddOvf = 0xd6,
AddOvfUn = 0xd7,
MulOvf = 0xd8,
MulOvfUn = 0xd9,
SubOvf = 0xda,
SubOvfUn = 0xdb,
Endfinally = 0xdc,
Leave = 0xdd,
LeaveS = 0xde,
StindI = 0xdf,
ConvU = 0xe0,
ExtendedPrefix = 0xFE
}
public enum ExtendedOpcode : byte
{
Arglist = 0x00,
Ceq = 0x01,
Cgt = 0x02,
CgtUn = 0x03,
Clt = 0x04,
CltUn = 0x05,
Ldftn = 0x06,
Ldvirtftn = 0x07,
Ldarg = 0x09,
Ldarga = 0x0a,
Starg = 0x0b,
Ldloc = 0x0c,
Ldloca = 0x0d,
Stloc = 0x0e,
Localloc = 0x0f,
Endfilter = 0x11,
Unaligned = 0x12,
Volatile = 0x13,
Tail = 0x14,
Initobj = 0x15,
Constrained = 0x16,
Cpblk = 0x17,
Initblk = 0x18,
No = 0x19,
Rethrow = 0x1a,
Sizeof = 0x1c,
Refanytype = 0x1d,
Readonly = 0x1e,
}
public static class TraitsLookup {
private static OpcodeTraits[] traits;
private static OpcodeTraits[] extendedTraits;
public static void Decode (byte opcode, out OpcodeTraits res) {
if (opcode > 224)
res = new OpcodeTraits (OpcodeFlags.Invalid, null, opcode, false);
else
res = traits [opcode];
}
public static void DecodeExtended (byte opcode, out OpcodeTraits res) {
if (opcode > 30)
res = new OpcodeTraits (OpcodeFlags.Invalid, null, opcode, true);
else
res = extendedTraits [opcode];
}
static TraitsLookup() {
traits = new OpcodeTraits [225];
extendedTraits = new OpcodeTraits [31];
traits [0x00] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Nop", 0x00, false );
traits [0x01] = new OpcodeTraits (OpcodeFlags.Break | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Break", 0x01, false );
traits [0x02] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "Ldarg0", 0x02, false );
traits [0x03] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "Ldarg1", 0x03, false );
traits [0x04] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "Ldarg2", 0x04, false );
traits [0x05] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "Ldarg3", 0x05, false );
traits [0x06] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "Ldloc0", 0x06, false );
traits [0x07] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "Ldloc1", 0x07, false );
traits [0x08] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "Ldloc2", 0x08, false );
traits [0x09] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "Ldloc3", 0x09, false );
traits [0x0a] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "Stloc0", 0x0a, false );
traits [0x0b] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "Stloc1", 0x0b, false );
traits [0x0c] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "Stloc2", 0x0c, false );
traits [0x0d] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "Stloc3", 0x0d, false );
traits [0x0e] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "LdargS", 0x0e, false );
traits [0x0f] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "LdargaS", 0x0f, false );
traits [0x10] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "StargS", 0x10, false );
traits [0x11] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "LdlocS", 0x11, false );
traits [0x12] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "LdlocaS", 0x12, false );
traits [0x13] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "StlocS", 0x13, false );
traits [0x14] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Ldnull", 0x14, false );
traits [0x15] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "LdcI4M1", 0x15, false );
traits [0x16] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "LdcI4_0", 0x16, false );
traits [0x17] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "LdcI4_1", 0x17, false );
traits [0x18] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "LdcI4_2", 0x18, false );
traits [0x19] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "LdcI4_3", 0x19, false );
traits [0x1a] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "LdcI4_4", 0x1a, false );
traits [0x1b] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "LdcI4_5", 0x1b, false );
traits [0x1c] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "LdcI4_6", 0x1c, false );
traits [0x1d] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "LdcI4_7", 0x1d, false );
traits [0x1e] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.NoOperand, "LdcI4_8", 0x1e, false );
traits [0x1f] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "LdcI4S", 0x1f, false );
traits [0x20] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "LdcI4", 0x20, false );
traits [0x21] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize8, "LdcI8", 0x21, false );
traits [0x22] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "LdcR4", 0x22, false );
traits [0x23] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize8, "LdcR8", 0x23, false );
traits [0x24] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0x24, false);
traits [0x25] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Dup", 0x25, false );
traits [0x26] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Pop", 0x26, false );
traits [0x27] = new OpcodeTraits (OpcodeFlags.Call | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Jmp", 0x27, false );
traits [0x28] = new OpcodeTraits (OpcodeFlags.Call | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Call", 0x28, false );
traits [0x29] = new OpcodeTraits (OpcodeFlags.Call | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Calli", 0x29, false );
traits [0x2a] = new OpcodeTraits (OpcodeFlags.Return | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Ret", 0x2a, false );
traits [0x2b] = new OpcodeTraits (OpcodeFlags.Branch | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "BrS", 0x2b, false );
traits [0x2c] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "BrfalseS", 0x2c, false );
traits [0x2d] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "BrtrueS", 0x2d, false );
traits [0x2e] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "BeqS", 0x2e, false );
traits [0x2f] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "BgeS", 0x2f, false );
traits [0x30] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "BgtS", 0x30, false );
traits [0x31] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "BleS", 0x31, false );
traits [0x32] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "BltS", 0x32, false );
traits [0x33] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "BneUnS", 0x33, false );
traits [0x34] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "BgeUnS", 0x34, false );
traits [0x35] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "BgtUnS", 0x35, false );
traits [0x36] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "BleUnS", 0x36, false );
traits [0x37] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "BltUnS", 0x37, false );
traits [0x38] = new OpcodeTraits (OpcodeFlags.Branch | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Br", 0x38, false );
traits [0x39] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Brfalse", 0x39, false );
traits [0x3a] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Brtrue", 0x3a, false );
traits [0x3b] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize4, "Beq", 0x3b, false );
traits [0x3c] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize4, "Bge", 0x3c, false );
traits [0x3d] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize4, "Bgt", 0x3d, false );
traits [0x3e] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize4, "Ble", 0x3e, false );
traits [0x3f] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize4, "Blt", 0x3f, false );
traits [0x40] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize4, "BneUn", 0x40, false );
traits [0x41] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize4, "BgeUn", 0x41, false );
traits [0x42] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize4, "BgtUn", 0x42, false );
traits [0x43] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize4, "BleUn", 0x43, false );
traits [0x44] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Macro | OpcodeFlags.OperandSize4, "BltUn", 0x44, false );
traits [0x45] = new OpcodeTraits (OpcodeFlags.CondBranch | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Switch", 0x45, false );
traits [0x46] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "LdindI1", 0x46, false );
traits [0x47] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "LdindU1", 0x47, false );
traits [0x48] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "LdindI2", 0x48, false );
traits [0x49] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "LdindU2", 0x49, false );
traits [0x4a] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "LdindI4", 0x4a, false );
traits [0x4b] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "LdindU4", 0x4b, false );
traits [0x4c] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "LdindI8", 0x4c, false );
traits [0x4d] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "LdindI", 0x4d, false );
traits [0x4e] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "LdindR4", 0x4e, false );
traits [0x4f] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "LdindR8", 0x4f, false );
traits [0x50] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "LdindRef", 0x50, false );
traits [0x51] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "StindRef", 0x51, false );
traits [0x52] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "StindI1", 0x52, false );
traits [0x53] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "StindI2", 0x53, false );
traits [0x54] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "StindI4", 0x54, false );
traits [0x55] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "StindI8", 0x55, false );
traits [0x56] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "StindR4", 0x56, false );
traits [0x57] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "StindR8", 0x57, false );
traits [0x58] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Add", 0x58, false );
traits [0x59] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Sub", 0x59, false );
traits [0x5a] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Mul", 0x5a, false );
traits [0x5b] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Div", 0x5b, false );
traits [0x5c] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "DivUn", 0x5c, false );
traits [0x5d] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Rem", 0x5d, false );
traits [0x5e] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "RemUn", 0x5e, false );
traits [0x5f] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "And", 0x5f, false );
traits [0x60] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Or", 0x60, false );
traits [0x61] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Xor", 0x61, false );
traits [0x62] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Shl", 0x62, false );
traits [0x63] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Shr", 0x63, false );
traits [0x64] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ShrUn", 0x64, false );
traits [0x65] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Neg", 0x65, false );
traits [0x66] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Not", 0x66, false );
traits [0x67] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvI1", 0x67, false );
traits [0x68] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvI2", 0x68, false );
traits [0x69] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvI4", 0x69, false );
traits [0x6a] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvI8", 0x6a, false );
traits [0x6b] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvR4", 0x6b, false );
traits [0x6c] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvR8", 0x6c, false );
traits [0x6d] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvU4", 0x6d, false );
traits [0x6e] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvU8", 0x6e, false );
traits [0x6f] = new OpcodeTraits (OpcodeFlags.Call | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "Callvirt", 0x6f, false );
traits [0x70] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "Cpobj", 0x70, false );
traits [0x71] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "Ldobj", 0x71, false );
traits [0x72] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "Ldstr", 0x72, false );
traits [0x73] = new OpcodeTraits (OpcodeFlags.Call | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "Newobj", 0x73, false );
traits [0x74] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "Castclass", 0x74, false );
traits [0x75] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "Isinst", 0x75, false );
traits [0x76] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvRUn", 0x76, false );
traits [0x77] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0x77, false);
traits [0x78] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0x78, false);
traits [0x79] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Unbox", 0x79, false );
traits [0x7a] = new OpcodeTraits (OpcodeFlags.Throw | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "Throw", 0x7a, false );
traits [0x7b] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "Ldfld", 0x7b, false );
traits [0x7c] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "Ldflda", 0x7c, false );
traits [0x7d] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "Stfld", 0x7d, false );
traits [0x7e] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "Ldsfld", 0x7e, false );
traits [0x7f] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "Ldsflda", 0x7f, false );
traits [0x80] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "Stsfld", 0x80, false );
traits [0x81] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "Stobj", 0x81, false );
traits [0x82] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfI1Un", 0x82, false );
traits [0x83] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfI2Un", 0x83, false );
traits [0x84] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfI4Un", 0x84, false );
traits [0x85] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfI8Un", 0x85, false );
traits [0x86] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfU1Un", 0x86, false );
traits [0x87] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfU2Un", 0x87, false );
traits [0x88] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfU4Un", 0x88, false );
traits [0x89] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfU8Un", 0x89, false );
traits [0x8a] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfIUn", 0x8a, false );
traits [0x8b] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfUUn", 0x8b, false );
traits [0x8c] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Box", 0x8c, false );
traits [0x8d] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "Newarr", 0x8d, false );
traits [0x8e] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "Ldlen", 0x8e, false );
traits [0x8f] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "Ldelema", 0x8f, false );
traits [0x90] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "LdelemI1", 0x90, false );
traits [0x91] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "LdelemU1", 0x91, false );
traits [0x92] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "LdelemI2", 0x92, false );
traits [0x93] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "LdelemU2", 0x93, false );
traits [0x94] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "LdelemI4", 0x94, false );
traits [0x95] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "LdelemU4", 0x95, false );
traits [0x96] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "LdelemI8", 0x96, false );
traits [0x97] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "LdelemI", 0x97, false );
traits [0x98] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "LdelemR4", 0x98, false );
traits [0x99] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "LdelemR8", 0x99, false );
traits [0x9a] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "LdelemRef", 0x9a, false );
traits [0x9b] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "StelemI", 0x9b, false );
traits [0x9c] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "StelemI1", 0x9c, false );
traits [0x9d] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "StelemI2", 0x9d, false );
traits [0x9e] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "StelemI4", 0x9e, false );
traits [0x9f] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "StelemI8", 0x9f, false );
traits [0xa0] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "StelemR4", 0xa0, false );
traits [0xa1] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "StelemR8", 0xa1, false );
traits [0xa2] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "StelemRef", 0xa2, false );
traits [0xa3] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "LdelemAny", 0xa3, false );
traits [0xa4] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "StelemAny", 0xa4, false );
traits [0xa5] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "UnboxAny", 0xa5, false );
traits [0xa6] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xa6, false);
traits [0xa7] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xa7, false);
traits [0xa8] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xa8, false);
traits [0xa9] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xa9, false);
traits [0xaa] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xaa, false);
traits [0xab] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xab, false);
traits [0xac] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xac, false);
traits [0xad] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xad, false);
traits [0xae] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xae, false);
traits [0xaf] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xaf, false);
traits [0xb0] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xb0, false);
traits [0xb1] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xb1, false);
traits [0xb2] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xb2, false);
traits [0xb3] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfI1", 0xb3, false );
traits [0xb4] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfU1", 0xb4, false );
traits [0xb5] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfI2", 0xb5, false );
traits [0xb6] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfU2", 0xb6, false );
traits [0xb7] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfI4", 0xb7, false );
traits [0xb8] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfU4", 0xb8, false );
traits [0xb9] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfI8", 0xb9, false );
traits [0xba] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfU8", 0xba, false );
traits [0xbb] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xbb, false);
traits [0xbc] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xbc, false);
traits [0xbd] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xbd, false);
traits [0xbe] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xbe, false);
traits [0xbf] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xbf, false);
traits [0xc0] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xc0, false);
traits [0xc1] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xc1, false);
traits [0xc2] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Refanyval", 0xc2, false );
traits [0xc3] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Ckfinite", 0xc3, false );
traits [0xc4] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xc4, false);
traits [0xc5] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xc5, false);
traits [0xc6] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Mkrefany", 0xc6, false );
traits [0xc7] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xc7, false);
traits [0xc8] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xc8, false);
traits [0xc9] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xc9, false);
traits [0xca] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xca, false);
traits [0xcb] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xcb, false);
traits [0xcc] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xcc, false);
traits [0xcd] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xcd, false);
traits [0xce] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xce, false);
traits [0xcf] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0xcf, false);
traits [0xd0] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Ldtoken", 0xd0, false );
traits [0xd1] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvU2", 0xd1, false );
traits [0xd2] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvU1", 0xd2, false );
traits [0xd3] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvI", 0xd3, false );
traits [0xd4] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfI", 0xd4, false );
traits [0xd5] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvOvfU", 0xd5, false );
traits [0xd6] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "AddOvf", 0xd6, false );
traits [0xd7] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "AddOvfUn", 0xd7, false );
traits [0xd8] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "MulOvf", 0xd8, false );
traits [0xd9] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "MulOvfUn", 0xd9, false );
traits [0xda] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "SubOvf", 0xda, false );
traits [0xdb] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "SubOvfUn", 0xdb, false );
traits [0xdc] = new OpcodeTraits (OpcodeFlags.Return | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Endfinally", 0xdc, false );
traits [0xdd] = new OpcodeTraits (OpcodeFlags.Branch | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Leave", 0xdd, false );
traits [0xde] = new OpcodeTraits (OpcodeFlags.Branch | OpcodeFlags.Macro | OpcodeFlags.OperandSize1, "LeaveS", 0xde, false );
traits [0xdf] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "StindI", 0xdf, false );
traits [0xe0] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "ConvU", 0xe0, false );
extendedTraits [0x00] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Arglist", 0x00, true );
extendedTraits [0x01] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Ceq", 0x01, true );
extendedTraits [0x02] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Cgt", 0x02, true );
extendedTraits [0x03] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "CgtUn", 0x03, true );
extendedTraits [0x04] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Clt", 0x04, true );
extendedTraits [0x05] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "CltUn", 0x05, true );
extendedTraits [0x06] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Ldftn", 0x06, true );
extendedTraits [0x07] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Ldvirtftn", 0x07, true );
extendedTraits [0x8] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0x8, true);
extendedTraits [0x09] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize2, "Ldarg", 0x09, true );
extendedTraits [0x0a] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize2, "Ldarga", 0x0a, true );
extendedTraits [0x0b] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize2, "Starg", 0x0b, true );
extendedTraits [0x0c] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Ldloc", 0x0c, true );
extendedTraits [0x0d] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Ldloca", 0x0d, true );
extendedTraits [0x0e] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Stloc", 0x0e, true );
extendedTraits [0x0f] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Localloc", 0x0f, true );
extendedTraits [0x10] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0x10, true);
extendedTraits [0x11] = new OpcodeTraits (OpcodeFlags.Return | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Endfilter", 0x11, true );
extendedTraits [0x12] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Prefix | OpcodeFlags.OperandSize1, "Unaligned", 0x12, true );
extendedTraits [0x13] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Prefix | OpcodeFlags.NoOperand, "Volatile", 0x13, true );
extendedTraits [0x14] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Prefix | OpcodeFlags.NoOperand, "Tail", 0x14, true );
extendedTraits [0x15] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.ObjectModel | OpcodeFlags.OperandSize4, "Initobj", 0x15, true );
extendedTraits [0x16] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Prefix | OpcodeFlags.OperandSize4, "Constrained", 0x16, true );
extendedTraits [0x17] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Cpblk", 0x17, true );
extendedTraits [0x18] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Initblk", 0x18, true );
extendedTraits [0x19] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Prefix | OpcodeFlags.OperandSize1, "No", 0x19, true );
extendedTraits [0x1a] = new OpcodeTraits (OpcodeFlags.Throw | OpcodeFlags.ObjectModel | OpcodeFlags.NoOperand, "Rethrow", 0x1a, true );
extendedTraits [0x1b] = new OpcodeTraits (OpcodeFlags.Invalid, null, 0x1b, true);
extendedTraits [0x1c] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.OperandSize4, "Sizeof", 0x1c, true );
extendedTraits [0x1d] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Primitive | OpcodeFlags.NoOperand, "Refanytype", 0x1d, true );
extendedTraits [0x1e] = new OpcodeTraits (OpcodeFlags.Next | OpcodeFlags.Prefix | OpcodeFlags.NoOperand, "Readonly", 0x1e, true );
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment