Max OS 0.3
Loading...
Searching...
No Matches
memoryIO.h
Go to the documentation of this file.
1
9#ifndef MAXOS_MEMORY_MEMORYINPUTOUTPUT_H
10#define MAXOS_MEMORY_MEMORYINPUTOUTPUT_H
11
12#include <cstdint>
13#include <cstddef>
14
15
16namespace MaxOS::memory {
17
24 class MemIO {
25 protected:
26 uintptr_t m_address;
27
28 explicit MemIO(uintptr_t address);
29 ~MemIO();
30 };
31
36 class MemIO8Bit : public MemIO {
37 public:
38 explicit MemIO8Bit(uintptr_t address);
39 ~MemIO8Bit();
40
41 virtual void write(uint8_t data);
42 virtual uint8_t read();
43 };
44
49 class MemIO16Bit : public MemIO {
50 public:
51 explicit MemIO16Bit(uintptr_t address);
53
54 virtual void write(uint16_t data);
55 virtual uint16_t read();
56 };
57
62 class MemIO32Bit : public MemIO {
63 public:
64 explicit MemIO32Bit(uintptr_t address);
66
67 virtual void write(uint32_t data);
68 virtual uint32_t read();
69 };
70
75 class MemIO64Bit : public MemIO {
76 public:
77 explicit MemIO64Bit(uintptr_t address);
79
80 virtual void write(uint64_t data);
81 virtual uint64_t read();
82 };
83
84}
85
86
87void* memcpy(void* destination, const void* source, uint64_t num);
88void* memset(void* ptr, uint32_t value, uint64_t num);
89void* memmove(void* destination, const void* source, uint64_t num);
90int memcmp(const void* ptr1, const void* ptr2, uint64_t num);
91
92#endif //MAXOS_MEMORY_MEMORYINPUTOUTPUT_H
Handles 16 bit memory IO.
Definition memoryIO.h:49
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
Handles 32 bit memory IO.
Definition memoryIO.h:62
virtual uint32_t read()
Reads data from the memory address.
Definition memoryIO.cpp:117
virtual void write(uint32_t data)
Writes data to the memory address.
Definition memoryIO.cpp:107
Handles 64 bit memory IO.
Definition memoryIO.h:75
virtual void write(uint64_t data)
Writes data to the memory address.
Definition memoryIO.cpp:139
virtual uint64_t read()
Reads data from the memory address.
Definition memoryIO.cpp:149
Handles 8 bit memory IO.
Definition memoryIO.h:36
virtual uint8_t read()
Reads data from the memory address.
Definition memoryIO.cpp:53
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
void * memmove(void *destination, const void *source, uint64_t num)
Copies a block of memory from one location to another.
Definition memoryIO.cpp:235
void * memcpy(void *destination, const void *source, uint64_t num)
Copies a block of memory from one location to another.
Definition memoryIO.cpp:165
int memcmp(const void *ptr1, const void *ptr2, uint64_t num)
Compares two blocks of memory.
Definition memoryIO.cpp:265
void * memset(void *ptr, uint32_t value, uint64_t num)
Fills a block of memory with a specified value.
Definition memoryIO.cpp:215