Target register tidying
This commit is contained in:
@@ -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());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user