Used TargetMemoryAddressRange in address space and memory segment descriptors

This commit is contained in:
Nav
2024-03-16 16:22:35 +00:00
parent 4675d1fddc
commit 11a714d4b6
3 changed files with 22 additions and 16 deletions

View File

@@ -19,26 +19,27 @@ namespace Targets
public: public:
const TargetAddressSpaceDescriptorId id; const TargetAddressSpaceDescriptorId id;
std::string key; std::string key;
TargetMemoryAddress startAddress; TargetMemoryAddressRange addressRange;
TargetMemorySize size;
TargetMemoryEndianness endianness; TargetMemoryEndianness endianness;
std::map<std::string, TargetMemorySegmentDescriptor> segmentDescriptorsByKey; std::map<std::string, TargetMemorySegmentDescriptor> segmentDescriptorsByKey;
TargetAddressSpaceDescriptor( TargetAddressSpaceDescriptor(
const std::string& key, const std::string& key,
TargetMemoryAddress startAddress, const TargetMemoryAddressRange& addressRange,
TargetMemorySize size,
TargetMemoryEndianness endianness, TargetMemoryEndianness endianness,
const std::map<std::string, TargetMemorySegmentDescriptor>& segmentDescriptorsByKey const std::map<std::string, TargetMemorySegmentDescriptor>& segmentDescriptorsByKey
) )
: id(++(TargetAddressSpaceDescriptor::lastAddressSpaceDescriptorId)) : id(++(TargetAddressSpaceDescriptor::lastAddressSpaceDescriptorId))
, key(key) , key(key)
, startAddress(startAddress) , addressRange(addressRange)
, size(size)
, endianness(endianness) , endianness(endianness)
, segmentDescriptorsByKey(segmentDescriptorsByKey) , segmentDescriptorsByKey(segmentDescriptorsByKey)
{}; {};
TargetMemorySize size() const {
return this->addressRange.size();
}
std::optional<std::reference_wrapper<const TargetMemorySegmentDescriptor>> tryGetMemorySegmentDescriptor( std::optional<std::reference_wrapper<const TargetMemorySegmentDescriptor>> tryGetMemorySegmentDescriptor(
const std::string& key const std::string& key
) const { ) const {

View File

@@ -695,8 +695,10 @@ namespace Targets::TargetDescription
) { ) {
auto output = TargetAddressSpaceDescriptor( auto output = TargetAddressSpaceDescriptor(
addressSpace.key, addressSpace.key,
addressSpace.startAddress, TargetMemoryAddressRange(
addressSpace.size, addressSpace.startAddress,
addressSpace.startAddress + addressSpace.size - 1
),
addressSpace.endianness.value_or(TargetMemoryEndianness::LITTLE), addressSpace.endianness.value_or(TargetMemoryEndianness::LITTLE),
{} {}
); );
@@ -718,8 +720,10 @@ namespace Targets::TargetDescription
memorySegment.key, memorySegment.key,
memorySegment.name, memorySegment.name,
memorySegment.type, memorySegment.type,
memorySegment.startAddress, TargetMemoryAddressRange(
memorySegment.size, memorySegment.startAddress,
memorySegment.startAddress + memorySegment.size - 1
),
memorySegment.access, memorySegment.access,
memorySegment.access, memorySegment.access,
memorySegment.pageSize memorySegment.pageSize

View File

@@ -14,8 +14,7 @@ namespace Targets
std::string key; std::string key;
std::string name; std::string name;
TargetMemorySegmentType type; TargetMemorySegmentType type;
TargetMemoryAddress startAddress; TargetMemoryAddressRange addressRange;
TargetMemorySize size;
TargetMemoryAccess debugModeAccess; TargetMemoryAccess debugModeAccess;
TargetMemoryAccess programmingModeAccess; TargetMemoryAccess programmingModeAccess;
std::optional<TargetMemorySize> pageSize; std::optional<TargetMemorySize> pageSize;
@@ -24,8 +23,7 @@ namespace Targets
const std::string& key, const std::string& key,
const std::string& name, const std::string& name,
TargetMemorySegmentType type, TargetMemorySegmentType type,
TargetMemoryAddress startAddress, const TargetMemoryAddressRange& addressRange,
TargetMemorySize size,
const TargetMemoryAccess& debugModeAccess, const TargetMemoryAccess& debugModeAccess,
const TargetMemoryAccess& programmingModeAccess, const TargetMemoryAccess& programmingModeAccess,
std::optional<TargetMemorySize> pageSize std::optional<TargetMemorySize> pageSize
@@ -33,11 +31,14 @@ namespace Targets
: key(key) : key(key)
, name(name) , name(name)
, type(type) , type(type)
, startAddress(startAddress) , addressRange(addressRange)
, size(size)
, debugModeAccess(debugModeAccess) , debugModeAccess(debugModeAccess)
, programmingModeAccess(programmingModeAccess) , programmingModeAccess(programmingModeAccess)
, pageSize(pageSize) , pageSize(pageSize)
{}; {};
TargetMemorySize size() const {
return this->addressRange.size();
}
}; };
} }