New wrb GDB monitor command, for writing to individual bit fields of target registers

This commit is contained in:
Nav
2024-12-18 01:11:41 +00:00
parent b7aea71327
commit ef19ffe996
9 changed files with 293 additions and 1 deletions

View File

@@ -1,5 +1,9 @@
#include "TargetBitFieldDescriptor.hpp"
#include <bitset>
#include <limits>
#include <numeric>
namespace Targets
{
TargetBitFieldDescriptor::TargetBitFieldDescriptor(
@@ -14,6 +18,21 @@ namespace Targets
, description(description)
{}
std::size_t TargetBitFieldDescriptor::width() const {
const auto maskBitset = std::bitset<std::numeric_limits<decltype(TargetBitFieldDescriptor::mask)>::digits>{
this->mask
};
auto width = std::size_t{0};
for (auto maskIndex = std::size_t{0}; maskIndex < maskBitset.size(); ++maskIndex) {
if (maskBitset[maskIndex]) {
++width;
}
}
return width;
}
TargetBitFieldDescriptor TargetBitFieldDescriptor::clone() const {
return {*this};
}