X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=3b_sim%2Fcmem.hpp;h=b0f4611ac61399017717653c1da9beeb077c4965;hb=HEAD;hp=d5cd593704290ae31f1dae36e44fd614eb17a8ff;hpb=12d2a7c14a42e01b6caf2a097db32404a403d213;p=calu.git diff --git a/3b_sim/cmem.hpp b/3b_sim/cmem.hpp index d5cd593..b0f4611 100644 --- a/3b_sim/cmem.hpp +++ b/3b_sim/cmem.hpp @@ -1,3 +1,24 @@ +/* `Deep Thought', a softcore CPU implemented on a FPGA + + Copyright (C) 2010 Markus Hofstaetter + Copyright (C) 2010 Martin Perner + Copyright (C) 2010 Stefan Rebernig + Copyright (C) 2010 Manfred Schwarz + Copyright (C) 2010 Bernhard Urban + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + #ifndef __CMEM_H__ #define __CMEM_H__ @@ -21,9 +42,14 @@ private: const int MAX_MEMORY; std::vector m_memory; public: - void set(const MEMORY_ADDRESS address, const T& data); + /* aligns to BIT_LEN words, aka. does calc direct memorycell from address */ + void set(const MEMORY_ADDRESS address, const T data); T get(const MEMORY_ADDRESS address) const; - CMem(int size) : MAX_MEMORY(size), m_memory(size) {}; + + /* doesn't align, user has to do */ + void setDirect(const MEMORY_ADDRESS address, const T data); + T getDirect(const MEMORY_ADDRESS address) const; + CMem(int size) : MAX_MEMORY(size), m_memory(size,(T)NULL) {}; }; #endif