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:
@@ -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;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user