1 //
2 // Copyright (c) 2010-2024 Antmicro
3 //
4 // This file is licensed under the MIT License.
5 // Full license text is available in 'licenses/MIT.txt'.
6 //
7 using System;
8 using System.Linq;
9 using System.Text;
10 
11 namespace Antmicro.Renode.Utilities.GDB.Commands
12 {
13     internal class ReadGeneralRegistersCommand : Command
14     {
ReadGeneralRegistersCommand(CommandsManager manager)15         public ReadGeneralRegistersCommand(CommandsManager manager) : base(manager)
16         {
17         }
18 
19         [Execute("g")]
Execute()20         public PacketData Execute()
21         {
22             var registers = new StringBuilder();
23             foreach(var i in manager.Cpu.GetRegisters().Where(x => x.IsGeneral))
24             {
25                 var start = registers.Length;
26                 var value = manager.Cpu.GetRegister(i.Index);
27                 foreach(var b in value.GetBytes(manager.Cpu.Endianness))
28                 {
29                     registers.AppendFormat("{0:x2}", b);
30                 }
31 
32                 ExpandRegisterValue(ref registers, start, registers.Length, i.Index);
33             }
34 
35             return new PacketData(registers.ToString());
36         }
37     }
38 }
39 
40