sim: fixed misc things
[calu.git] / 3b_sim / cmem.hpp
1 #ifndef __CMEM_H__
2 #define __CMEM_H__
3
4 #include "cdat.hpp"
5 #include <vector>
6 #include <stdexcept>
7
8 typedef int MEMORY_ADDRESS;
9
10 /**
11  * Name:    CMem
12  * Purpose: Class representing the memory of our emulated machine
13  */
14 template <class T>
15 class CMem
16 {
17 private:
18         //MAX_MEMORY-1 zugreifbare Speicherzellen
19         const int MAX_MEMORY;
20         std::vector<T> m_memory;
21 public:
22         //wert aus referenz auslesen und in vetor speichern (index zugriff!)
23         //address 0 ist ProgramCounter
24         void set(const MEMORY_ADDRESS address, const T& data);
25         //retuniert referenz eines cdat objekts mit dem Wert von address
26         void get(const MEMORY_ADDRESS address, T& data) const;
27         CMem(int size) : MAX_MEMORY(size), m_memory(size) {};
28 };
29
30 #endif