Download | Plain Text | No Line Numbers
    - /**
-  * @module cinstruction
-  * @author Guenther Neuwirth (0626638), Manuel Mausz (0728348)
-  * @brief  Abstract class for displays
-  * @date   13.05.2009
-  */
-  
- #ifndef CINSTRUCTION_H
- #define CINSTRUCTION_H 1
-  
- #include <iostream>
- #include <list>
-  
- /* forward declare CCPU */
- class CCPU;
-  
- /**
-  * @class CInstruction
-  *
-  * Abstract class for displays
-  */
- class CInstruction
- {
-   public:
-     /**
-      * @method CInstruction
-      * @brief  Default ctor
-      * @param  name  name of instruction
-      * @return -
-      * @globalvars none
-      * @exception  none
-      * @conditions none
-      */
-     CInstruction(std::string name)
-       : m_name(name)
-     {}
-  
-     /**
-      * @method ~CInstruction
-      * @brief  Default dtor
-      * @param  -
-      * @return -
-      * @globalvars none
-      * @exception  none
-      * @conditions none
-      */
-     virtual ~CInstruction()
-     {}
-  
-     /**
-      * @method operator==
-      * @brief  implementation of operator ==
-      * @param  name reference to std::string
-      * @return true if instructionname is name
-      * @globalvars none
-      * @exception  none
-      * @conditions none
-      */
-     virtual bool operator==(std::string& name)
-     {
-       return name == m_name;
-     }
-  
-     /**
-      * @method operator()
-      * @brief  implementation of operator (CCPU)
-      * @param  cpu  pointer to cpu
-      * @return -
-      * @globalvars none
-      * @exception  std::runtime_error
-      * @conditions none
-      */
-     virtual CInstruction& operator()(CCPU *cpu)
-     {
-       execute(cpu);
-       return *this;
-     }
-  
-     /**
-      * @method getName
-      * @brief  returns instruction name
-      * @param  -
-      * @return name of instruction
-      * @globalvars none
-      * @exception  none
-      * @conditions none
-      */
-     virtual const std::string& getName()
-     {
-       return m_name;
-     }
-  
-     /**
-      * @method dump
-      * @brief  dumps information about instruction to outputstream
-      * @param  stream  outputstream
-      * @return reference to outputstream
-      * @globalvars none
-      * @exception  none
-      * @conditions none
-      */
-     virtual std::ostream& dump(std::ostream& stream)
-     {
-       stream << m_name;
-       return stream;
-     }
-  
-     /**
-      * @method operator<<
-      * @brief  Shift/output operator for outputstream
-      * @param  stream  reference to outputstream
-      * @param  instr   object which will be printed to stream
-      * @return reference to outputstream
-      * @globalvars none
-      * @exception  none
-      * @conditions none
-      */
-     friend std::ostream& operator<<(std::ostream& stream, CInstruction& instr)
-     {
-       return instr.dump(stream);
-     }
-  
-     /**
-      * @method parseRegister
-      * @brief  parses register syntax Rx (e.g. "R1")
-      * @param  str  register in assembler syntax
-      * @return registernumber
-      * @globalvars none
-      * @exception  std::runtime_error
-      * @conditions none
-      */
-     virtual const unsigned parseRegister(const std::string& str);
-  
-     /**
-      * @method checkRegister
-      * @brief  performs a register boundary check
-      *         does the register exist in cpu?
-      * @param  cpu     pointer to cpu
-      * @param  regidx  registernumber
-      * @return -
-      * @globalvars none
-      * @exception  std::runtime_error
-      * @conditions none
-      */
-     virtual void checkRegister(CCPU *cpu, const unsigned regidx);
-  
-     /**
-      * @method factory
-      * @brief  creates a new instance of this instruction
-      * @param  -
-      * @return new instruction instance
-      * @globalvars none
-      * @exception  none
-      * @conditions none
-      */
-     virtual CInstruction *factory() = 0;
-  
-     /**
-      * @method compile
-      * @brief  parses instruction parameters and prepares the
-      *         instruction for executing
-      * @param  params  list of parameters of this instruction
-      * @return -
-      * @globalvars none
-      * @exception  std::runtime_error
-      * @conditions none
-      */
-     virtual void compile(std::list<std::string>& params) = 0;
-  
-     /**
-      * @method execute
-      * @brief  executes the instruction
-      * @param  cpu  pointer to cpu
-      * @return -
-      * @globalvars none
-      * @exception  std::runtime_error
-      * @conditions none
-      */
-     virtual void execute(CCPU *cpu) = 0;
-  
-   protected:
-     /* members */
-     /** name of instruction */
-     std::string m_name;
- };
-  
- #endif
-  
- /* vim: set et sw=2 ts=2: */
-