initial memory implementation

This commit is contained in:
black
2025-06-12 15:56:16 +03:00
parent 39b9d1bf54
commit 9a1c44a7ee
2 changed files with 70 additions and 0 deletions

View 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];
}

View 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