void DisplInBrackets(string hexBytes, int bitness, string formattedString, Flags flags) { var decoder = Decoder.Create(bitness, new ByteArrayCodeReader(hexBytes)); switch (bitness) { case 16: decoder.IP = DecoderConstants.DEFAULT_IP16; break; case 32: decoder.IP = DecoderConstants.DEFAULT_IP32; break; case 64: decoder.IP = DecoderConstants.DEFAULT_IP64; break; default: throw new InvalidOperationException(); } decoder.Decode(out var instr); var resolver = new TestSymbolResolver { tryGetSymbol = (in Instruction instruction, int operand, int instructionOperand, ulong address, int addressSize, out SymbolResult symbol) => { if (instructionOperand == 1 && (flags & Flags.Symbol) != 0) { symbol = new SymbolResult(address, "symbol", FormatterOutputTextKind.Data, (flags & Flags.Signed) != 0 ? SymbolFlags.Signed : SymbolFlags.None); return(true); } symbol = default; return(false); }, }; var formatter = (MasmFormatter)MasmFormatterFactory.Create_Resolver(resolver).formatter; formatter.MasmOptions.SymbolDisplInBrackets = (flags & Flags.SymbolDisplInBrackets) != 0; formatter.MasmOptions.DisplInBrackets = (flags & Flags.DisplInBrackets) != 0; formatter.MasmOptions.RipRelativeAddresses = (flags & Flags.Rip) != 0; formatter.MasmOptions.ShowZeroDisplacements = (flags & Flags.ShowZeroDisplacements) != 0; formatter.MasmOptions.AddDsPrefix32 = (flags & Flags.NoAddDsPrefix32) == 0; var output = new StringBuilderFormatterOutput(); formatter.Format(instr, output); var actualFormattedString = output.ToStringAndReset(); #pragma warning disable xUnit2006 // Do not use invalid string equality check // Show the full string without ellipses by using Equal<string>() instead of Equal() Assert.Equal <string>(formattedString, actualFormattedString); #pragma warning restore xUnit2006 // Do not use invalid string equality check }
void Format(int index, int resultDispl, SymbolInstructionInfo info, string formattedString) => FormatBase(index, resultDispl, info, formattedString, MasmFormatterFactory.Create_Resolver(info.SymbolResolver.Clone()));
void Format(int index, SymbolInstructionInfo info, string formattedString) => FormatBase(index, info, formattedString, MasmFormatterFactory.Create_Resolver(info.SymbolResolver));