libmicroemu 0.2.0
ARM Microcontroller Emulator Library
Loading...
Searching...
No Matches
cpu_states.h
1#pragma once
2
3#include "libmicroemu/exception_states.h"
4#include "libmicroemu/exception_type.h"
5#include "libmicroemu/register_id.h"
7#include "libmicroemu/types.h"
8
9#include <array>
10#include <assert.h>
11#include <cstddef>
12#include <cstdint>
13
14namespace libmicroemu {
15
21class CpuStates {
22
23public:
26 CpuStates() : registers_{}, special_registers_{}, exception_states_{} {
27 registers_.fill(0U);
28 special_registers_.fill(0U);
29 };
30
34 ~CpuStates() noexcept = default;
35
40 CpuStates(CpuStates &r_src) noexcept = default;
41
46 CpuStates(CpuStates &&r_src) noexcept = default;
47
54 inline auto &GetRegisters() noexcept { return registers_; }
55
62 inline const auto &GetRegisters() const noexcept { return registers_; }
63
70 inline auto &GetSpecialRegisters() noexcept { return special_registers_; }
71
78 inline const auto &GetSpecialRegisters() const noexcept { return special_registers_; }
79
86 inline auto &GetExceptionStates() noexcept { return exception_states_; }
87
94 inline const auto &GetExceptionStates() const noexcept { return exception_states_; }
95
96private:
101 CpuStates &operator=(const CpuStates &r_src) noexcept = delete;
102
107 CpuStates &operator=(CpuStates &&r_src) noexcept = delete;
108
109 std::array<u32, CountRegisters()> registers_;
110 std::array<u32, CountPersistentSpecialRegisters()> special_registers_;
111 ExceptionStates exception_states_;
112};
113
114} // namespace libmicroemu
Cpu states class.
Definition cpu_states.h:21
auto & GetExceptionStates() noexcept
Get a reference on the exception states.
Definition cpu_states.h:86
~CpuStates() noexcept=default
Destructor.
const auto & GetRegisters() const noexcept
Get a const reference on the raw register array.
Definition cpu_states.h:62
CpuStates()
Constructs a CpuStates object.
Definition cpu_states.h:26
auto & GetRegisters() noexcept
Get a reference on the raw register array.
Definition cpu_states.h:54
const auto & GetSpecialRegisters() const noexcept
Get a const reference on the raw special register array.
Definition cpu_states.h:78
auto & GetSpecialRegisters() noexcept
Get a reference on the raw special register array.
Definition cpu_states.h:70
const auto & GetExceptionStates() const noexcept
Get a const reference on the exception states.
Definition cpu_states.h:94
The libmicroemu namespace contains all classes and functions of the libmicroemu which are public.
Definition bkpt_flags.h:6
static constexpr u32 CountRegisters() noexcept
Returns the number of general-purpose registers.
Definition register_id.h:45
static constexpr u32 CountPersistentSpecialRegisters() noexcept
Returns the number of persistent special registers.
Definition special_register_id.h:62
This file contains the declaration of the SpecialRegisterId enumeration and related functions.
Definition exception_states.h:97