libmicroemu 0.2.0
ARM Microcontroller Emulator Library
Loading...
Searching...
No Matches
reg_access.h
1#pragma once
2#include "libmicroemu/emu_context.h"
3#include <string_view>
4
5// Write implementation of IRegAccessor
6namespace libmicroemu::internal {
19template <typename TCpuAccessor> class RegAccessor : public IRegAccessor {
20public:
21 using CpuAccessor = TCpuAccessor;
22 using Reg = typename CpuAccessor::Reg;
23 using SReg = typename CpuAccessor::SReg;
29 RegAccessor(CpuAccessor &cpua) : cpua_(cpua) {}
30
34 ~RegAccessor() = default;
35
39 RegAccessor(const RegAccessor &) = default;
40
44 RegAccessor &operator=(const RegAccessor &) = default;
45
49 RegAccessor(RegAccessor &&) = default;
50
55
57 std::string_view GetRegisterName(const RegisterId &id) const override {
58 const RegisterId eid = static_cast<RegisterId>(id);
59 return Reg::GetRegisterName(eid);
60 }
61
63 u32 ReadRegister(const RegisterId &id) const override { return cpua_.ReadRegister(id); }
64
66 void WriteRegister(const RegisterId &id, u32 value) override { cpua_.WriteRegister(id, value); }
67
68private:
69 CpuAccessor &cpua_;
70};
71
72} // namespace libmicroemu::internal
Interface for accessing general-purpose registers.
Definition emu_context.h:25
Definition cpu_accessor.h:17
RegAccessor & operator=(RegAccessor &&)=default
Default move assignment operator for the RegAccessor object.
RegAccessor(RegAccessor &&)=default
Default move constructor for the RegAccessor object.
RegAccessor(const RegAccessor &)=default
Default copy constructor for the RegAccessor object.
void WriteRegister(const RegisterId &id, u32 value) override
Writes the value to the specified register.
Definition reg_access.h:66
u32 ReadRegister(const RegisterId &id) const override
Reads the value of the specified register.
Definition reg_access.h:63
RegAccessor(CpuAccessor &cpua)
Constructs a RegAccessor object with the given processor states.
Definition reg_access.h:29
~RegAccessor()=default
Default destructor for the RegAccessor object.
RegAccessor & operator=(const RegAccessor &)=default
Default copy assignment operator for the RegAccessor object.
std::string_view GetRegisterName(const RegisterId &id) const override
Gets the name of the specified register.
Definition reg_access.h:57
The libmicroemu::internal namespace contains all classes and functions of libmicroemu which are priva...
Definition bkpt_flags.h:6
RegisterId
Enumeration of register IDs.
Definition register_id.h:13