66 lines
1.4 KiB
C++
66 lines
1.4 KiB
C++
//
|
|
// Created by black on 12.06.25.
|
|
//
|
|
|
|
#ifndef MEMORY_H
|
|
#define MEMORY_H
|
|
#include <array>
|
|
|
|
// Eine Hauptspeicherklasse als Singleton implementiert.
|
|
// Als Hauptspeicher wird ein Array genutzt.
|
|
|
|
|
|
class Memory {
|
|
private:
|
|
Memory();
|
|
|
|
// Singleton instance
|
|
static Memory *m_instance;
|
|
// Hauptspeicher (hier 32 kB groß)
|
|
std::array<int, 8192> m_memory{};
|
|
|
|
public:
|
|
// Singleton Logik
|
|
Memory(const Memory &) = delete;
|
|
|
|
Memory(const Memory &&) = delete;
|
|
|
|
Memory &operator=(const Memory &) = delete;
|
|
|
|
Memory &operator=(const Memory &&) = delete;
|
|
|
|
~Memory() = default;
|
|
|
|
/**
|
|
*
|
|
* @return Memory Instanz
|
|
*/
|
|
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
|
|
*/
|
|
[[nodiscard]] int load(int address) const;
|
|
|
|
/**
|
|
* Gibt den angegebenen Teil des RAM in der Konsole aus
|
|
*
|
|
* @param size Die Anzahl der auszugebenden RAM-Blöcke
|
|
*/
|
|
void dump(int size) const;
|
|
};
|
|
|
|
|
|
#endif //MEMORY_H
|