Max OS 0.3
Loading...
Searching...
No Matches
memoryIO.cpp
Go to the documentation of this file.
1
9#include <memory/memoryIO.h>
10
11using namespace MaxOS::memory;
12
18MemIO::MemIO(uintptr_t address)
19: m_address(address)
20{
21
22}
23
24MemIO::~MemIO() = default;
25
31MemIO8Bit::MemIO8Bit(uintptr_t address)
32: MemIO(address)
33{
34}
35
36MemIO8Bit::~MemIO8Bit() = default;
37
43void MemIO8Bit::write(uint8_t data) {
44
45 (*((volatile uint8_t*) (m_address))) = (data);
46}
47
53uint8_t MemIO8Bit::read() {
54
55 return *((volatile uint8_t*) (m_address));
56}
57
63MemIO16Bit::MemIO16Bit(uintptr_t address)
64: MemIO(address)
65{
66}
67
68MemIO16Bit::~MemIO16Bit() = default;
69
75void MemIO16Bit::write(uint16_t data) {
76
77 (*((volatile uint16_t*) (m_address))) = (data);
78}
79
85uint16_t MemIO16Bit::read() {
86
87 return *((volatile uint16_t*) (m_address));
88}
89
95MemIO32Bit::MemIO32Bit(uintptr_t address)
96: MemIO(address)
97{
98}
99
100MemIO32Bit::~MemIO32Bit() = default;
101
107void MemIO32Bit::write(uint32_t data) {
108
109 (*((volatile uint32_t*) (m_address))) = (data);
110}
111
118
119 return *((volatile uint32_t*) (m_address));
120}
121
127MemIO64Bit::MemIO64Bit(uintptr_t address)
128: MemIO(address)
129{
130}
131
132MemIO64Bit::~MemIO64Bit() = default;
133
139void MemIO64Bit::write(uint64_t data) {
140
141 (*((volatile uint64_t*) (m_address))) = (data);
142}
143
150
151 return *((volatile uint64_t*) (m_address));
152}
MemIO16Bit(uintptr_t address)
Construct a new Mem IO object for 16 bit reads/writes.
Definition memoryIO.cpp:63
virtual uint16_t read()
Reads data from the memory address.
Definition memoryIO.cpp:85
virtual void write(uint16_t data)
Writes data to the memory address.
Definition memoryIO.cpp:75
virtual uint32_t read()
Reads data from the memory address.
Definition memoryIO.cpp:117
MemIO32Bit(uintptr_t address)
Construct a new Mem IO object for 32 bit reads/writes.
Definition memoryIO.cpp:95
virtual void write(uint32_t data)
Writes data to the memory address.
Definition memoryIO.cpp:107
virtual void write(uint64_t data)
Writes data to the memory address.
Definition memoryIO.cpp:139
MemIO64Bit(uintptr_t address)
Construct a new Mem IO object for 64 bit reads/writes.
Definition memoryIO.cpp:127
virtual uint64_t read()
Reads data from the memory address.
Definition memoryIO.cpp:149
virtual uint8_t read()
Reads data from the memory address.
Definition memoryIO.cpp:53
MemIO8Bit(uintptr_t address)
Construct a new Mem IO object for 8 bit reads/writes.
Definition memoryIO.cpp:31
virtual void write(uint8_t data)
Writes data to the memory address.
Definition memoryIO.cpp:43
base class for all memory IO
Definition memoryIO.h:24
uintptr_t m_address
The memory address to read from / write to.
Definition memoryIO.h:26
MemIO(uintptr_t address)
Construct a new Mem IO object.
Definition memoryIO.cpp:18
Defines classes for memory input and output operations of various bit widths (8, 16,...