initial memory implementation
This commit is contained in:
18
emulator/components/Memory.cpp
Normal file
18
emulator/components/Memory.cpp
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
//
|
||||||
|
// Created by black on 12.06.25.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "Memory.h"
|
||||||
|
|
||||||
|
Memory *Memory::getInstance() {
|
||||||
|
static Memory instance;
|
||||||
|
return &instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Memory::store(const int address, const int value) {
|
||||||
|
m_memory[address] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Memory::load(const int address) const {
|
||||||
|
return m_memory[address];
|
||||||
|
}
|
||||||
52
emulator/components/Memory.h
Normal file
52
emulator/components/Memory.h
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
//
|
||||||
|
// Created by black on 12.06.25.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef MEMORY_H
|
||||||
|
#define MEMORY_H
|
||||||
|
|
||||||
|
/// Eine Hauptspeicherklasse als Singleton implementiert.
|
||||||
|
/// Als Hauptspeicher wird ein Array genutzt.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Memory {
|
||||||
|
private:
|
||||||
|
Memory() = default;
|
||||||
|
|
||||||
|
/// Singleton instance
|
||||||
|
static Memory *m_instance;
|
||||||
|
/// Hauptspeicher (hier 32 kB groß)
|
||||||
|
int m_memory[8192];
|
||||||
|
|
||||||
|
public:
|
||||||
|
/// Singleton Logik
|
||||||
|
Memory(const Memory &) = delete;
|
||||||
|
Memory(const Memory &&) = delete;
|
||||||
|
Memory &operator=(const Memory &) = delete;
|
||||||
|
Memory &operator=(const Memory &&) = delete;
|
||||||
|
~Memory() = default;
|
||||||
|
|
||||||
|
static Memory *getInstance();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Speichert den angegebenen Wert an der angegebenen Adresse im Hauptspeicher
|
||||||
|
*
|
||||||
|
* @param address Die Adresse, in die der Wert gespeichert werden soll
|
||||||
|
* @param value Der Wert, der in die Adresse gespeichert werden soll
|
||||||
|
*/
|
||||||
|
void store(int address, int value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lädt den gespeicherten Wert aus der angegebenen Adresse
|
||||||
|
*
|
||||||
|
* @param address Die Adresse, aus der der Wert gelesen werden soll
|
||||||
|
* @return Der Wert aus der Adresse
|
||||||
|
*/
|
||||||
|
int load(int address) const;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif //MEMORY_H
|
||||||
Reference in New Issue
Block a user