9#ifndef MAXOS_MEMORY_MEMORYINPUTOUTPUT_H
10#define MAXOS_MEMORY_MEMORYINPUTOUTPUT_H
16namespace MaxOS::memory {
28 explicit MemIO(uintptr_t address);
41 virtual void write(uint8_t data);
42 virtual uint8_t
read();
54 virtual void write(uint16_t data);
55 virtual uint16_t
read();
67 virtual void write(uint32_t data);
68 virtual uint32_t
read();
80 virtual void write(uint64_t data);
81 virtual uint64_t
read();
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);
Handles 16 bit memory IO.
virtual uint16_t read()
Reads data from the memory address.
virtual void write(uint16_t data)
Writes data to the memory address.
Handles 32 bit memory IO.
virtual uint32_t read()
Reads data from the memory address.
virtual void write(uint32_t data)
Writes data to the memory address.
Handles 64 bit memory IO.
virtual void write(uint64_t data)
Writes data to the memory address.
virtual uint64_t read()
Reads data from the memory address.
virtual uint8_t read()
Reads data from the memory address.
virtual void write(uint8_t data)
Writes data to the memory address.
base class for all memory IO
uintptr_t m_address
The memory address to read from / write to.
void * memmove(void *destination, const void *source, uint64_t num)
Copies a block of memory from one location to another.
void * memcpy(void *destination, const void *source, uint64_t num)
Copies a block of memory from one location to another.
int memcmp(const void *ptr1, const void *ptr2, uint64_t num)
Compares two blocks of memory.
void * memset(void *ptr, uint32_t value, uint64_t num)
Fills a block of memory with a specified value.