MCPcopy Create free account
hub / github.com/Vector35/debugger / RegisterDisplay

Function RegisterDisplay

cli/main.cpp:46–123  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44
45
46void RegisterDisplay(DbgRef<DebuggerController> debugger)
47{
48 const auto arch = debugger->GetRemoteArchitecture();
49 if (!arch)
50 return;
51
52 auto all_regs = debugger->GetRegisters();
53
54 auto reg = [debugger](std::string reg_name) {
55 auto original_name = reg_name;
56 reg_name.erase(std::remove(reg_name.begin(), reg_name.end(), ' '), reg_name.end());
57
58 return fmt::format(
59 "{}{}\033[0m={:016X}", Log::Style(255, 165, 0), original_name, debugger->GetRegisterValue(reg_name));
60 };
61
62 auto reg32 = [debugger](std::string reg_name) {
63 auto original_name = reg_name;
64 reg_name.erase(std::remove(reg_name.begin(), reg_name.end(), ' '), reg_name.end());
65
66 return fmt::format(
67 "{}{}\033[0m={:08X}", Log::Style(255, 165, 0), original_name, debugger->GetRegisterValue(reg_name));
68 };
69
70 auto reg16 = [debugger](std::string reg_name) {
71 auto original_name = reg_name;
72 reg_name.erase(std::remove(reg_name.begin(), reg_name.end(), ' '), reg_name.end());
73
74 return fmt::format(
75 "{}{}\033[0m={:04X}", Log::Style(255, 165, 0), original_name, debugger->GetRegisterValue(reg_name));
76 };
77
78 if (arch->GetName() == "x86_64")
79 {
80 const auto reg_list = fmt::format("{} {} {} {}\n{} {} {} {}\n{} {} {} {}\n{} {} {} {}\n{}\n", reg("rax"),
81 reg("rbx"), reg("rcx"), reg("rdx"), reg("rsi"), reg("rdi"), reg("rbp"), reg("rsp"), reg(" r8"), reg(" r9"),
82 reg("r10"), reg("r11"), reg("r12"), reg("r13"), reg("r14"), reg("r15"), reg("rip"));
83 Log::print(reg_list);
84
85 const auto register_list = debugger->GetRegisters();
86
87 for (const DebugRegister& r : register_list)
88 {
89 if (r.m_name == "rflags")
90 {
91 Log::print(reg("rflags"));
92 Log::print("\n");
93 }
94 else if (r.m_name == "eflags")
95 {
96 Log::print(reg32("eflags"));
97 Log::print("\n");
98 }
99 }
100 }
101 else if (arch->GetName() == "x86")
102 {
103 const auto reg_list = fmt::format("{} {} {} {}\n{} {} {} {}\n{} {}\n", reg32("eax"), reg32("ebx"), reg32("ecx"),

Callers 1

mainFunction · 0.85

Calls 6

StyleClass · 0.85
printFunction · 0.85
GetNameMethod · 0.80
GetRemoteArchitectureMethod · 0.45
GetRegistersMethod · 0.45
GetRegisterValueMethod · 0.45

Tested by

no test coverage detected