diff options
Diffstat (limited to 'src/core/arm')
| -rw-r--r-- | src/core/arm/interpreter/arm_interpreter.cpp | 39 | ||||
| -rw-r--r-- | src/core/arm/interpreter/arm_interpreter.h | 37 | 
2 files changed, 70 insertions, 6 deletions
| diff --git a/src/core/arm/interpreter/arm_interpreter.cpp b/src/core/arm/interpreter/arm_interpreter.cpp index 81f38f016..4045779d7 100644 --- a/src/core/arm/interpreter/arm_interpreter.cpp +++ b/src/core/arm/interpreter/arm_interpreter.cpp @@ -31,30 +31,61 @@ ARM_Interpreter::ARM_Interpreter()  {      m_state->Reg[13] = 0x10000000; // Set stack pointer to the top of the stack  } +ARM_Interpreter::~ARM_Interpreter() { +    delete m_state; +} + +/** + * Set the Program Counter to an address + * @param addr Address to set PC to + */  void ARM_Interpreter::SetPC(u32 pc) {      m_state->pc = m_state->Reg[15] = pc;  } +/* + * Get the current Program Counter + * @return Returns current PC + */  u32 ARM_Interpreter::GetPC() const {      return m_state->pc;  } +/** + * Get an ARM register + * @param index Register index (0-15) + * @return Returns the value in the register + */  u32 ARM_Interpreter::GetReg(int index) const {      return m_state->Reg[index];  } +/** + * Set an ARM register + * @param index Register index (0-15) + * @param value Value to set register to + */ +void ARM_Interpreter::SetReg(int index, u32 value) { +    m_state->Reg[index] = value; +} + +/** + * Get the current CPSR register + * @return Returns the value of the CPSR register + */  u32 ARM_Interpreter::GetCPSR() const {      return m_state->Cpsr;  } +/** + * Returns the number of clock ticks since the last reset + * @return Returns number of clock ticks + */  u64 ARM_Interpreter::GetTicks() const {      return ARMul_Time(m_state);  } -ARM_Interpreter::~ARM_Interpreter() { -    delete m_state; -} - +/// Execture next instruction  void ARM_Interpreter::ExecuteInstruction() {      m_state->step++;      m_state->cycle++; diff --git a/src/core/arm/interpreter/arm_interpreter.h b/src/core/arm/interpreter/arm_interpreter.h index 932046d9a..f3c86f8dd 100644 --- a/src/core/arm/interpreter/arm_interpreter.h +++ b/src/core/arm/interpreter/arm_interpreter.h @@ -12,22 +12,55 @@  class ARM_Interpreter : virtual public ARM_Interface {  public: +      ARM_Interpreter();      ~ARM_Interpreter(); -    void ExecuteInstruction(); - +    /** +     * Set the Program Counter to an address +     * @param addr Address to set PC to +     */      void SetPC(u32 pc); +    /* +     * Get the current Program Counter +     * @return Returns current PC +     */      u32 GetPC() const; +    /** +     * Get an ARM register +     * @param index Register index (0-15) +     * @return Returns the value in the register +     */      u32 GetReg(int index) const; +    /** +     * Set an ARM register +     * @param index Register index (0-15) +     * @param value Value to set register to +     */ +    void SetReg(int index, u32 value); + +    /** +     * Get the current CPSR register +     * @return Returns the value of the CPSR register +     */      u32 GetCPSR() const; +    /** +     * Returns the number of clock ticks since the last reset +     * @return Returns number of clock ticks +     */      u64 GetTicks() const; +protected: + +    /// Execture next instruction +    void ExecuteInstruction(); +  private: +      ARMul_State* m_state;      DISALLOW_COPY_AND_ASSIGN(ARM_Interpreter); | 
