sim: fixed misc things
[calu.git] / 3b_sim / cmem.hpp
diff --git a/3b_sim/cmem.hpp b/3b_sim/cmem.hpp
new file mode 100644 (file)
index 0000000..195fe6c
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef __CMEM_H__
+#define __CMEM_H__
+
+#include "cdat.hpp"
+#include <vector>
+#include <stdexcept>
+
+typedef int MEMORY_ADDRESS;
+
+/**
+ * Name:    CMem
+ * Purpose: Class representing the memory of our emulated machine
+ */
+template <class T>
+class CMem
+{
+private:
+       //MAX_MEMORY-1 zugreifbare Speicherzellen
+       const int MAX_MEMORY;
+       std::vector<T> m_memory;
+public:
+       //wert aus referenz auslesen und in vetor speichern (index zugriff!)
+       //address 0 ist ProgramCounter
+       void set(const MEMORY_ADDRESS address, const T& data);
+       //retuniert referenz eines cdat objekts mit dem Wert von address
+       void get(const MEMORY_ADDRESS address, T& data) const;
+       CMem(int size) : MAX_MEMORY(size), m_memory(size) {};
+};
+
+#endif