// We print the label name here public override string ToIntelSyntax(X86FormatOptions formatOptions) { if (Name == null) { return(string.Empty); } return($"{Proc.Name}{formatOptions.SpecialSeparator}{Name}"); }
public override string ToIntelSyntax(X86FormatOptions f) => (Base, ScaledIndex, Displacement) switch { (null, null, int d) => $"[{d}]", (Register b, null, 0) => $"[{R(f, b)}]", (Register b, null, int d) => $"[{R(f, b)} {N(d)}]", (null, (Register i, int s), 0) => $"[{R(f, i)} * {s}]", (null, (Register i, int s), int d) => $"[{R(f, i)} * {s} {N(d)}]", (Register b, (Register i, int s), 0) => $"[{R(f, b)} + {R(f, i)} * {s}]", (Register b, (Register i, int s), int d) => $"[{R(f, b)} + {R(f, i)} * {s} {N(d)}]", };
public string ToIntelSyntax(X86FormatOptions formatOptions) { var instrName = Operation.ToString(); instrName = formatOptions.AllUpperCase ? instrName.ToUpper() : instrName.ToLower(); var instr = $"{instrName} {string.Join(", ", Operands.Select(o => o.ToIntelSyntax(formatOptions)))}"; if (Comment == null) { return(instr); } return(formatOptions.CommentAbove ? $"; {Comment}\n {instr}" : $"{instr} ; {Comment}"); }
// We print the name here public override string ToIntelSyntax(X86FormatOptions formatOptions) => Name;
public override string ToIntelSyntax(X86FormatOptions formatOptions) => formatOptions.AllUpperCase ? Repr.ToUpper() : Repr.ToLower();
private X86Assembler(X86FormatOptions formatOptions) { this.formatOptions = formatOptions; }
/// <summary> /// Compiles an <see cref="X86Assembly"/> from a <see cref="Assembly"/>. /// </summary> /// <param name="assembly">The <see cref="Assembly"/> to compile.</param> /// <param name="formatOptions">The format options to use.</param> /// <returns>The compiled <see cref="X86Assembly"/>.</returns> public static X86Assembly Assemble(Assembly assembly, X86FormatOptions formatOptions) { return(new X86Assembler(formatOptions).Compile(assembly)); }
public override string ToIntelSyntax(X86FormatOptions formatOptions) => Value.ToString() ?? string.Empty;
public abstract string ToIntelSyntax(X86FormatOptions formatOptions);
public override string ToIntelSyntax(X86FormatOptions formatOptions) => $"[{Name} + {Offset}]";
public override string ToIntelSyntax(X86FormatOptions formatOptions) => // TODO: The PTR keyword is not necessarily correct! $"{Width.ToString().ToUpper()} PTR {Address_.ToIntelSyntax(formatOptions)}";
private static string R(X86FormatOptions f, Register r) { var res = r.ToIntelSyntax(f); return(f.AllUpperCase ? res.ToUpper() : res.ToLower()); }