Пример #1
0
 public static Boolean Is_Shl(this VirtualOpCode ins)
 {
     return(ins.MatchesIndirect(
                new Code[] { Code.Ldloc_S, Code.Ldloc_S, Code.Ldc_I4_S, Code.And, Code.Shl, Code.Stloc_S,
                             Code.Newobj, Code.Stloc_0, Code.Ldloc_0, Code.Ldloc_S, Code.Callvirt, Code.Ldloc_0, Code.Ret }
                ));
 }
Пример #2
0
 public static Boolean Is_Bge(this VirtualOpCode ins)
 {
     return(ins.Matches(new Code[] {
         Code.Call, Code.Brtrue_S, Code.Ldarg_1, Code.Castclass
     }) && ins.MatchesIndirect(new Code[] {
         Code.Ldarg_0, Code.Castclass, Code.Callvirt, Code.Ldarg_1, Code.Castclass,
         Code.Callvirt, Code.Clt, Code.Stloc_0, Code.Ldloc_0, Code.Ret
     }));
 }
Пример #3
0
 public static Boolean Is_Bgt_Un(this VirtualOpCode ins)
 {
     return(ins.Matches(new Code[] {
         Code.Call, Code.Brfalse_S, Code.Ldarg_1, Code.Castclass
     }) && ins.MatchesIndirect(new Code[] {
         Code.Ldloc_2, Code.Ldloc_3, Code.Bgt_S, Code.Ldloc_2, Code.Call, Code.Brtrue_S,
         Code.Ldloc_3, Code.Call, Code.Br_S
     }));
 }
Пример #4
0
 public static Boolean Is_Or(this VirtualOpCode ins)
 {
     return(ins.MatchesIndirect(new Code[] {
         Code.Ldloc_S, Code.Ldloc_S, Code.Or, Code.Callvirt, Code.Ldloc_0, Code.Ret
     }));
 }
Пример #5
0
 public static Boolean Is_Bge_Un(this VirtualOpCode ins)
 {
     return(ins.Matches(new Code[] {
         Code.Call, Code.Brtrue_S, Code.Ldarg_1, Code.Castclass
     }) && ins.MatchesIndirect(Pattern_Clt_Un));
 }
Пример #6
0
 public static Boolean Is_Ble(this VirtualOpCode ins)
 {
     return(ins.Matches(new Code[] {
         Code.Call, Code.Ldc_I4_0, Code.Ceq, Code.Stloc_2
     }) && ins.MatchesIndirect(Pattern_Ble_Un));
 }
Пример #7
0
 public static Boolean Is_Bgt(this VirtualOpCode ins)
 {
     return(ins.Matches(Pattern_Br_True) && ins.MatchesIndirect(Pattern_GreaterThan));
 }