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