56 CPUComponent(
const string& className,
const string& cpuKind);
65 return m_symbolRegistry;
69 return m_symbolRegistry;
83 const string& methodName,
84 const vector<string>& arguments);
119 unsigned char *instruction, vector<string>& result) = 0;
124 static void RunUnitTests(
int& nSucceeded,
int& nFailures);
131 uint64_t
Unassemble(
int nRows,
bool indicatePC, uint64_t vaddr, ostream& output);
161 ss.flags(std::ios::hex | std::ios::showbase);
189 bool LookupAddressDataBus(
GXemul* gxemul = NULL);
238 #endif // CPUCOMPONENT_H A registry for loaded symbols.
uint64_t m_delaySlotTarget
virtual bool WriteData(const uint8_t &data, Endianness endianness)
Writes 8-bit data to the currently selected address.
virtual int64_t FunctionTraceArgument(int n)
virtual uint64_t PCtoInstructionAddress(uint64_t pc)
Convert PC value to instuction address.
const SymbolRegistry & GetSymbolRegistry() const
uint64_t m_lastUnassembleVaddr
An interface for implementing components that read/write data via an address bus. ...
int64_t m_nrOfTracedFunctionCalls
virtual void ExecuteMethod(GXemul *gxemul, const string &methodName, const vector< string > &arguments)
Executes a method on the component.
int32_t m_functionCallTraceDepth
bool FunctionTraceReturn()
bool m_showFunctionTraceCall
bool m_exceptionOrAbortInDelaySlot
virtual bool PreRunCheckForComponent(GXemul *gxemul)
Checks the state of this component, before starting execution.
virtual CPUComponent * AsCPUComponent()
Returns the component's CPUComponent interface.
virtual void AddressSelect(uint64_t address)
Place an address on the bus.
virtual void GetMethodNames(vector< string > &names) const
Retrieves a component's implemented method names.
bool m_showFunctionTraceReturn
A Component is a node in the configuration tree that makes up an emulation setup. ...
SymbolRegistry & GetSymbolRegistry()
Gets a reference to the CPU's symbol registry.
virtual bool MethodMayBeReexecutedWithoutArgs(const string &methodName) const
Returns whether a method name may be re-executed without args.
virtual void ShowRegisters(GXemul *gxemul, const vector< string > &arguments) const
virtual int FunctionTraceArgumentCount()
virtual double GetCurrentFrequency() const
Returns the current frequency (in Hz) that the component runs at.
A base-class for processors Component implementations.
virtual size_t DisassembleInstruction(uint64_t vaddr, size_t maxLen, unsigned char *instruction, vector< string > &result)=0
Disassembles an instruction into readable strings.
virtual void ResetState()
Resets the state variables of this component.
AddressDataBus * m_addressDataBus
CPUComponent(const string &className, const string &cpuKind)
Constructs a CPUComponent.
virtual bool VirtualToPhysical(uint64_t vaddr, uint64_t &paddr, bool &writable)=0
Virtual to physical address translation (MMU).
virtual bool FunctionTraceReturnImpl(int64_t &retval)
static void RunUnitTests(int &nSucceeded, int &nFailures)
uint64_t Unassemble(int nRows, bool indicatePC, uint64_t vaddr, ostream &output)
virtual void FlushCachedStateForComponent()
Resets the cached state of this component.
Base class for unit testable classes.
virtual AddressDataBus * AsAddressDataBus()
Returns the component's AddressDataBus interface, if any.
virtual bool ReadData(uint8_t &data, Endianness endianness)
Reads 8-bit data from the currently selected address.
virtual string VirtualAddressAsString(uint64_t vaddr)
Format a virtual address as a displayable string.