// // Created by black on 12.06.25. // #ifndef MEMORY_H #define MEMORY_H #include // 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 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