Beispiel #1
0
        public static LoadMethodAddressOperation ToLoadMethodAddressOperation(Mono.Cecil.Cil.Code opcode)
        {
            switch (opcode)
            {
            case Mono.Cecil.Cil.Code.Ldftn: return(LoadMethodAddressOperation.Static);

            case Mono.Cecil.Cil.Code.Ldvirtftn: return(LoadMethodAddressOperation.Virtual);

            default: throw opcode.ToUnknownValueException();
            }
        }
Beispiel #2
0
        public static LoadFieldOperation ToLoadFieldOperation(Mono.Cecil.Cil.Code opcode)
        {
            switch (opcode)
            {
            case Mono.Cecil.Cil.Code.Ldfld:
            case Mono.Cecil.Cil.Code.Ldsfld: return(LoadFieldOperation.Content);

            case Mono.Cecil.Cil.Code.Ldflda:
            case Mono.Cecil.Cil.Code.Ldsflda: return(LoadFieldOperation.Address);

            default: throw opcode.ToUnknownValueException();
            }
        }
Beispiel #3
0
        public static MethodCallOperation ToMethodCallOperation(Mono.Cecil.Cil.Code opcode)
        {
            switch (opcode)
            {
            case Mono.Cecil.Cil.Code.Call: return(MethodCallOperation.Static);

            case Mono.Cecil.Cil.Code.Callvirt: return(MethodCallOperation.Virtual);

            case Mono.Cecil.Cil.Code.Jmp: return(MethodCallOperation.Jump);

            default: throw opcode.ToUnknownValueException();
            }
        }
Beispiel #4
0
        public static ConvertOperation ToConvertOperation(Mono.Cecil.Cil.Code opcode)
        {
            switch (opcode)
            {
            case Mono.Cecil.Cil.Code.Castclass:
            case Mono.Cecil.Cil.Code.Isinst: return(ConvertOperation.Cast);

            case Mono.Cecil.Cil.Code.Box: return(ConvertOperation.Box);

            case Mono.Cecil.Cil.Code.Unbox: return(ConvertOperation.UnboxPtr);

            case Mono.Cecil.Cil.Code.Unbox_Any: return(ConvertOperation.Unbox);

            case Mono.Cecil.Cil.Code.Conv_I:
            case Mono.Cecil.Cil.Code.Conv_Ovf_I:
            case Mono.Cecil.Cil.Code.Conv_Ovf_I_Un:
            case Mono.Cecil.Cil.Code.Conv_I1:
            case Mono.Cecil.Cil.Code.Conv_Ovf_I1:
            case Mono.Cecil.Cil.Code.Conv_Ovf_I1_Un:
            case Mono.Cecil.Cil.Code.Conv_I2:
            case Mono.Cecil.Cil.Code.Conv_Ovf_I2:
            case Mono.Cecil.Cil.Code.Conv_Ovf_I2_Un:
            case Mono.Cecil.Cil.Code.Conv_I4:
            case Mono.Cecil.Cil.Code.Conv_Ovf_I4:
            case Mono.Cecil.Cil.Code.Conv_Ovf_I4_Un:
            case Mono.Cecil.Cil.Code.Conv_I8:
            case Mono.Cecil.Cil.Code.Conv_Ovf_I8:
            case Mono.Cecil.Cil.Code.Conv_Ovf_I8_Un:
            case Mono.Cecil.Cil.Code.Conv_U:
            case Mono.Cecil.Cil.Code.Conv_Ovf_U:
            case Mono.Cecil.Cil.Code.Conv_Ovf_U_Un:
            case Mono.Cecil.Cil.Code.Conv_U1:
            case Mono.Cecil.Cil.Code.Conv_Ovf_U1:
            case Mono.Cecil.Cil.Code.Conv_Ovf_U1_Un:
            case Mono.Cecil.Cil.Code.Conv_U2:
            case Mono.Cecil.Cil.Code.Conv_Ovf_U2:
            case Mono.Cecil.Cil.Code.Conv_Ovf_U2_Un:
            case Mono.Cecil.Cil.Code.Conv_U4:
            case Mono.Cecil.Cil.Code.Conv_Ovf_U4:
            case Mono.Cecil.Cil.Code.Conv_Ovf_U4_Un:
            case Mono.Cecil.Cil.Code.Conv_U8:
            case Mono.Cecil.Cil.Code.Conv_Ovf_U8:
            case Mono.Cecil.Cil.Code.Conv_Ovf_U8_Un:
            case Mono.Cecil.Cil.Code.Conv_R4:
            case Mono.Cecil.Cil.Code.Conv_R8:
            case Mono.Cecil.Cil.Code.Conv_R_Un: return(ConvertOperation.Conv);

            default: throw opcode.ToUnknownValueException();
            }
        }
Beispiel #5
0
        public static LoadOperation ToLoadOperation(Mono.Cecil.Cil.Code opcode)
        {
            switch (opcode)
            {
            case Mono.Cecil.Cil.Code.Ldc_I4:
            case Mono.Cecil.Cil.Code.Ldc_I4_0:
            case Mono.Cecil.Cil.Code.Ldc_I4_1:
            case Mono.Cecil.Cil.Code.Ldc_I4_2:
            case Mono.Cecil.Cil.Code.Ldc_I4_3:
            case Mono.Cecil.Cil.Code.Ldc_I4_4:
            case Mono.Cecil.Cil.Code.Ldc_I4_5:
            case Mono.Cecil.Cil.Code.Ldc_I4_6:
            case Mono.Cecil.Cil.Code.Ldc_I4_7:
            case Mono.Cecil.Cil.Code.Ldc_I4_8:
            case Mono.Cecil.Cil.Code.Ldc_I4_M1:
            case Mono.Cecil.Cil.Code.Ldc_I4_S:
            case Mono.Cecil.Cil.Code.Ldc_I8:
            case Mono.Cecil.Cil.Code.Ldc_R4:
            case Mono.Cecil.Cil.Code.Ldc_R8:
            case Mono.Cecil.Cil.Code.Ldnull:
            case Mono.Cecil.Cil.Code.Ldstr: return(LoadOperation.Value);

            case Mono.Cecil.Cil.Code.Ldarg:
            case Mono.Cecil.Cil.Code.Ldarg_0:
            case Mono.Cecil.Cil.Code.Ldarg_1:
            case Mono.Cecil.Cil.Code.Ldarg_2:
            case Mono.Cecil.Cil.Code.Ldarg_3:
            case Mono.Cecil.Cil.Code.Ldarg_S:
            case Mono.Cecil.Cil.Code.Ldloc:
            case Mono.Cecil.Cil.Code.Ldloc_0:
            case Mono.Cecil.Cil.Code.Ldloc_1:
            case Mono.Cecil.Cil.Code.Ldloc_2:
            case Mono.Cecil.Cil.Code.Ldloc_3:
            case Mono.Cecil.Cil.Code.Ldloc_S: return(LoadOperation.Content);

            case Mono.Cecil.Cil.Code.Ldarga:
            case Mono.Cecil.Cil.Code.Ldarga_S:
            case Mono.Cecil.Cil.Code.Ldloca:
            case Mono.Cecil.Cil.Code.Ldloca_S: return(LoadOperation.Address);

            default: throw opcode.ToUnknownValueException();
            }
        }
Beispiel #6
0
        public static BranchOperation ToBranchOperation(Mono.Cecil.Cil.Code opcode)
        {
            switch (opcode)
            {
            case Mono.Cecil.Cil.Code.Brfalse:
            case Mono.Cecil.Cil.Code.Brfalse_S: return(BranchOperation.False);

            case Mono.Cecil.Cil.Code.Brtrue:
            case Mono.Cecil.Cil.Code.Brtrue_S: return(BranchOperation.True);

            case Mono.Cecil.Cil.Code.Beq:
            case Mono.Cecil.Cil.Code.Beq_S: return(BranchOperation.Eq);

            case Mono.Cecil.Cil.Code.Bne_Un:
            case Mono.Cecil.Cil.Code.Bne_Un_S: return(BranchOperation.Neq);

            case Mono.Cecil.Cil.Code.Bge:
            case Mono.Cecil.Cil.Code.Bge_S:
            case Mono.Cecil.Cil.Code.Bge_Un:
            case Mono.Cecil.Cil.Code.Bge_Un_S: return(BranchOperation.Ge);

            case Mono.Cecil.Cil.Code.Bgt:
            case Mono.Cecil.Cil.Code.Bgt_S:
            case Mono.Cecil.Cil.Code.Bgt_Un:
            case Mono.Cecil.Cil.Code.Bgt_Un_S: return(BranchOperation.Gt);

            case Mono.Cecil.Cil.Code.Ble:
            case Mono.Cecil.Cil.Code.Ble_S:
            case Mono.Cecil.Cil.Code.Ble_Un:
            case Mono.Cecil.Cil.Code.Ble_Un_S: return(BranchOperation.Le);

            case Mono.Cecil.Cil.Code.Blt:
            case Mono.Cecil.Cil.Code.Blt_S:
            case Mono.Cecil.Cil.Code.Blt_Un:
            case Mono.Cecil.Cil.Code.Blt_Un_S: return(BranchOperation.Lt);

            case Mono.Cecil.Cil.Code.Leave:
            case Mono.Cecil.Cil.Code.Leave_S: return(BranchOperation.Leave);

            default: throw opcode.ToUnknownValueException();
            }
        }
Beispiel #7
0
        public static BasicOperation ToBasicOperation(Mono.Cecil.Cil.Code opcode)
        {
            switch (opcode)
            {
            case Mono.Cecil.Cil.Code.Neg: return(BasicOperation.Neg);

            case Mono.Cecil.Cil.Code.Not: return(BasicOperation.Not);

            case Mono.Cecil.Cil.Code.Add:
            case Mono.Cecil.Cil.Code.Add_Ovf:
            case Mono.Cecil.Cil.Code.Add_Ovf_Un: return(BasicOperation.Add);

            case Mono.Cecil.Cil.Code.And: return(BasicOperation.And);

            case Mono.Cecil.Cil.Code.Ceq: return(BasicOperation.Eq);

            case Mono.Cecil.Cil.Code.Cgt:
            case Mono.Cecil.Cil.Code.Cgt_Un: return(BasicOperation.Gt);

            case Mono.Cecil.Cil.Code.Clt:
            case Mono.Cecil.Cil.Code.Clt_Un: return(BasicOperation.Lt);

            case Mono.Cecil.Cil.Code.Div:
            case Mono.Cecil.Cil.Code.Div_Un: return(BasicOperation.Div);

            case Mono.Cecil.Cil.Code.Mul:
            case Mono.Cecil.Cil.Code.Mul_Ovf:
            case Mono.Cecil.Cil.Code.Mul_Ovf_Un: return(BasicOperation.Mul);

            case Mono.Cecil.Cil.Code.Or: return(BasicOperation.Or);

            case Mono.Cecil.Cil.Code.Rem:
            case Mono.Cecil.Cil.Code.Rem_Un: return(BasicOperation.Rem);

            case Mono.Cecil.Cil.Code.Shl: return(BasicOperation.Shl);

            case Mono.Cecil.Cil.Code.Shr:
            case Mono.Cecil.Cil.Code.Shr_Un: return(BasicOperation.Shr);

            case Mono.Cecil.Cil.Code.Sub:
            case Mono.Cecil.Cil.Code.Sub_Ovf:
            case Mono.Cecil.Cil.Code.Sub_Ovf_Un: return(BasicOperation.Sub);

            case Mono.Cecil.Cil.Code.Xor: return(BasicOperation.Xor);

            case Mono.Cecil.Cil.Code.Endfilter: return(BasicOperation.EndFilter);

            case Mono.Cecil.Cil.Code.Endfinally: return(BasicOperation.EndFinally);

            case Mono.Cecil.Cil.Code.Throw: return(BasicOperation.Throw);

            case Mono.Cecil.Cil.Code.Rethrow: return(BasicOperation.Rethrow);

            case Mono.Cecil.Cil.Code.Nop: return(BasicOperation.Nop);

            case Mono.Cecil.Cil.Code.Pop: return(BasicOperation.Pop);

            case Mono.Cecil.Cil.Code.Dup: return(BasicOperation.Dup);

            case Mono.Cecil.Cil.Code.Localloc: return(BasicOperation.LocalAllocation);

            case Mono.Cecil.Cil.Code.Initblk: return(BasicOperation.InitBlock);

            //case Mono.Cecil.Cil.Code.Initobj:        return BasicOperation.InitObject;
            case Mono.Cecil.Cil.Code.Cpblk: return(BasicOperation.CopyBlock);

            case Mono.Cecil.Cil.Code.Cpobj: return(BasicOperation.CopyObject);

            case Mono.Cecil.Cil.Code.Ret: return(BasicOperation.Return);

            case Mono.Cecil.Cil.Code.Ldlen: return(BasicOperation.LoadArrayLength);

            case Mono.Cecil.Cil.Code.Break: return(BasicOperation.Breakpoint);

            default: throw opcode.ToUnknownValueException();
            }
        }