|
|
@ -17,12 +17,20 @@ public: |
|
|
~ARM_Interface() { |
|
|
~ARM_Interface() { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* Runs the CPU for the given number of instructions |
|
|
|
|
|
* @param num_instructions Number of instructions to run |
|
|
|
|
|
*/ |
|
|
|
|
|
void Run(int num_instructions) { |
|
|
|
|
|
ExecuteInstructions(num_instructions); |
|
|
|
|
|
m_num_instructions += num_instructions; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/// Step CPU by one instruction |
|
|
/// Step CPU by one instruction |
|
|
void Step() { |
|
|
void Step() { |
|
|
ExecuteInstruction(); |
|
|
|
|
|
m_num_instructions++; |
|
|
|
|
|
|
|
|
Run(1); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* Set the Program Counter to an address |
|
|
* Set the Program Counter to an address |
|
|
* @param addr Address to set PC to |
|
|
* @param addr Address to set PC to |
|
|
@ -74,8 +82,11 @@ public: |
|
|
|
|
|
|
|
|
protected: |
|
|
protected: |
|
|
|
|
|
|
|
|
/// Execture next instruction |
|
|
|
|
|
virtual void ExecuteInstruction() = 0; |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* Executes the given number of instructions |
|
|
|
|
|
* @param num_instructions Number of instructions to executes |
|
|
|
|
|
*/ |
|
|
|
|
|
virtual void ExecuteInstructions(int num_instructions) = 0; |
|
|
|
|
|
|
|
|
private: |
|
|
private: |
|
|
|
|
|
|
|
|
|