Removed target register descriptor ID
This commit is contained in:
@@ -27,11 +27,20 @@ void AvrGdbRsp::loadRegisterNumberToDescriptorMapping() {
|
||||
throw Exception("Unexpected general purpose register count");
|
||||
}
|
||||
|
||||
|
||||
auto& gpRegisterDescriptors = registerDescriptorsByType.at(TargetRegisterType::GENERAL_PURPOSE_REGISTER);
|
||||
for (const auto& gpRegisterDescriptor : gpRegisterDescriptors) {
|
||||
std::sort(
|
||||
gpRegisterDescriptors.begin(),
|
||||
gpRegisterDescriptors.end(),
|
||||
[](const TargetRegisterDescriptor& descriptorA, const TargetRegisterDescriptor& descriptorB) {
|
||||
return descriptorA.startAddress.value() < descriptorB.startAddress.value();
|
||||
}
|
||||
);
|
||||
|
||||
for (std::size_t descriptorIndex = 0; descriptorIndex < gpRegisterDescriptors.size(); descriptorIndex++) {
|
||||
this->registerNumberToDescriptorMapping.insert(std::pair(
|
||||
static_cast<GdbRegisterNumber>(gpRegisterDescriptor.id.value()),
|
||||
gpRegisterDescriptor
|
||||
static_cast<GdbRegisterNumber>(descriptorIndex),
|
||||
gpRegisterDescriptors[descriptorIndex]
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
@@ -58,11 +58,10 @@ void Avr8::loadTargetRegisterDescriptors() {
|
||||
* All AVR8 targets possess 32 general purpose CPU registers. These are not described in the TDF, so we
|
||||
* construct the descriptors for them here.
|
||||
*/
|
||||
auto gpRegisterStartAddress = this->targetParameters->gpRegisterStartAddress.value_or(0);
|
||||
for (std::uint8_t i = 0; i <= 31; i++) {
|
||||
auto generalPurposeRegisterDescriptor = TargetRegisterDescriptor();
|
||||
generalPurposeRegisterDescriptor.id = i;
|
||||
generalPurposeRegisterDescriptor.startAddress =
|
||||
this->targetParameters->gpRegisterStartAddress.value_or(0) + i;
|
||||
generalPurposeRegisterDescriptor.startAddress = gpRegisterStartAddress + i;
|
||||
generalPurposeRegisterDescriptor.size = 1;
|
||||
generalPurposeRegisterDescriptor.type = TargetRegisterType::GENERAL_PURPOSE_REGISTER;
|
||||
generalPurposeRegisterDescriptor.name = "R" + std::to_string(i);
|
||||
|
||||
@@ -26,17 +26,15 @@ namespace Bloom::Targets
|
||||
std::uint32_t size = 0;
|
||||
TargetRegisterType type = TargetRegisterType::OTHER;
|
||||
|
||||
std::optional<std::size_t> id;
|
||||
std::optional<std::string> name = "";
|
||||
std::optional<std::string> groupName;
|
||||
std::optional<std::string> description;
|
||||
|
||||
TargetRegisterDescriptor() = default;
|
||||
explicit TargetRegisterDescriptor(TargetRegisterType type): type(type) {};
|
||||
TargetRegisterDescriptor(std::size_t id, TargetRegisterType type): id(id), type(type) {};
|
||||
|
||||
bool operator == (const TargetRegisterDescriptor& other) const {
|
||||
return this->id == other.id && this->type == other.type;
|
||||
return this->startAddress.value_or(0) == other.startAddress.value_or(0) && this->type == other.type;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -53,7 +51,6 @@ namespace Bloom::Targets
|
||||
}
|
||||
};
|
||||
|
||||
using TargetRegisterMap = std::map<std::size_t, TargetRegister>;
|
||||
using TargetRegisters = std::vector<TargetRegister>;
|
||||
using TargetRegisterDescriptors = std::vector<TargetRegisterDescriptor>;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user