Exemple #1
0
 // We print the label name here
 public override string ToIntelSyntax(X86FormatOptions formatOptions)
 {
     if (Name == null)
     {
         return(string.Empty);
     }
     return($"{Proc.Name}{formatOptions.SpecialSeparator}{Name}");
 }
Exemple #2
0
 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)}]",
 };
Exemple #3
0
        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}");
        }
Exemple #4
0
 // We print the name here
 public override string ToIntelSyntax(X86FormatOptions formatOptions) => Name;
Exemple #5
0
 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));
 }
Exemple #8
0
 public override string ToIntelSyntax(X86FormatOptions formatOptions) =>
 Value.ToString() ?? string.Empty;
Exemple #9
0
 public abstract string ToIntelSyntax(X86FormatOptions formatOptions);
Exemple #10
0
 public override string ToIntelSyntax(X86FormatOptions formatOptions) =>
 $"[{Name} + {Offset}]";
Exemple #11
0
 public override string ToIntelSyntax(X86FormatOptions formatOptions) =>
 // TODO: The PTR keyword is not necessarily correct!
 $"{Width.ToString().ToUpper()} PTR {Address_.ToIntelSyntax(formatOptions)}";
Exemple #12
0
            private static string R(X86FormatOptions f, Register r)
            {
                var res = r.ToIntelSyntax(f);

                return(f.AllUpperCase ? res.ToUpper() : res.ToLower());
            }