Files
riscv-emulator/src/components/Memory.h
2025-07-08 22:41:02 +02:00

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