ETISS 0.8.0
Extendable Translating Instruction Set Simulator (version 0.8.0)
|
a simple plugin that prints the instruction and address when an instruction is executed More...
#include <InstructionSpecificAddressCallback.h>
Classes | |
struct | Data |
Public Member Functions | |
InstructionSpecificAddressCallback () | |
~InstructionSpecificAddressCallback () | |
virtual bool | callback ()=0 |
implement this callback to manipulate the cpu be fore executing the defined instructions at the defined address More... | |
virtual bool | callbackOnInstruction (etiss::instr::Instruction &instr) const |
implement to return true to call InstructionSpecificAddressCallback::callback whenever that etiss::instr::Instruction is executed. More... | |
virtual void | addCallbackAddress (uint64_t addr) |
call to add an address at which callback should be called upon execution. More... | |
virtual void | removeCallbackAddress (uint64_t addr) |
const std::set< uint64_t > & | callbackAddresses () const |
virtual void | finalizeInstrSet (etiss::instr::ModedInstructionSet &) const |
called after all instructions have been added to allow last changes More... | |
virtual void | initCodeBlock (etiss::CodeBlock &block) const |
called before instructions are translated for the code block More... | |
virtual std::string | _getPluginName () const |
virtual void * | getPluginHandle () |
called to get the handle that is available in translated code via getPoinerCode(). [default: this] More... | |
Public Member Functions inherited from etiss::TranslationPlugin | |
TranslationPlugin () | |
virtual | ~TranslationPlugin () |
virtual void | initInstrSet (etiss::instr::ModedInstructionSet &) const |
called to add instructions to the instruction set More... | |
virtual void | finalizeCodeBlock (etiss::CodeBlock &) const |
called after all instructions have been translated for the code block More... | |
Public Member Functions inherited from etiss::Plugin | |
virtual | ~Plugin () |
unsigned | getType () |
InterruptListenerPlugin * | getInterruptListenerPlugin () |
CoroutinePlugin * | getCoroutinePlugin () |
SystemWrapperPlugin * | getSystemWrapperPlugin () |
RegisterDevicePlugin * | getRegisterDevicePlugin () |
TranslationPlugin * | getTranslationPlugin () |
std::string | getPluginName () const |
const std::string & | getLastAssignedCoreName () |
std::string | toString () const |
Public Member Functions inherited from etiss::ToString | |
ToString () | |
virtual | ~ToString () |
Private Attributes | |
Data | pluginData_ |
std::set< uint64_t > | caddrset_ |
Additional Inherited Members | |
Static Public Attributes inherited from etiss::Plugin | |
static const unsigned | INTERRUPTLISTENER = 1 << 0 |
access to translated code More... | |
static const unsigned | COROUTINE = 1 << 1 |
callback after execution of each translated block More... | |
static const unsigned | SYSTEMWRAPPER = 1 << 2 |
can wrap/change ETISS_System structure at execution start More... | |
static const unsigned | REGISTERDEVICE |
gets noticed of changes to special registers (e.g. mmu register etc. [depends on architecture]) More... | |
static const unsigned | TRANSLATION |
access to translated code during translation phase or when instruction tree is built More... | |
Protected Member Functions inherited from etiss::TranslationPlugin | |
std::string | getPointerCode () const |
returns a C code expression that allows to get or assign a pointer to the variable assigned to this translation plugin. More... | |
Protected Member Functions inherited from etiss::Plugin | |
Plugin (unsigned type=0) | |
virtual void | init (ETISS_CPU *cpu, ETISS_System *system, CPUArch *arch) |
this function is called before the plugin is used in the cpu execution loop (etiss::CPUCore::execute). More... | |
virtual void | cleanup () |
this function is called after cpu execution loop (etiss::CPUCore::execute) finished. More... | |
void | setCorrespondingCPUCoreName (std::string name) |
virtual void | addedToCPUCore (etiss::CPUCore *core) |
called as soon a plugin has been added to its CPUCore. More... | |
virtual void | removedFromCPUCore (etiss::CPUCore *core) |
called as soon a plugin has been removed from its CPUCore. More... | |
Protected Attributes inherited from etiss::Plugin | |
ETISS_CPU * | plugin_cpu_ |
holds a pointer to the cpu structure. will be set before init call and after cleanup call More... | |
ETISS_System * | plugin_system_ |
holds a pointer to the system structure. More... | |
CPUArch * | plugin_arch_ |
holds a pointer to the CPUArch instance. will be set before init call and after cleanup call More... | |
CPUCore * | plugin_core_ |
holds a pointer to the associated CPUCore instance. More... | |
a simple plugin that prints the instruction and address when an instruction is executed
Definition at line 67 of file InstructionSpecificAddressCallback.h.
InstructionSpecificAddressCallback::InstructionSpecificAddressCallback | ( | ) |
Definition at line 78 of file InstructionSpecificAddressCallback.cpp.
References pluginData_, etiss::plugin::InstructionSpecificAddressCallback::Data::state_, and etiss::plugin::InstructionSpecificAddressCallback::Data::this_.
InstructionSpecificAddressCallback::~InstructionSpecificAddressCallback | ( | ) |
Definition at line 83 of file InstructionSpecificAddressCallback.cpp.
|
virtual |
Implements etiss::Plugin.
Definition at line 143 of file InstructionSpecificAddressCallback.cpp.
|
inlinevirtual |
call to add an address at which callback should be called upon execution.
May be changed during execution.please not that only aligned addresses will have an effect.
Definition at line 93 of file InstructionSpecificAddressCallback.h.
References caddrset_, pluginData_, and etiss::plugin::InstructionSpecificAddressCallback::Data::state_.
|
pure virtual |
implement this callback to manipulate the cpu be fore executing the defined instructions at the defined address
|
inline |
Definition at line 104 of file InstructionSpecificAddressCallback.h.
References caddrset_.
Referenced by finalizeInstrSet().
|
inlinevirtual |
implement to return true to call InstructionSpecificAddressCallback::callback whenever that etiss::instr::Instruction is executed.
used by finalizeInstrSet
Definition at line 89 of file InstructionSpecificAddressCallback.h.
Referenced by finalizeInstrSet().
|
virtual |
called after all instructions have been added to allow last changes
Reimplemented from etiss::TranslationPlugin.
Definition at line 93 of file InstructionSpecificAddressCallback.cpp.
References etiss::instr::Instruction::addCallback(), etiss::CodeSet::append(), callbackAddresses(), callbackOnInstruction(), etiss::instr::InstructionContext::current_address_, etiss::instr::InstructionSet::foreach(), etiss::instr::VariableInstructionSet::foreach(), etiss::instr::ModedInstructionSet::foreach(), etiss::TranslationPlugin::getPointerCode(), and etiss::CodePart::PREINITIALDEBUGRETURNING.
|
virtual |
called to get the handle that is available in translated code via getPoinerCode(). [default: this]
Reimplemented from etiss::TranslationPlugin.
Definition at line 148 of file InstructionSpecificAddressCallback.cpp.
References pluginData_.
|
virtual |
called before instructions are translated for the code block
Reimplemented from etiss::TranslationPlugin.
Definition at line 85 of file InstructionSpecificAddressCallback.cpp.
References etiss::CodeBlock::fileglobalCode(), etiss::CodeBlock::functionglobalCode(), etiss::TranslationPlugin::getPointerCode(), pluginData_, etiss::plugin::InstructionSpecificAddressCallback::Data::state_, and etiss::toString().
|
inlinevirtual |
Definition at line 98 of file InstructionSpecificAddressCallback.h.
References caddrset_, pluginData_, and etiss::plugin::InstructionSpecificAddressCallback::Data::state_.
|
private |
Definition at line 79 of file InstructionSpecificAddressCallback.h.
Referenced by addCallbackAddress(), callbackAddresses(), and removeCallbackAddress().
|
private |
Definition at line 78 of file InstructionSpecificAddressCallback.h.
Referenced by addCallbackAddress(), getPluginHandle(), initCodeBlock(), InstructionSpecificAddressCallback(), and removeCallbackAddress().