Target register tidying

This commit is contained in:
Nav
2021-07-20 19:21:18 +01:00
parent c0b99516d3
commit 8a048311ac
3 changed files with 11 additions and 21 deletions

View File

@@ -15,7 +15,6 @@ namespace Bloom::DebugServers::Gdb::ResponsePackets
{ {
public: public:
Signal signal; Signal signal;
std::optional<Targets::TargetRegisterMap> registerMap;
std::optional<StopReason> stopReason; std::optional<StopReason> stopReason;
explicit TargetStopped(Signal signal): signal(signal) {} explicit TargetStopped(Signal signal): signal(signal) {}
@@ -32,13 +31,6 @@ namespace Bloom::DebugServers::Gdb::ResponsePackets
} }
} }
if (this->registerMap.has_value()) {
for (const auto& [registerId, registerValue] : this->registerMap.value()) {
output += Packet::dataToHex({static_cast<unsigned char>(registerId)});
output += ":" + Packet::dataToHex(registerValue.value) + ";";
}
}
return std::vector<unsigned char>(output.begin(), output.end()); return std::vector<unsigned char>(output.begin(), output.end());
} }
}; };

View File

@@ -1197,7 +1197,12 @@ TargetRegisters EdbgAvr8Interface::readGeneralPurposeRegisters(std::set<std::siz
continue; continue;
} }
output.push_back(TargetRegister(registerIndex, {registers[registerIndex]})); output.push_back(
TargetRegister(
{registerIndex, TargetRegisterType::GENERAL_PURPOSE_REGISTER},
{registers[registerIndex]}
)
);
} }
return output; return output;

View File

@@ -12,17 +12,17 @@ namespace Bloom::Targets
PROGRAM_COUNTER, PROGRAM_COUNTER,
STACK_POINTER, STACK_POINTER,
STATUS_REGISTER, STATUS_REGISTER,
OTHER,
}; };
struct TargetRegisterDescriptor struct TargetRegisterDescriptor
{ {
using IdType = size_t; std::optional<size_t> id;
std::optional<IdType> id; TargetRegisterType type = TargetRegisterType::OTHER;
TargetRegisterType type = TargetRegisterType::GENERAL_PURPOSE_REGISTER;
TargetRegisterDescriptor() = default; TargetRegisterDescriptor() = default;
explicit TargetRegisterDescriptor(TargetRegisterType type): type(type) {}; explicit TargetRegisterDescriptor(TargetRegisterType type): type(type) {};
TargetRegisterDescriptor(IdType id, TargetRegisterType type): id(id), type(type) {}; TargetRegisterDescriptor(size_t id, TargetRegisterType type): id(id), type(type) {};
bool operator==(const TargetRegisterDescriptor& other) const { bool operator==(const TargetRegisterDescriptor& other) const {
return this->id == other.id && this->type == other.type; return this->id == other.id && this->type == other.type;
@@ -31,19 +31,12 @@ namespace Bloom::Targets
struct TargetRegister struct TargetRegister
{ {
std::optional<size_t> id;
std::vector<unsigned char> value;
TargetRegisterDescriptor descriptor; TargetRegisterDescriptor descriptor;
std::vector<unsigned char> value;
explicit TargetRegister(std::vector<unsigned char> value): value(std::move(value)) {};
TargetRegister(TargetRegisterDescriptor descriptor, std::vector<unsigned char> value): value(std::move(value)), TargetRegister(TargetRegisterDescriptor descriptor, std::vector<unsigned char> value): value(std::move(value)),
descriptor(descriptor) {}; descriptor(descriptor) {};
TargetRegister(size_t id, std::vector<unsigned char> value): id(id), value(std::move(value)) {
this->descriptor.id = id;
};
[[nodiscard]] size_t size() const { [[nodiscard]] size_t size() const {
return this->value.size(); return this->value.size();
} }