Example #1
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="address">The address of the symbol</param>
 /// <param name="text">Symbol</param>
 /// <param name="color">Color</param>
 /// <param name="flags">Symbol flags</param>
 public SymbolResult(ulong address, string text, FormatterOutputTextKind color, SymbolFlags flags)
 {
     Address    = address;
     Text       = new TextInfo(text, color);
     Flags      = flags & ~SymbolFlags.HasSymbolSize;
     SymbolSize = 0;
 }
Example #2
0
 public X86Block(NativeCodeBlockKind kind, ulong address, string comment, string label, FormatterOutputTextKind labelKind, X86InstructionInfo[] instructions)
 {
     Kind         = kind;
     Address      = address;
     Comment      = comment;
     Label        = label;
     LabelKind    = labelKind;
     Instructions = instructions ?? throw new ArgumentNullException(nameof(instructions));
 }
            public AsmReference Create(FormatterOutputTextKind kind, string value)
            {
                var key = (kind, value);

                if (!dict.TryGetValue(key, out var asmRef))
                {
                    dict[key] = asmRef = new AsmReference(kind, value);
                }
                return(asmRef);
            }
Example #4
0
        public static SymbolKind ToSymbolKind(FormatterOutputTextKind kind)
        {
            switch (kind)
            {
            case FormatterOutputTextKindExtensions.UnknownSymbol: return(SymbolKind.Unknown);

            case FormatterOutputTextKindExtensions.Data:            return(SymbolKind.Data);

            case FormatterOutputTextKindExtensions.Label:           return(SymbolKind.Label);

            case FormatterOutputTextKindExtensions.Function:        return(SymbolKind.Function);

            default:                                                                                        return(SymbolKind.Unknown);
            }
        }
Example #5
0
            public override void Write(string text, FormatterOutputTextKind kind)
            {
                switch (kind)
                {
                case FormatterOutputTextKind.LabelAddress:
                    var address = ulong.Parse($"{text.Substring(0, text.Length - 1)}", System.Globalization.NumberStyles.HexNumber);
                    var ra      = (address - BaseAddress).ToString("x4");
                    var label   = $"{ra}h";
                    Writer.Write(label);
                    break;

                default:
                    Writer.Write(text);
                    break;
                }
            }
Example #6
0
            public override void Write(string text, FormatterOutputTextKind kind)
            {
                var color = GetColor(kind);

                switch (kind)
                {
                case FormatterOutputTextKind.Directive:
                case FormatterOutputTextKind.Prefix:
                case FormatterOutputTextKind.Mnemonic:
                case FormatterOutputTextKind.Keyword:
                case FormatterOutputTextKind.Register:
                case FormatterOutputTextKindExtensions.UnknownSymbol:
                case FormatterOutputTextKind.Data:
                case FormatterOutputTextKind.Label:
                case FormatterOutputTextKind.Function:
                    output.Write(text, refFactory.Create(kind, text), DisassemblyReferenceFlags.Local, color);
                    break;

                default:
                    output.Write(text, color);
                    break;
                }
            }
Example #7
0
 public override void Write(string text, FormatterOutputTextKind kind) => writer !.Write(text);
 public AsmReference(FormatterOutputTextKind kind, string value)
 {
     this.kind  = kind;
     this.value = value;
 }
Example #9
0
 /// <summary>
 /// Writes text and text kind
 /// </summary>
 /// <param name="text">Text, can be an empty string</param>
 /// <param name="kind">Text kind. This value can be identical to the previous value passed to this method. It's
 /// the responsibility of the implementer to merge any such strings if needed.</param>
 public abstract void Write(string text, FormatterOutputTextKind kind);
Example #10
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="text">Text</param>
 /// <param name="color">Color</param>
 public TextPart(string text, FormatterOutputTextKind color)
 {
     Text  = text;
     Color = color;
 }
Example #11
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="text">Text</param>
 /// <param name="color">Color</param>
 public TextInfo(string text, FormatterOutputTextKind color)
 {
     Text      = new TextPart(text, color);
     TextArray = null;
 }
Example #12
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="address">The address of the symbol</param>
 /// <param name="text">Symbol</param>
 /// <param name="color">Color</param>
 public SymbolResult(ulong address, string text, FormatterOutputTextKind color)
 {
     Address = address;
     Text    = new TextInfo(text, color);
     Flags   = 0;
 }
Example #13
0
 /// <summary>
 /// Writes a number
 /// </summary>
 /// <param name="instruction">Instruction</param>
 /// <param name="operand">Operand number, 0-based. This is a formatter operand and isn't necessarily the same as an instruction operand.</param>
 /// <param name="instructionOperand">Instruction operand number, 0-based, or -1 if it's an operand created by the formatter.</param>
 /// <param name="text">Number text</param>
 /// <param name="value">Value</param>
 /// <param name="numberKind">Number kind</param>
 /// <param name="kind">Text kind</param>
 public virtual void WriteNumber(ref Instruction instruction, int operand, int instructionOperand, string text, ulong value, NumberKind numberKind, FormatterOutputTextKind kind) => Write(text, kind);
 /// <summary>
 /// Writes text and text kind
 /// </summary>
 /// <param name="text">Text, can be an empty string</param>
 /// <param name="kind">Text kind. This value can be identical to the previous value passed to this method. It's
 /// the responsibility of the implementer to merge any such strings if needed.</param>
 public override void Write(string text, FormatterOutputTextKind kind) => sb.Append(text);