Otawa  0.10
otawa::loader::old_gliss::BranchInst Class Referenceabstract

#include <otawa/loader/old_gliss/BranchInst.h>

Inheritance diagram for otawa::loader::old_gliss::BranchInst:
otawa::loader::old_gliss::Inst otawa::Inst otawa::ProgItem otawa::PropList elm::inhstruct::DLNode

Public Types

typedef elm::t::uint32 kind_t
 

Public Member Functions

 BranchInst (Process &process, kind_t kind, address_t addr)
 
virtual otawa::Insttarget (void)
 Get the target of the branch. More...
 
Processprocess (void) const
 
virtual void dump (io::Output &out)
 Output a displayable representation of the instruction. More...
 
virtual kind_t kind (void)
 Get the kind of the current instruction. More...
 
virtual const
elm::genstruct::Table
< hard::Register * > & 
readRegs (void)
 Get the registers read by the instruction. More...
 
virtual const
elm::genstruct::Table
< hard::Register * > & 
writtenRegs (void)
 Get the registers written by the instruction. More...
 
virtual address_t address (void) const
 Get the address of the item . More...
 
InstnextInst (void) const
 
InstprevInst (void) const
 
bool meets (kind_t mask)
 
bool oneOf (kind_t mask)
 
bool noneOf (kind_t mask)
 
bool isIntern (void)
 Test if the instruction neither access memory, nor modify control flow. More...
 
bool isMem (void)
 Test if the instruction access memory. More...
 
bool isControl (void)
 Test if the instruction changes the control flow. More...
 
bool isLoad (void)
 Test if the instruction is a load, that is, it performs only one simple memory read. More...
 
bool isStore (void)
 Test if the instruction is a store, that is, it performs only one simple memory write. More...
 
bool isBranch (void)
 Test if the instruction is a branch, that is, it changes the control flow but performs neither a memory access, nor a context storage. More...
 
bool isCall (void)
 Test if the instruction is a sub-program call, that is, it changes the control flow but stores the current state for allowing performing a return. More...
 
bool isReturn (void)
 Test if the instruction is a sub-program return, that is, it modifies the control flow retrieving its context from a preceding call instruction. More...
 
bool isConditional (void)
 Test if this instruction is conditional. More...
 
bool isMulti (void)
 Test if the instruction is multi-memory accesss load / store. More...
 
bool isSpecial (void)
 Test if the instruction is a complex special instruction. More...
 
bool isMul (void)
 Test if the instruction is a multiplication. More...
 
bool isDiv (void)
 Test if the instruction is a division. More...
 
bool isIndirect (void)
 
bool isUnknown (void)
 Test if an instruction is unknown. More...
 
bool isAtomic (void)
 Test if the instruction is an atomic synchronization instruction, that is, performing an atomic read-write memory. More...
 
bool isBundle (void)
 On VLIW architecture, mark an instruction that is part of a bundle but not last instruction. More...
 
bool isBundleEnd (void)
 On VLIW architecture, mark an instruction that is the last instruction of a bundle. More...
 
virtual Typetype (void)
 
virtual void semInsts (sem::Block &block)
 Return a list of semantics pseudo-instruction representing the effect of the instruction. More...
 
virtual int semInsts (sem::Block &block, int temp)
 Same as Inst::semInsts(sem::Block& block) to transform a machine instruction into machine instructions but temp is used as a base to encode temporaries. More...
 
virtual int semWriteBack (sem::Block &block, int temp)
 VLIW instructions of a bundle perform read and write-back of registers in parallel. More...
 
virtual delayed_t delayType (void)
 For a branch instruction, returns the type of management for delay slots. More...
 
virtual int delaySlots (void)
 For a branch instruction, returns the number of delayed instructions. More...
 
virtual void readRegSet (RegSet &set)
 Get the list of register read by the instruction. More...
 
virtual void writeRegSet (RegSet &set)
 Get the list of register written by the instruction. More...
 
virtual InsttoInst (void)
 Return the instruction matching the current item. More...
 
virtual int multiCount (void)
 This function is only defined for ISA supporting the IS_MULTI attribute. More...
 
ProgItemnext (void) const
 Get the next program item. More...
 
ProgItemprevious (void) const
 Get the previous program item. More...
 
virtual t::uint32 size (void) const =0
 Get the size of the item in bytes. More...
 
address_t topAddress (void) const
 Compute the address of the item immediately following the current item. More...
 
PropertygetProp (const AbstractIdentifier *id) const
 Find a property by its identifier. More...
 
void setProp (Property *prop)
 Set the property in the property list removing any double. More...
 
void setProp (const AbstractIdentifier *id)
 
void removeProp (const AbstractIdentifier *id)
 Remove a property matching the given identifier. More...
 
void removeProp (const AbstractIdentifier &id)
 
PropertyextractProp (const AbstractIdentifier *id)
 Remove a property matching the given identifier and return it. More...
 
PropertyextractProp (const AbstractIdentifier &id)
 Remove a property matching the given identifier and return it. More...
 
void addProp (Property *prop)
 Add property to the list without checking of duplication. More...
 
void removeAllProp (const AbstractIdentifier *id)
 Remove all the properties matching the given identifier. More...
 
bool hasProp (const AbstractIdentifier &id) const
 Test if the property list contains a property matching the given identifier. More...
 
void clearProps (void)
 Remove all properties from the list. More...
 
void addProps (const PropList &props)
 Add all properties from the given property list, in a reverse order. More...
 
void print (elm::io::Output &out) const
 Display the current property list. More...
 

Static Public Attributes

static const kind_t IS_COND = 0x00001
 Mask of a conditional instruction of an instruction kind. More...
 
static const kind_t IS_CONTROL = 0x00002
 Mask of a control instruction. More...
 
static const kind_t IS_CALL = 0x00004
 Mask of a call instruction. More...
 
static const kind_t IS_RETURN = 0x00008
 Mask of a return instruction. More...
 
static const kind_t IS_MEM = 0x00010
 Mask of an instruction accessing the memory. More...
 
static const kind_t IS_LOAD = 0x00020
 Mask of an instruction performing a memory load. More...
 
static const kind_t IS_STORE = 0x00040
 
static const kind_t IS_INT = 0x00080
 Mask of an instruction processing integer. More...
 
static const kind_t IS_FLOAT = 0x00100
 Mask of an instruction processing floats. More...
 
static const kind_t IS_ALU = 0x00200
 Mask of an instruction performing a computation. More...
 
static const kind_t IS_MUL = 0x00400
 Mask of a multiplication instruction. More...
 
static const kind_t IS_DIV = 0x00800
 Mask of a division instruction. More...
 
static const kind_t IS_SHIFT = 0x01000
 Mask of an instruction performing a shift (this includes logicial shifts, arithmetic shifts and rotations). More...
 
static const kind_t IS_TRAP = 0x02000
 Mask of a trap instruction. More...
 
static const kind_t IS_INTERN = 0x04000
 Mask of an instruction performing setup internal to the processor. More...
 
static const kind_t IS_MULTI = 0x08000
 This mask denotes an instructions that perform multi-value store or load. More...
 
static const kind_t IS_SPECIAL = 0x10000
 This mask denotes an instruction that is processed in a special way in the pipeline. More...
 
static const kind_t IS_INDIRECT = 0x10000
 
static const kind_t IS_UNKNOWN = 0x20000
 This mask denotes an unknown instruction: its opcode does not match any known instruction in the loader. More...
 
static const kind_t IS_ATOMIC = 0x40000
 
static const kind_t IS_BUNDLE = 0x80000
 Applied on a VLIW architecture, marks instructions part of a bundle but not at end of the bundle. More...
 
static Instnull = static_null
 Null instruction with null address and null size (no kind). More...
 
static const PropList EMPTY
 This is an empty proplist for convenience. More...
 

Protected Member Functions

virtual address_t decodeTargetAddress (void)
 
virtual void decodeRegs (void)
 
void insertPseudo (ProgItem *pos)
 
bool atBegin (void) const
 
bool atEnd (void) const
 
void replace (DLNode *node)
 
void insertAfter (DLNode *node)
 
void insertBefore (DLNode *node)
 
void remove (void)
 
void removeNext (void)
 
void removePrevious (void)
 

Protected Attributes

kind_t _kind
 
elm::genstruct::AllocatedTable
< hard::Register * > 
in_regs
 
elm::genstruct::AllocatedTable
< hard::Register * > 
out_regs
 

Static Protected Attributes

static const unsigned long REGS_DONE = 0x80000000
 
static const unsigned long TARGET_DONE = 0x40000000
 
static const unsigned long MASK = REGS_DONE | TARGET_DONE
 
static const
elm::genstruct::Table
< hard::Register * > 
no_regs
 A table containing no sets. More...
 

Private Attributes

otawa::Inst_target
 

Member Typedef Documentation

Constructor & Destructor Documentation

otawa::loader::old_gliss::BranchInst::BranchInst ( Process process,
kind_t  kind,
address_t  addr 
)

Member Function Documentation

virtual address_t otawa::loader::old_gliss::Inst::address ( void  ) const
virtualinherited

Get the address of the item .

Returns
Address of the item or address 0 if none is assigned.
Note
In workstation systems, it is commonly accepted that the address 0 is ever invalid because it is the usual value of NULL in C. It should also work the same for embedded systems.

Implements otawa::ProgItem.

void otawa::PropList::clearProps ( void  )
inherited
virtual void otawa::loader::old_gliss::Inst::decodeRegs ( void  )
protectedvirtualinherited
virtual address_t otawa::loader::old_gliss::BranchInst::decodeTargetAddress ( void  )
protectedvirtual
int otawa::Inst::delaySlots ( void  )
virtualinherited

For a branch instruction, returns the number of delayed instructions.

As a default, return 0.

Returns
Number of delayed instructions.
delayed_t otawa::Inst::delayType ( void  )
virtualinherited

For a branch instruction, returns the type of management for delay slots.

As a default, consider there is no delay slots.

Returns
Type of management of delay slots.
Note
Branches without delay slots does not need to overload this method.

References otawa::DELAYED_None.

virtual void otawa::loader::old_gliss::Inst::dump ( io::Output out)
virtualinherited

Output a displayable representation of the instruction.

The implementation of this method is not mandatory.

Parameters
outOutput channel to use.

Reimplemented from otawa::Inst.

Property * otawa::PropList::extractProp ( const AbstractIdentifier id)
inherited

Remove a property matching the given identifier and return it.

Caller is responsible of the management of the obtained property.

Parameters
idIdentifier of the property to extract.

References otawa::Property::_next, and otawa::Property::next().

Referenced by otawa::script::Script::makeConfig().

Property * otawa::PropList::extractProp ( const AbstractIdentifier id)
inlineinherited

Remove a property matching the given identifier and return it.

Caller is responsible of the management of the obtained property.

Parameters
idIdentifier of the property to extract.

References otawa::PropList::extractProp().

Referenced by otawa::PropList::extractProp().

bool otawa::PropList::hasProp ( const AbstractIdentifier id) const
inlineinherited

Test if the property list contains a property matching the given identifier.

Parameters
idProperty identifier to look for.
Returns
True if the list contains the matching property, false else.

References otawa::PropList::getProp().

Referenced by otawa::ipet::BasicConstraintsBuilder::addEntryConstraint(), otawa::Monitor::configure(), otawa::ImmutableRef< T, I >::exists(), and otawa::Manager::setVerbosity().

void otawa::ProgItem::insertPseudo ( ProgItem pos)
inlineprotectedinherited
bool otawa::Inst::isAtomic ( void  )
inlineinherited

Test if the instruction is an atomic synchronization instruction, that is, performing an atomic read-write memory.

Returns
True if it is an synchronization function.

References otawa::Inst::IS_ATOMIC, and otawa::Inst::oneOf().

bool otawa::Inst::isBranch ( void  )
inlineinherited

Test if the instruction is a branch, that is, it changes the control flow but performs neither a memory access, nor a context storage.

References otawa::Inst::IS_CALL, otawa::Inst::IS_CONTROL, otawa::Inst::IS_RETURN, otawa::Inst::IS_TRAP, otawa::Inst::noneOf(), and otawa::Inst::oneOf().

Referenced by otawa::FlowFactLoader::scanMultiBranch().

bool otawa::Inst::isBundle ( void  )
inlineinherited

On VLIW architecture, mark an instruction that is part of a bundle but not last instruction.

Returns
True if it is a not bundle-ending instruction, false else.
See also
Inst::IS_BUNDLE, Inst::isBundleEnd()

References otawa::Inst::IS_BUNDLE, and otawa::Inst::oneOf().

bool otawa::Inst::isBundleEnd ( void  )
inlineinherited

On VLIW architecture, mark an instruction that is the last instruction of a bundle.

Returns
True if it is a bundle-ending instruction, false else.
See also
Inst::IS_BUNDLE, Inst::isBundle.

References otawa::Inst::IS_BUNDLE, and otawa::Inst::oneOf().

Referenced by otawa::BasicBlock::Bundle::move().

bool otawa::Inst::isCall ( void  )
inlineinherited

Test if the instruction is a sub-program call, that is, it changes the control flow but stores the current state for allowing performing a return.

Returns
True if it is a sub-program call.

References otawa::Inst::IS_CALL, and otawa::Inst::oneOf().

Referenced by otawa::PFGBuilder::addFunction(), otawa::CFGBuilder::buildCFG(), otawa::ipet::FlowFactLoader::enteringCall(), otawa::Virtualizer::enteringCall(), and otawa::FlowFactLoader::scanMultiCall().

bool otawa::Inst::isConditional ( void  )
inlineinherited
bool otawa::Inst::isControl ( void  )
inlineinherited
bool otawa::Inst::isDiv ( void  )
inlineinherited

Test if the instruction is a division.

Returns
True if it is a division, false else.
See also
Inst::IS_DIV

References otawa::Inst::IS_DIV, and otawa::Inst::oneOf().

bool otawa::Inst::isIndirect ( void  )
inlineinherited
bool otawa::Inst::isIntern ( void  )
inlineinherited

Test if the instruction neither access memory, nor modify control flow.

Returns
True if the instruction is internal.

References otawa::Inst::IS_INTERN, and otawa::Inst::oneOf().

bool otawa::Inst::isLoad ( void  )
inlineinherited

Test if the instruction is a load, that is, it performs only one simple memory read.

Returns
True if it is a load.

References otawa::Inst::IS_LOAD, and otawa::Inst::oneOf().

Referenced by otawa::ParExeGraph::addEdgesForMemoryOrder().

bool otawa::Inst::isMem ( void  )
inlineinherited

Test if the instruction access memory.

Returns
True if it perform memory access.

References otawa::Inst::IS_MEM, and otawa::Inst::oneOf().

bool otawa::Inst::isMul ( void  )
inlineinherited

Test if the instruction is a multiplication.

Returns
True if it is a multiplication, false else.
See also
Inst::IS_MUL

References otawa::Inst::IS_MUL, and otawa::Inst::oneOf().

bool otawa::Inst::isMulti ( void  )
inlineinherited

Test if the instruction is multi-memory accesss load / store.

Returns
True if it is multi-memory accesses, false else.
See also
IS_MULTI

References otawa::Inst::IS_MEM, otawa::Inst::IS_MULTI, and otawa::Inst::meets().

bool otawa::Inst::isReturn ( void  )
inlineinherited

Test if the instruction is a sub-program return, that is, it modifies the control flow retrieving its context from a preceding call instruction.

Returns
True if it is a sub-program return.

References otawa::Inst::IS_RETURN, and otawa::Inst::oneOf().

Referenced by otawa::PFGBuilder::addFunction().

bool otawa::Inst::isSpecial ( void  )
inlineinherited

Test if the instruction is a complex special instruction.

Returns
True if it is a complex special instruction, false else.
See also
IS_SPECIAL

References otawa::Inst::IS_SPECIAL, and otawa::Inst::oneOf().

bool otawa::Inst::isStore ( void  )
inlineinherited

Test if the instruction is a store, that is, it performs only one simple memory write.

Returns
True if it is a store.

References otawa::Inst::IS_STORE, and otawa::Inst::oneOf().

Referenced by otawa::ParExeGraph::addEdgesForMemoryOrder().

bool otawa::Inst::isUnknown ( void  )
inlineinherited

Test if an instruction is unknown.

Returns
True if it is unknown, false else.
See also
Inst::IS_UNKNOWN

References otawa::Inst::IS_UNKNOWN, and otawa::Inst::oneOf().

Referenced by otawa::VarTextDecoder::getInst().

virtual kind_t otawa::loader::old_gliss::Inst::kind ( void  )
virtualinherited

Get the kind of the current instruction.

In fact, the kind is composed as bit array representing an instruction property.

Returns
The kind of the instruction.

Implements otawa::Inst.

bool otawa::Inst::meets ( kind_t  mask)
inlineinherited

References otawa::Inst::kind().

Referenced by otawa::Inst::isMulti().

int otawa::Inst::multiCount ( void  )
virtualinherited

This function is only defined for ISA supporting the IS_MULTI attribute.

It returns the number of stored during the multi-memory access (in term of memory accesses).

Returns
Number of memory accesses.
ProgItem * otawa::ProgItem::next ( void  ) const
inherited

Get the next program item.

Returns
Next program item, null at the end of the list.

References elm::inhstruct::DLNode::atEnd().

Referenced by otawa::Segment::findItemAt(), otawa::Segment::insert(), and otawa::Inst::nextInst().

bool otawa::Inst::noneOf ( kind_t  mask)
inlineinherited

References otawa::Inst::oneOf().

Referenced by otawa::Inst::isBranch().

Inst* otawa::Inst::prevInst ( void  ) const
inlineinherited
ProgItem * otawa::ProgItem::previous ( void  ) const
inherited

Get the previous program item.

Returns
Previous program item, null at the begin of the list.

References elm::inhstruct::DLNode::atBegin().

Referenced by otawa::Segment::insert(), and otawa::Inst::prevInst().

void otawa::PropList::print ( elm::io::Output out) const
inherited

Display the current property list.

Parameters
outOutput to use.

Referenced by otawa::operator<<(), and otawa::ContextualProperty::print().

Process& otawa::loader::old_gliss::Inst::process ( void  ) const
inlineinherited
virtual const elm::genstruct::Table<hard::Register *>& otawa::loader::old_gliss::Inst::readRegs ( void  )
virtualinherited

Get the registers read by the instruction.

Returns
Read register table.
Warning
This method is only implemented when the owner loader asserts the REGISTER_USAGE_FEATURE.

Reimplemented from otawa::Inst.

void otawa::Inst::readRegSet ( RegSet set)
virtualinherited

Get the list of register read by the instruction.

Parameters
setSet filled with platform numbers of read registers.

References elm::genstruct::Vector< T >::add(), and otawa::Inst::readRegs().

void otawa::PropList::removeAllProp ( const AbstractIdentifier id)
inherited

Remove all the properties matching the given identifier.

Parameters
idIdentifier of properties to remove.

References otawa::Property::_next, and otawa::Property::next().

Referenced by otawa::LoopUnroller::unroll().

void otawa::PropList::removeProp ( const AbstractIdentifier id)
inherited
void otawa::PropList::removeProp ( const AbstractIdentifier id)
inlineinherited
void otawa::Inst::semInsts ( sem::Block block)
virtualinherited

Return a list of semantics pseudo-instruction representing the effect of the instruction.

Parameters
blockBlock to write semantics instruction to. An empty vector means there is no operation.
Note
The passed block is not cleared by the method that accumulates instructions allowing to wholly translates parts of code.

Referenced by otawa::se::FilterBuilder::iterateBranchPaths(), otawa::Inst::semInsts(), and otawa::sem::PathIter::start().

int otawa::Inst::semInsts ( sem::Block block,
int  temp 
)
virtualinherited

Same as Inst::semInsts(sem::Block& block) to transform a machine instruction into machine instructions but temp is used as a base to encode temporaries.

This is used for VLIW where instructions are executed in parallel and register write-back only occurs at end of the semantic instructions.

Parameters
blockBlock to translate instruction in.
tempBase number for temporaries used for write-back register saving.
Returns
Number of used temporaries for write-back.
See also
proc_vliw

References otawa::Inst::semInsts().

int otawa::Inst::semWriteBack ( sem::Block block,
int  temp 
)
virtualinherited

VLIW instructions of a bundle perform read and write-back of registers in parallel.

This is mimicked in OTAWA by concatenating semantic instructions of each machine instruction and only writing into temporaries. by this method.

Parameters
blockBlock to fill with write-back semantic instructions.
tempBase number for temporaries used for write-back register saving.
Returns
Number of temporaries used by this instruction.
See also
VLIW Support
void otawa::PropList::setProp ( Property prop)
inherited

Set the property in the property list removing any double.

Parameters
propProperty to set.

References otawa::Property::_next, otawa::Property::id(), and otawa::Property::next().

void otawa::PropList::setProp ( const AbstractIdentifier id)
inlineinherited
size_t otawa::ProgItem::size ( void  ) const
pure virtualinherited

Get the size of the item in bytes.

Returns
Size of the item.

Referenced by otawa::Segment::insert(), otawa::DelayedBuilder::makeNOp(), otawa::DelayedBuilder::size(), and otawa::ProgItem::topAddress().

virtual otawa::Inst* otawa::loader::old_gliss::BranchInst::target ( void  )
virtual

Get the target of the branch.

Returns
Target address of the branch.

Reimplemented from otawa::Inst.

Inst * otawa::Inst::toInst ( void  )
virtualinherited

Return the instruction matching the current item.

Returns
Matching instruction or null if the current program item is not an instruction.

Reimplemented from otawa::ProgItem.

Type * otawa::Inst::type ( void  )
virtualinherited
Deprecated:
Get the type of the accessed object.
Returns
Accessed data type.
void otawa::Inst::writeRegSet ( RegSet set)
virtualinherited

Get the list of register written by the instruction.

Parameters
setSet filled with platform numbers of written registers.

References elm::genstruct::Vector< T >::add(), and otawa::Inst::writtenRegs().

virtual const elm::genstruct::Table<hard::Register *>& otawa::loader::old_gliss::Inst::writtenRegs ( void  )
virtualinherited

Get the registers written by the instruction.

Returns
Read register table.
Warning
This method is only implemented when the owner loader asserts the REGISTER_USAGE_FEATURE.

Reimplemented from otawa::Inst.

Member Data Documentation

kind_t otawa::loader::old_gliss::Inst::_kind
protectedinherited
otawa::Inst* otawa::loader::old_gliss::BranchInst::_target
private
const PropList otawa::PropList::EMPTY
staticinherited

This is an empty proplist for convenience.

elm::genstruct::AllocatedTable<hard::Register *> otawa::loader::old_gliss::Inst::in_regs
protectedinherited
otawa::Inst::IS_ALU = 0x00200
staticinherited

Mask of an instruction performing a computation.

Note
Memory accesses with a computed address must have this bit set.
const kind_t otawa::Inst::IS_ATOMIC = 0x40000
staticinherited

Referenced by otawa::Inst::isAtomic().

otawa::Inst::IS_BUNDLE = 0x80000
staticinherited

Applied on a VLIW architecture, marks instructions part of a bundle but not at end of the bundle.

Referenced by otawa::Inst::isBundle(), and otawa::Inst::isBundleEnd().

otawa::Inst::IS_CALL = 0x00004
staticinherited

Mask of a call instruction.

Referenced by otawa::Inst::isBranch(), and otawa::Inst::isCall().

otawa::Inst::IS_COND = 0x00001
staticinherited

Mask of a conditional instruction of an instruction kind.

Note that conditional property is not bound to branch but may also be found in guarded instructions.

Referenced by otawa::Inst::isConditional().

otawa::Inst::IS_CONTROL = 0x00002
staticinherited

Mask of a control instruction.

Referenced by otawa::Inst::isBranch(), and otawa::Inst::isControl().

otawa::Inst::IS_DIV = 0x00800
staticinherited

Mask of a division instruction.

Referenced by otawa::Inst::isDiv().

otawa::Inst::IS_FLOAT = 0x00100
staticinherited

Mask of an instruction processing floats.

Note
Conversion instruction must have both masks IS_INT and IS_FLOAT.
const kind_t otawa::Inst::IS_INDIRECT = 0x10000
staticinherited

Referenced by otawa::Inst::isIndirect().

otawa::Inst::IS_INT = 0x00080
staticinherited

Mask of an instruction processing integer.

Note
Conversion instruction must have both masks IS_INT and IS_FLOAT.
otawa::Inst::IS_INTERN = 0x04000
staticinherited

Mask of an instruction performing setup internal to the processor.

Referenced by otawa::Inst::isIntern().

otawa::Inst::IS_LOAD = 0x00020
staticinherited

Mask of an instruction performing a memory load.

Referenced by otawa::Inst::isLoad().

otawa::Inst::IS_MEM = 0x00010
staticinherited

Mask of an instruction accessing the memory.

Referenced by otawa::Inst::isMem(), and otawa::Inst::isMulti().

otawa::Inst::IS_MUL = 0x00400
staticinherited

Mask of a multiplication instruction.

Referenced by otawa::Inst::isMul().

otawa::Inst::IS_MULTI = 0x08000
staticinherited

This mask denotes an instructions that perform multi-value store or load.

For example, the "ldmfd" or "stmfd" in the ARM ISA.

Referenced by otawa::Inst::isMulti().

otawa::Inst::IS_RETURN = 0x00008
staticinherited

Mask of a return instruction.

Referenced by otawa::Inst::isBranch(), and otawa::Inst::isReturn().

otawa::Inst::IS_SHIFT = 0x01000
staticinherited

Mask of an instruction performing a shift (this includes logicial shifts, arithmetic shifts and rotations).

otawa::Inst::IS_SPECIAL = 0x10000
staticinherited

This mask denotes an instruction that is processed in a special way in the pipeline.

This concerns very complex instruction usually found in old CISC processors.

Referenced by otawa::Inst::isSpecial().

const kind_t otawa::Inst::IS_STORE = 0x00040
staticinherited

Referenced by otawa::Inst::isStore().

otawa::Inst::IS_TRAP = 0x02000
staticinherited

Mask of a trap instruction.

It may be a programmed interruption, a system call, a debugging break or any control instruction whose control target is computed by the system.

Referenced by otawa::Inst::isBranch().

otawa::Inst::IS_UNKNOWN = 0x20000
staticinherited

This mask denotes an unknown instruction: its opcode does not match any known instruction in the loader.

This may denotes either a limitation of the loader, or an execution path error in the program decoding.

Referenced by otawa::Inst::isUnknown().

const unsigned long otawa::loader::old_gliss::Inst::MASK = REGS_DONE | TARGET_DONE
staticprotectedinherited
const elm::genstruct::Table< hard::Register * > otawa::Inst::no_regs
staticprotectedinherited

A table containing no sets.

Inst & otawa::Inst::null = static_null
staticinherited

Null instruction with null address and null size (no kind).

elm::genstruct::AllocatedTable<hard::Register *> otawa::loader::old_gliss::Inst::out_regs
protectedinherited
const unsigned long otawa::loader::old_gliss::Inst::REGS_DONE = 0x80000000
staticprotectedinherited
const unsigned long otawa::loader::old_gliss::Inst::TARGET_DONE = 0x40000000
staticprotectedinherited

The documentation for this class was generated from the following file: