mycpu/ccpu.h

00001 
00009 #ifndef CCPU_H
00010 #define CCPU_H 1
00011 
00012 #include <iostream>
00013 #include <set>
00014 #include "cdat.h"
00015 #include "cmem.h"
00016 #include "cprogram.h"
00017 #include "cdisplay.h"
00018 
00025 class CCPU
00026 {
00027   public:
00037     CCPU(const unsigned cnt);
00038 
00048     ~CCPU();
00049 
00059     const unsigned getRegisterCount() const
00060     {
00061       return m_regcnt;
00062     }
00063 
00073     CDat *getRegisters() const
00074     {
00075       return m_registers;
00076     }
00077 
00087     void setMemory(CMem *memory)
00088     {
00089       m_memory = memory;
00090     }
00091 
00101     CMem *getMemory() const
00102     {
00103       return m_memory;
00104     }
00105 
00115     void setProgram(const CProgram *program)
00116     {
00117       m_program = program;
00118     }
00119 
00129     const CProgram *getProgram()
00130     {
00131       return m_program;
00132     }
00133 
00143     const std::set<CDisplay *>& getDisplays()
00144     {
00145       return m_displays;
00146     }
00147 
00157     void setFlagZero(const bool value)
00158     {
00159       m_flagzero = value;
00160     }
00161 
00171     const bool getFlagZero()
00172     {
00173       return m_flagzero;
00174     }
00175 
00185     void setFlagSign(const bool value)
00186     {
00187       m_flagsign = value;
00188     }
00189 
00199     const bool getFlagSign()
00200     {
00201       return m_flagsign;
00202     }
00203 
00213     void run();
00214 
00215 #if DEBUG
00216 
00225     void dumpRegisters(std::ostream& out);
00226 #endif
00227 
00228   private:
00229     /* members */
00230     CDat *m_registers;
00231     unsigned m_regcnt;
00232     CMem *m_memory;
00233     const CProgram *m_program;
00234     std::set<CDisplay *> m_displays;
00235     bool m_flagzero;
00236     bool m_flagsign;
00237 };
00238 
00239 #endif
00240 
00241 /* vim: set et sw=2 ts=2: */

Generated on Thu May 14 18:19:16 2009 for mycpu by  doxygen 1.5.3