Lots of tidying

- Removed generic `avr8` target
- Simplified AVR8 target construction
- Introduced register descriptor IDs
- Simplified GDB register mappings
- Simplified target interface contract
- Other bits of tidying
This commit is contained in:
Nav
2023-05-21 21:08:25 +01:00
parent 5f8242a87a
commit ba03833325
62 changed files with 1304 additions and 1577 deletions

View File

@@ -4,6 +4,7 @@
#include <cstdint>
#include <vector>
#include <map>
#include <algorithm>
#include <QMetaType>
#include "TargetMemory.hpp"
@@ -18,10 +19,40 @@ namespace Bloom::Targets
std::string id;
std::string vendorName;
std::map<TargetMemoryType, TargetMemoryDescriptor> memoryDescriptorsByType;
std::map<TargetRegisterType, TargetRegisterDescriptors> registerDescriptorsByType;
std::map<TargetRegisterDescriptorId, TargetRegisterDescriptor> registerDescriptorsById;
std::vector<TargetVariant> variants;
TargetMemoryType programMemoryType;
TargetDescriptor(
std::string id,
std::string name,
std::string vendorName,
std::map<TargetMemoryType, TargetMemoryDescriptor> memoryDescriptorsByType,
std::map<TargetRegisterDescriptorId, TargetRegisterDescriptor> registerDescriptorsById,
std::vector<TargetVariant> variants,
TargetMemoryType programMemoryType
)
: name(name)
, id(id)
, vendorName(vendorName)
, memoryDescriptorsByType(memoryDescriptorsByType)
, registerDescriptorsById(registerDescriptorsById)
, variants(variants)
, programMemoryType(programMemoryType)
{}
TargetRegisterDescriptorIds registerDescriptorIdsForType(TargetRegisterType type) {
auto output = TargetRegisterDescriptorIds();
for (const auto& [descriptorId, descriptor] : this->registerDescriptorsById) {
if (descriptor.type == type) {
output.insert(descriptorId);
}
}
return output;
}
};
}