// // 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() = default; /// 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; 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