private void Set32BitFilters(MetaExpectation expectation) { switch (expectation.PopCount) { case 0: // 2 exclusions var filters_0_0 = new[] { "constrained.", "sizeof" }; expectation.FiltersCount = filters_0_0.Length; expectation.ExclusionFilters.Add(x => filters_0_0.Contains(x.OpCode)); break; case 1: //TODO: review ref opcodes var filters_0_1 = new[] { "exec.msil.i", "exec.msil.s", "refanyval", "mkrefany" }; expectation.FiltersCount = filters_0_1.Length; expectation.ExclusionFilters.Add(x => filters_0_1.Contains(x.OpCode)); break; case 2: //TODO: review if cpobj, stobj for possible exclusions var filters_0_2 = new string[] { }; expectation.FiltersCount = filters_0_2.Length; expectation.ExclusionFilters.Add(x => filters_0_2.Contains(x.OpCode)); break; case 3: //no exclusion var filters_0_3 = new string[] { }; expectation.FiltersCount = filters_0_3.Length; expectation.ExclusionFilters.Add(x => filters_0_3.Contains(x.OpCode)); break; } }
private void Set8BitFilters(MetaExpectation expectation) { switch (expectation.PopCount) { case 0: // one exclusions var filters_0_0 = new[] { "unaligned." }; expectation.FiltersCount = filters_0_0.Length; expectation.ExclusionFilters.Add(x => filters_0_0.Contains(x.OpCode)); break; case 1: //no exclusions var filters_0_1 = new string[] { }; expectation.FiltersCount = filters_0_1.Length; expectation.ExclusionFilters.Add(x => filters_0_1.Contains(x.OpCode)); break; case 2: //no exclusions var filters_0_2 = new string[] { }; expectation.FiltersCount = filters_0_2.Length; expectation.ExclusionFilters.Add(x => filters_0_2.Contains(x.OpCode)); break; case 3: //no opcodes, no exclusions var filters_0_3 = new string[] { }; expectation.FiltersCount = filters_0_3.Length; expectation.ExclusionFilters.Add(x => filters_0_3.Contains(x.OpCode)); break; } }
private void SetFilters(MetaExpectation expectation) { switch (expectation.BitSize) { case 0: Set0BitFilters(expectation); break; case 8: Set8BitFilters(expectation); break; case 16: Set16BitFilters(expectation); break; case 32: Set32BitFilters(expectation); break; case 64: Set64BitFilters(expectation); break; } }
private void Set0BitFilters(MetaExpectation expectation) { switch (expectation.PopCount) { case 0: var filters_0_0 = new[] { "arglist", "volatile.", "tail.", "rethrow", "readonly.", "endfinally", "prefix7" , "prefix6" , "prefix5" , "prefix4" , "prefix3" , "prefix2" , "prefixref" }; expectation.FiltersCount = filters_0_0.Length; expectation.ExclusionFilters.Add(x => filters_0_0.Contains(x.OpCode)); break; case 1: //TODO: review ind opcodes for exclusions var filters_0_1 = new[] { "localloc", "endfilter", "refanytype", "throw" }; expectation.FiltersCount = filters_0_1.Length; expectation.ExclusionFilters.Add(x => filters_0_1.Contains(x.OpCode)); break; case 2: //TODO: review ind opcodes for exclusions var filters_0_2 = new string[] { }; expectation.FiltersCount = filters_0_2.Length; break; case 3: //TODO: review if blk opcodes can be implemented. var filters_0_3 = new[] { "cpblk", "initblk" }; expectation.FiltersCount = filters_0_3.Length; expectation.ExclusionFilters.Add(x => filters_0_3.Contains(x.OpCode)); break; } }