From 26a97259f5a7b066cff2927e88c867fac2aaad87 Mon Sep 17 00:00:00 2001 From: manuel Date: Tue, 26 May 2009 23:10:13 +0200 Subject: template FTW!!!!!11 --- ue4/mycpu/ccpu.cpp | 89 ------------------------------------------------------ 1 file changed, 89 deletions(-) delete mode 100644 ue4/mycpu/ccpu.cpp (limited to 'ue4/mycpu/ccpu.cpp') diff --git a/ue4/mycpu/ccpu.cpp b/ue4/mycpu/ccpu.cpp deleted file mode 100644 index af86200..0000000 --- a/ue4/mycpu/ccpu.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/** - * @module ccpu - * @author Guenther Neuwirth (0626638), Manuel Mausz (0728348) - * @brief CPU implementation. Used as a container for memory and instructions. - * Implements an run method to execute the program (= the instructions). - * @date 10.05.2009 - */ - -#ifdef DEBUG -# include -# include -#endif -#include "ccpu.h" -#include "displays.h" - -using namespace std; - -CCPU::CCPU(const unsigned cnt) - : m_regcnt(cnt), m_memory(NULL), m_program(NULL), m_flagzero(false), m_flagsign(false) -{ - /* create registers */ - m_registers = new CDat[cnt]; - for(unsigned i = 0; i < cnt; ++i) - m_registers[i] = 0; - - /* create displays */ - m_displays.insert(new CDisplayWDEZ); - m_displays.insert(new CDisplayWHEX); -} - -/*----------------------------------------------------------------------------*/ - -CCPU::~CCPU() -{ - /* delete registers */ - delete[] m_registers; - m_registers = NULL; - - /* delete displays */ - std::set::iterator it; - for (it = m_displays.begin() ; it != m_displays.end(); ++it) - delete *it; -} - -/*----------------------------------------------------------------------------*/ - -void CCPU::run() -{ - if (m_memory == NULL) - throw runtime_error("CPU has no memory"); - if (m_program == NULL) - throw runtime_error("CPU has no program to execute"); - if (m_regcnt == 0) - throw runtime_error("CPU has no registers"); - - bool run = true; - while(run) - { - unsigned pc = static_cast(m_registers[0]); - - /* end of the program reached */ - if (pc == m_program->size()) - break; - - /* pc is out of bound */ - if (pc > m_program->size()) - throw runtime_error("Programcounter is out of bound"); - - /* execute instruction */ - (*m_program->at(pc))(this); - ++m_registers[0]; - } -} - -/*----------------------------------------------------------------------------*/ - -#if DEBUG -void CCPU::dumpRegisters(std::ostream& out) -{ - out << "[REGISTER DUMP]" << endl; - for(unsigned i = 0; i < getRegisterCount(); ++i) - { - out << "[" << std::setw(4) << std::setfill('0') << i << "] " - << m_registers[i] << endl; - } -} -#endif - -/* vim: set et sw=2 ts=2: */ -- cgit v1.2.3