ROSE
0.11.131.0
|
Definition at line 28 of file DispatcherPowerpc.h.
Public Types | |
using | Super = BaseSemantics::Dispatcher |
Base type. More... | |
using | Ptr = DispatcherPowerpcPtr |
Shared-ownership pointer. More... | |
![]() | |
using | Ptr = DispatcherPtr |
Shared-ownership pointer. More... | |
Public Member Functions | |
virtual BaseSemantics::DispatcherPtr | create (const BaseSemantics::RiscOperatorsPtr &, size_t addrWidth, const RegisterDictionaryPtr &) const override |
Virtual constructor. More... | |
virtual void | set_register_dictionary (const RegisterDictionaryPtr &) override |
virtual RegisterDescriptor | instructionPointerRegister () const override |
Returns the instruction pointer register. More... | |
virtual RegisterDescriptor | stackPointerRegister () const override |
Returns the stack pointer register. More... | |
virtual RegisterDescriptor | stackFrameRegister () const override |
Returns the stack call frame register. More... | |
virtual RegisterDescriptor | callReturnRegister () const override |
Returns the function call return address register. More... | |
virtual int | iprocKey (SgAsmInstruction *insn_) const override |
Given an instruction, return the InsnProcessor key that can be used as an index into the iproc_table. More... | |
void | setXerOverflow (const BaseSemantics::SValuePtr &hadOverflow) |
Set the XER OV and SO bits as specified. More... | |
virtual void | updateCr0 (const BaseSemantics::SValuePtr &result) |
Write status flags for result. More... | |
BaseSemantics::SValuePtr | readAndUpdate (BaseSemantics::RiscOperators *, SgAsmExpression *, size_t valueNBits) |
Reads from a memory address and updates a register with the effective address that was read. More... | |
void | writeAndUpdate (BaseSemantics::RiscOperators *, SgAsmExpression *destination, const BaseSemantics::SValuePtr &value) |
Writes a value to a memory address and updates a register with the effective address to which the value was written. More... | |
![]() | |
virtual void | processInstruction (SgAsmInstruction *insn) |
Process a single instruction. More... | |
virtual InsnProcessor * | iprocLookup (SgAsmInstruction *insn) |
Lookup the processor for an instruction. More... | |
virtual void | iprocReplace (SgAsmInstruction *insn, InsnProcessor *iproc) |
Replace an instruction processor with another. More... | |
virtual void | iprocSet (int key, InsnProcessor *iproc) |
Set an iproc table entry to the specified value. More... | |
virtual InsnProcessor * | iprocGet (int key) |
Obtain an iproc table entry for the specified key. More... | |
virtual RiscOperatorsPtr | get_operators () const ROSE_DEPRECATED("use \"operators\" instead") |
virtual StatePtr | currentState () const |
Get a pointer to the state object. More... | |
virtual SValuePtr | protoval () const |
Return the prototypical value. More... | |
virtual SgAsmInstruction * | currentInstruction () const |
Returns the instruction that is being processed. More... | |
virtual SValuePtr | number_ (size_t nbits, uint64_t number) const |
Return a semantic value representing a number. More... | |
virtual RegisterDictionaryPtr | get_register_dictionary () const |
virtual RegisterDescriptor | findRegister (const std::string ®name, size_t nbits=0, bool allowMissing=false) const |
Lookup a register by name. More... | |
virtual void | initializeState (const StatePtr &) |
Initialize the state. More... | |
virtual void | advanceInstructionPointer (SgAsmInstruction *) |
Update the instruction pointer register. More... | |
virtual RegisterDescriptor | segmentRegister (SgAsmMemoryReferenceExpression *) |
Returns a register descriptor for the segment part of a memory reference expression. More... | |
virtual void | incrementRegisters (SgAsmExpression *) |
Increment all auto-increment registers in the expression. More... | |
virtual void | decrementRegisters (SgAsmExpression *) |
Decrement all auto-decrement registers in the expression. More... | |
virtual void | preUpdate (SgAsmExpression *, const BaseSemantics::SValuePtr &enabled) |
Update registers for pre-add expressions. More... | |
virtual void | postUpdate (SgAsmExpression *, const BaseSemantics::SValuePtr &enabled) |
Update registers for post-add expressions. More... | |
virtual SValuePtr | effectiveAddress (SgAsmExpression *, size_t nbits=0) |
Returns a memory address by evaluating the address expression. More... | |
virtual SValuePtr | read (SgAsmExpression *, size_t value_nbits=0, size_t addr_nbits=0) |
Reads an R-value expression. More... | |
virtual void | write (SgAsmExpression *, const SValuePtr &value, size_t addr_nbits=0) |
Writes to an L-value expression. More... | |
virtual RiscOperatorsPtr | operators () const |
Property: RISC operators. More... | |
virtual void | operators (const RiscOperatorsPtr &ops) |
Property: RISC operators. More... | |
virtual SValuePtr | undefined_ (size_t nbits) const |
Return a new undefined semantic value. | |
virtual SValuePtr | unspecified_ (size_t nbits) const |
Return a new undefined semantic value. | |
RegisterDictionaryPtr | registerDictionary () const |
Property: Register dictionary. More... | |
void | registerDictionary (const RegisterDictionaryPtr &rd) |
Property: Register dictionary. More... | |
size_t | addressWidth () const |
Property: Width of memory addresses. More... | |
void | addressWidth (size_t nbits) |
Property: Width of memory addresses. More... | |
bool | autoResetInstructionPointer () const |
Property: Reset instruction pointer register for each instruction. More... | |
void | autoResetInstructionPointer (bool b) |
Property: Reset instruction pointer register for each instruction. More... | |
Static Public Member Functions | |
static DispatcherPowerpcPtr | instance () |
Construct a prototypical dispatcher. More... | |
static DispatcherPowerpcPtr | instance (size_t addrWidth, const RegisterDictionaryPtr &) |
Constructor. More... | |
static DispatcherPowerpcPtr | instance (const BaseSemantics::RiscOperatorsPtr &, size_t addrWidth, const RegisterDictionaryPtr &) |
Constructor. More... | |
static DispatcherPowerpcPtr | promote (const BaseSemantics::DispatcherPtr &) |
Dynamic cast to a DispatcherPowerpcPtr with assertion. More... | |
Public Attributes | |
RegisterDescriptor | REG_IAR |
Cached register. More... | |
RegisterDescriptor | REG_LR |
Cached register. More... | |
RegisterDescriptor | REG_XER |
Cached register. More... | |
RegisterDescriptor | REG_XER_CA |
Cached register. More... | |
RegisterDescriptor | REG_XER_OV |
Cached register. More... | |
RegisterDescriptor | REG_XER_SO |
Cached register. More... | |
RegisterDescriptor | REG_CTR |
Cached register. More... | |
RegisterDescriptor | REG_CR |
Cached register. More... | |
RegisterDescriptor | REG_CR0 |
Cached register. More... | |
RegisterDescriptor | REG_CR0_LT |
Cached register. More... | |
Protected Member Functions | |
DispatcherPowerpc (size_t addrWidth, const RegisterDictionaryPtr ®s) | |
DispatcherPowerpc (const BaseSemantics::RiscOperatorsPtr &ops, size_t addrWidth, const RegisterDictionaryPtr ®s) | |
![]() | |
Dispatcher (size_t addrWidth, const RegisterDictionaryPtr &) | |
Dispatcher (const RiscOperatorsPtr &, size_t addrWidth, const RegisterDictionaryPtr &) | |
Additional Inherited Members | |
![]() | |
typedef std::vector< InsnProcessor * > | InsnProcessors |
![]() | |
RegisterDictionaryPtr | regdict |
See registerDictionary property. More... | |
size_t | addrWidth_ |
Width of memory addresses in bits. More... | |
bool | autoResetInstructionPointer_ |
Reset instruction pointer register for each instruction. More... | |
InsnProcessors | iproc_table |
using Rose::BinaryAnalysis::InstructionSemantics::DispatcherPowerpc::Super = BaseSemantics::Dispatcher |
Base type.
Definition at line 31 of file DispatcherPowerpc.h.
Shared-ownership pointer.
Definition at line 34 of file DispatcherPowerpc.h.
|
static |
Construct a prototypical dispatcher.
The only thing this dispatcher can be used for is to create another dispatcher with the virtual create method.
|
static |
Constructor.
|
static |
Constructor.
|
overridevirtual |
Virtual constructor.
Implements Rose::BinaryAnalysis::InstructionSemantics::BaseSemantics::Dispatcher.
|
static |
Dynamic cast to a DispatcherPowerpcPtr with assertion.
|
overridevirtual |
Returns the instruction pointer register.
Implements Rose::BinaryAnalysis::InstructionSemantics::BaseSemantics::Dispatcher.
|
overridevirtual |
Returns the stack pointer register.
Implements Rose::BinaryAnalysis::InstructionSemantics::BaseSemantics::Dispatcher.
|
overridevirtual |
Returns the stack call frame register.
Implements Rose::BinaryAnalysis::InstructionSemantics::BaseSemantics::Dispatcher.
|
overridevirtual |
Returns the function call return address register.
Implements Rose::BinaryAnalysis::InstructionSemantics::BaseSemantics::Dispatcher.
|
inlineoverridevirtual |
Given an instruction, return the InsnProcessor key that can be used as an index into the iproc_table.
Implements Rose::BinaryAnalysis::InstructionSemantics::BaseSemantics::Dispatcher.
Definition at line 116 of file DispatcherPowerpc.h.
References SgAsmPowerpcInstruction::get_kind().
void Rose::BinaryAnalysis::InstructionSemantics::DispatcherPowerpc::setXerOverflow | ( | const BaseSemantics::SValuePtr & | hadOverflow | ) |
|
virtual |
Write status flags for result.
BaseSemantics::SValuePtr Rose::BinaryAnalysis::InstructionSemantics::DispatcherPowerpc::readAndUpdate | ( | BaseSemantics::RiscOperators * | , |
SgAsmExpression * | , | ||
size_t | valueNBits | ||
) |
Reads from a memory address and updates a register with the effective address that was read.
The address expression must be a binary add operation whose first argument is a register, and it is this register that gets updated.
void Rose::BinaryAnalysis::InstructionSemantics::DispatcherPowerpc::writeAndUpdate | ( | BaseSemantics::RiscOperators * | , |
SgAsmExpression * | destination, | ||
const BaseSemantics::SValuePtr & | value | ||
) |
Writes a value to a memory address and updates a register with the effective address to which the value was written.
The address expression must be a binary add operation whose first argument is a register, and it is this register that gets updated.
RegisterDescriptor Rose::BinaryAnalysis::InstructionSemantics::DispatcherPowerpc::REG_IAR |
Cached register.
This register is cached so that there are not so many calls to Dispatcher::findRegister(). The register descriptor is updated only when the registerDictionary property is changed.
Definition at line 42 of file DispatcherPowerpc.h.
RegisterDescriptor Rose::BinaryAnalysis::InstructionSemantics::DispatcherPowerpc::REG_LR |
Cached register.
This register is cached so that there are not so many calls to Dispatcher::findRegister(). The register descriptor is updated only when the registerDictionary property is changed.
Definition at line 42 of file DispatcherPowerpc.h.
RegisterDescriptor Rose::BinaryAnalysis::InstructionSemantics::DispatcherPowerpc::REG_XER |
Cached register.
This register is cached so that there are not so many calls to Dispatcher::findRegister(). The register descriptor is updated only when the registerDictionary property is changed.
Definition at line 42 of file DispatcherPowerpc.h.
RegisterDescriptor Rose::BinaryAnalysis::InstructionSemantics::DispatcherPowerpc::REG_XER_CA |
Cached register.
This register is cached so that there are not so many calls to Dispatcher::findRegister(). The register descriptor is updated only when the registerDictionary property is changed.
Definition at line 42 of file DispatcherPowerpc.h.
RegisterDescriptor Rose::BinaryAnalysis::InstructionSemantics::DispatcherPowerpc::REG_XER_OV |
Cached register.
This register is cached so that there are not so many calls to Dispatcher::findRegister(). The register descriptor is updated only when the registerDictionary property is changed.
Definition at line 42 of file DispatcherPowerpc.h.
RegisterDescriptor Rose::BinaryAnalysis::InstructionSemantics::DispatcherPowerpc::REG_XER_SO |
Cached register.
This register is cached so that there are not so many calls to Dispatcher::findRegister(). The register descriptor is updated only when the registerDictionary property is changed.
Definition at line 42 of file DispatcherPowerpc.h.
RegisterDescriptor Rose::BinaryAnalysis::InstructionSemantics::DispatcherPowerpc::REG_CTR |
Cached register.
This register is cached so that there are not so many calls to Dispatcher::findRegister(). The register descriptor is updated only when the registerDictionary property is changed.
Definition at line 42 of file DispatcherPowerpc.h.
RegisterDescriptor Rose::BinaryAnalysis::InstructionSemantics::DispatcherPowerpc::REG_CR |
Cached register.
This register is cached so that there are not so many calls to Dispatcher::findRegister(). The register descriptor is updated only when the registerDictionary property is changed.
Definition at line 43 of file DispatcherPowerpc.h.
RegisterDescriptor Rose::BinaryAnalysis::InstructionSemantics::DispatcherPowerpc::REG_CR0 |
Cached register.
This register is cached so that there are not so many calls to Dispatcher::findRegister(). The register descriptor is updated only when the registerDictionary property is changed.
Definition at line 43 of file DispatcherPowerpc.h.
RegisterDescriptor Rose::BinaryAnalysis::InstructionSemantics::DispatcherPowerpc::REG_CR0_LT |
Cached register.
This register is cached so that there are not so many calls to Dispatcher::findRegister(). The register descriptor is updated only when the registerDictionary property is changed.
Definition at line 43 of file DispatcherPowerpc.h.