Otawa
0.10
|
This class represents assembly instruction of a piece of code. More...
#include <otawa/prog/Inst.h>
Public Types | |
typedef elm::t::uint32 | kind_t |
Public Member Functions | |
Inst * | nextInst (void) const |
Inst * | prevInst (void) const |
virtual void | dump (io::Output &out) |
Output a displayable representation of the instruction. More... | |
virtual kind_t | kind (void)=0 |
Get the kind of the current instruction. More... | |
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 Inst * | target (void) |
Get the target of the branch. More... | |
virtual Type * | type (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 Inst * | toInst (void) |
Return the instruction matching the current item. 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 int | multiCount (void) |
This function is only defined for ISA supporting the IS_MULTI attribute. More... | |
ProgItem * | next (void) const |
Get the next program item. More... | |
ProgItem * | previous (void) const |
Get the previous program item. More... | |
virtual address_t | address (void) const =0 |
Get the address of the 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... | |
Property * | getProp (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) |
Property * | extractProp (const AbstractIdentifier *id) |
Remove a property matching the given identifier and return it. More... | |
Property * | extractProp (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 Inst & | null = 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 | ~Inst (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) |
Static Protected Attributes | |
static const elm::genstruct::Table < hard::Register * > | no_regs |
A table containing no sets. More... | |
Friends | |
class | CodeItem |
This class represents assembly instruction of a piece of code.
As they must represents a large set of machine language that may contain unusual instruction, it provides a very generic way to access information about the instruction. When the instruction is usual or simple enough, it may be derived in more accurate and specialized representation like MemInst or ControlInst.
typedef elm::t::uint32 otawa::Inst::kind_t |
|
inlineprotectedvirtual |
|
inherited |
Add property to the list without checking of duplication.
prop | Property to add. |
References otawa::Property::_next.
Referenced by otawa::Identifier< T >::add(), otawa::ast::ASTInfo::ASTInfo(), otawa::Identifier< otawa::arm::Info * >::copy(), otawa::AbstractIdentifier::initProps(), otawa::ContextualProperty::make(), otawa::script::Script::makeConfig(), otawa::ccg::Builder::processLBlockSet(), otawa::ipet::ILPSystemGetter::processWorkSpace(), otawa::Identifier< T >::ref(), otawa::ContextualProperty::ref(), and otawa::ContextualProperty::refProps().
|
inherited |
Add all properties from the given property list, in a reverse order.
props | Property list to clone. |
References copy(), otawa::PropList::head, and otawa::Property::next().
Referenced by otawa::display::CFGDrawer::CFGDrawer(), otawa::display::GraphVizGraph::GraphVizGraph(), otawa::ParamFeature::instantiate(), otawa::Manager::loadXML(), otawa::display::GraphVizGraph::newEdge(), otawa::display::GraphVizGraph::newNode(), otawa::PropList::operator=(), otawa::Process::Process(), otawa::PropList::PropList(), otawa::display::GraphVizItem::setProps(), otawa::VirtualBasicBlock::VirtualBasicBlock(), and otawa::VirtualCFG::VirtualCFG().
|
pure virtualinherited |
Get the address of the item .
Implemented in otawa::loader::new_gliss::Inst, and otawa::loader::old_gliss::Inst.
Referenced by otawa::ParExeGraph::addEdgesForFetch(), otawa::PFGBuilder::addFunction(), otawa::ccg::LBlockBuilder::addLBlock(), otawa::LBlockBuilder::addLBlock(), otawa::LBlock::address(), otawa::ccg::LBlock::address(), otawa::BasicBlock::Bundle::address(), otawa::BasicBlock::address(), otawa::ets::ACSComputation::applyProcess(), otawa::CFGBuilder::buildCFG(), otawa::ets::WCETComputation::computation(), otawa::ast::BlockAST::countInstructions(), otawa::LBlock::countInsts(), otawa::ccg::LBlock::countInsts(), otawa::ipet::FlowFactLoader::enteringCall(), otawa::Virtualizer::enteringCall(), otawa::CFGInfo::findCFG(), otawa::Segment::findItemAt(), otawa::WorkSpace::format(), otawa::se::getFilterForAddr(), otawa::se::getFilterForReg(), otawa::VarTextDecoder::getInst(), otawa::ets::ACSComputation::initialization(), otawa::Segment::insert(), otawa::ipet::FlowFactLoader::lookLineAt(), otawa::ast::ASTLoader::makeBlock(), otawa::se::FilterBuilder::makeFilters(), otawa::DelayedBuilder::makeNOp(), otawa::LBlockManager::next(), otawa::DelayedBuilder::next(), otawa::FlowFactLoader::onLoop(), otawa::AccessedAddress::print(), otawa::dcache::BlockAccess::print(), otawa::ets::FlowFactLoader::processAST(), otawa::CFGChecker::processBB(), otawa::branch::OnlyConsBuilder::processBB(), otawa::branch::CondNumber::processBB(), otawa::LBlockBuilder::processBB(), otawa::ccg::LBlockBuilder::processBB(), otawa::dcache::CLPBlockBuilder::processBB(), otawa::etime::StandardEventBuilder::processBB(), otawa::dcache::BlockBuilder::processBB(), otawa::BBStatCollector::processCFG(), otawa::VarTextDecoder::processEntry(), otawa::VarTextDecoder::processWorkSpace(), otawa::dcache::CatConstraintBuilder::processWorkSpace(), otawa::CFGBuilder::processWorkSpace(), otawa::FlowFactLoader::scanIgnoreControl(), otawa::FlowFactLoader::scanIgnoreSeq(), otawa::FlowFactLoader::scanMultiBranch(), otawa::FlowFactLoader::scanMultiCall(), otawa::FlowFactLoader::scanNoInline(), otawa::FlowFactLoader::scanSetInlining(), otawa::DelayedBuilder::size(), otawa::CFGProcessor::str(), otawa::ProgItem::topAddress(), and otawa::BranchProblem::update().
|
inherited |
Remove all properties from the list.
References otawa::Property::next().
Referenced by otawa::PSTBuilder::getVCFG(), otawa::PropList::operator=(), otawa::display::GraphVizItem::setProps(), otawa::PropList::~PropList(), and otawa::WorkSpace::~WorkSpace().
|
virtual |
For a branch instruction, returns the number of delayed instructions.
As a default, return 0.
|
virtual |
For a branch instruction, returns the type of management for delay slots.
As a default, consider there is no delay slots.
References otawa::DELAYED_None.
|
virtual |
Output a displayable representation of the instruction.
The implementation of this method is not mandatory.
out | Output channel to use. |
Reimplemented in otawa::loader::new_gliss::Inst, and otawa::loader::old_gliss::Inst.
Referenced by otawa::operator<<().
|
inherited |
Remove a property matching the given identifier and return it.
Caller is responsible of the management of the obtained property.
id | Identifier of the property to extract. |
References otawa::Property::_next, and otawa::Property::next().
Referenced by otawa::script::Script::makeConfig().
|
inlineinherited |
Remove a property matching the given identifier and return it.
Caller is responsible of the management of the obtained property.
id | Identifier of the property to extract. |
References otawa::PropList::extractProp().
Referenced by otawa::PropList::extractProp().
|
inherited |
Find a property by its identifier.
id | Identifier of the property to find. |
References otawa::Property::_next, and otawa::Property::next().
Referenced by otawa::Identifier< otawa::arm::Info * >::exists(), otawa::ContextualProperty::exists(), otawa::ContextualProperty::find(), otawa::Identifier< T >::get(), otawa::PropList::hasProp(), otawa::ContextualProperty::make(), otawa::ParamFeature::matches(), otawa::ImmutableRef< T, I >::print(), otawa::ContextualProperty::print(), otawa::Identifier< T >::ref(), otawa::ContextualProperty::ref(), otawa::ContextualProperty::refProps(), otawa::Identifier< T >::set(), otawa::Identifier< T >::use(), and otawa::Identifier< T >::value().
|
inlineinherited |
Test if the property list contains a property matching the given identifier.
id | Property identifier to look for. |
References otawa::PropList::getProp().
Referenced by otawa::ipet::BasicConstraintsBuilder::addEntryConstraint(), otawa::Monitor::configure(), otawa::ImmutableRef< T, I >::exists(), and otawa::Manager::setVerbosity().
|
inlineprotectedinherited |
References elm::inhstruct::DLNode::insertBefore().
|
inline |
|
inline |
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 IS_CALL, IS_CONTROL, IS_RETURN, IS_TRAP, noneOf(), and oneOf().
Referenced by otawa::FlowFactLoader::scanMultiBranch().
|
inline |
On VLIW architecture, mark an instruction that is part of a bundle but not last instruction.
|
inline |
On VLIW architecture, mark an instruction that is the last instruction of a bundle.
References IS_BUNDLE, and oneOf().
Referenced by otawa::BasicBlock::Bundle::move().
|
inline |
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.
References IS_CALL, and oneOf().
Referenced by otawa::PFGBuilder::addFunction(), otawa::CFGBuilder::buildCFG(), otawa::ipet::FlowFactLoader::enteringCall(), otawa::Virtualizer::enteringCall(), and otawa::FlowFactLoader::scanMultiCall().
|
inline |
Test if this instruction is conditional.
References IS_COND, and oneOf().
Referenced by otawa::PFGBuilder::addFunction(), otawa::CFGBuilder::buildCFG(), otawa::branch::CondNumber::processBB(), otawa::etime::StandardEventBuilder::processBB(), and otawa::branch::ConsBuilder::processBB().
|
inline |
Test if the instruction changes the control flow.
References IS_CONTROL, and oneOf().
Referenced by otawa::PFGBuilder::addFunction(), otawa::CFGBuilder::buildCFG(), otawa::FlowFactLoader::scanIgnoreControl(), otawa::FlowFactLoader::scanIgnoreSeq(), otawa::FlowFactLoader::scanNoInline(), and otawa::FlowFactLoader::scanSetInlining().
|
inline |
Test if the instruction is a division.
|
inline |
References IS_INDIRECT, and oneOf().
Referenced by otawa::branch::CondNumber::processBB(), and otawa::branch::ConsBuilder::processBB().
|
inline |
|
inline |
Test if the instruction is a load, that is, it performs only one simple memory read.
References IS_LOAD, and oneOf().
Referenced by otawa::ParExeGraph::addEdgesForMemoryOrder().
|
inline |
|
inline |
Test if the instruction is a multiplication.
|
inline |
|
inline |
Test if the instruction is a sub-program return, that is, it modifies the control flow retrieving its context from a preceding call instruction.
References IS_RETURN, and oneOf().
Referenced by otawa::PFGBuilder::addFunction().
|
inline |
Test if the instruction is a complex special instruction.
References IS_SPECIAL, and oneOf().
|
inline |
Test if the instruction is a store, that is, it performs only one simple memory write.
References IS_STORE, and oneOf().
Referenced by otawa::ParExeGraph::addEdgesForMemoryOrder().
|
inline |
Test if an instruction is unknown.
References IS_UNKNOWN, and oneOf().
Referenced by otawa::VarTextDecoder::getInst().
|
pure virtual |
Get the kind of the current instruction.
In fact, the kind is composed as bit array representing an instruction property.
Implemented in otawa::loader::new_gliss::Inst, and otawa::loader::old_gliss::Inst.
Referenced by otawa::instCategory(), meets(), oneOf(), otawa::ParExeGraph::pipeline(), and otawa::hard::Stage::select().
|
virtual |
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).
|
inherited |
Get the next program item.
References elm::inhstruct::DLNode::atEnd().
Referenced by otawa::Segment::findItemAt(), otawa::Segment::insert(), and nextInst().
|
inline |
References otawa::ProgItem::next(), and otawa::ProgItem::toInst().
Referenced by otawa::PFGBuilder::addFunction(), otawa::ast::ASTLoader::makeBlock(), otawa::DelayedBuilder::makeNOp(), otawa::BasicBlock::Bundle::move(), otawa::DelayedBuilder::next(), otawa::BasicBlock::InstIter::next(), otawa::BasicBlock::BundleIter::next(), otawa::CFGBuilder::nextBB(), and otawa::DelayedBuilder::size().
|
inline |
References oneOf().
Referenced by isBranch().
|
inline |
References kind().
Referenced by isAtomic(), isBranch(), isBundle(), isBundleEnd(), isCall(), isConditional(), isControl(), isDiv(), isIndirect(), isIntern(), isLoad(), isMem(), isMul(), isReturn(), isSpecial(), isStore(), isUnknown(), and noneOf().
|
inline |
References otawa::ProgItem::previous(), and otawa::ProgItem::toInst().
Referenced by otawa::WorkSpace::format(), and otawa::ast::ASTLoader::makeBlock().
|
inherited |
Get the previous program item.
References elm::inhstruct::DLNode::atBegin().
Referenced by otawa::Segment::insert(), and prevInst().
|
inherited |
Display the current property list.
out | Output to use. |
Referenced by otawa::operator<<(), and otawa::ContextualProperty::print().
|
virtual |
Get the registers read by the instruction.
Reimplemented in otawa::loader::new_gliss::Inst, and otawa::loader::old_gliss::Inst.
References otawa::REGISTER_USAGE_FEATURE.
Referenced by readRegSet().
|
virtual |
Get the list of register read by the instruction.
set | Set filled with platform numbers of read registers. |
References elm::genstruct::Vector< T >::add(), and readRegs().
|
inherited |
Remove all the properties matching the given identifier.
id | Identifier of properties to remove. |
References otawa::Property::_next, and otawa::Property::next().
Referenced by otawa::LoopUnroller::unroll().
|
inherited |
Remove a property matching the given identifier.
id | Identifier of the property to remove. |
References otawa::Property::_next, and otawa::Property::next().
Referenced by otawa::PSTBuilder::buildTree(), otawa::BBRemover< T >::clean(), otawa::display::CFGOutput::processCFG(), otawa::SubCFGBuilder::processWorkSpace(), otawa::Ref< T, I >::remove(), and otawa::ContextualPath::Ref< T >::remove().
|
inlineinherited |
References otawa::PropList::removeProp().
Referenced by otawa::PropList::removeProp().
|
virtual |
Return a list of semantics pseudo-instruction representing the effect of the instruction.
block | Block to write semantics instruction to. An empty vector means there is no operation. |
Referenced by otawa::se::FilterBuilder::iterateBranchPaths(), semInsts(), and otawa::sem::PathIter::start().
|
virtual |
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.
block | Block to translate instruction in. |
temp | Base number for temporaries used for write-back register saving. |
References semInsts().
|
virtual |
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.
block | Block to fill with write-back semantic instructions. |
temp | Base number for temporaries used for write-back register saving. |
|
inherited |
Set the property in the property list removing any double.
prop | Property to set. |
References otawa::Property::_next, otawa::Property::id(), and otawa::Property::next().
|
inlineinherited |
References otawa::PropList::setProp().
Referenced by otawa::PropList::setProp().
|
pure virtualinherited |
Get the size of the item in bytes.
Referenced by otawa::Segment::insert(), otawa::DelayedBuilder::makeNOp(), otawa::DelayedBuilder::size(), and otawa::ProgItem::topAddress().
|
virtual |
Get the target of the branch.
Reimplemented in otawa::loader::old_gliss::BranchInst, and otawa::loader::new_gliss::BranchInst.
Referenced by otawa::PFGBuilder::addFunction(), otawa::CFGBuilder::buildCFG(), and otawa::VarTextDecoder::processEntry().
|
virtual |
Return the instruction matching the current item.
Reimplemented from otawa::ProgItem.
|
inlineinherited |
Compute the address of the item immediately following the current item.
References otawa::ProgItem::address(), and otawa::ProgItem::size().
Referenced by otawa::ParExeGraph::addEdgesForFetch(), otawa::VarTextDecoder::getInst(), otawa::Segment::insert(), otawa::BasicBlock::Bundle::insts(), otawa::BasicBlock::Bundle::move(), otawa::DelayedBuilder::next(), otawa::BasicBlock::InstIter::next(), otawa::BasicBlock::BundleIter::next(), otawa::FlowFactLoader::scanIgnoreControl(), otawa::FlowFactLoader::scanIgnoreSeq(), otawa::FlowFactLoader::scanMultiBranch(), otawa::FlowFactLoader::scanMultiCall(), otawa::FlowFactLoader::scanNoInline(), otawa::FlowFactLoader::scanSetInlining(), otawa::DelayedBuilder::size(), and otawa::BasicBlock::Bundle::topAddress().
|
virtual |
|
virtual |
Get the list of register written by the instruction.
set | Set filled with platform numbers of written registers. |
References elm::genstruct::Vector< T >::add(), and writtenRegs().
|
virtual |
Get the registers written by the instruction.
Reimplemented in otawa::loader::new_gliss::Inst, and otawa::loader::old_gliss::Inst.
References otawa::REGISTER_USAGE_FEATURE.
Referenced by writeRegSet().
|
friend |
|
staticinherited |
This is an empty proplist for convenience.
|
static |
Mask of an instruction performing a computation.
|
static |
Referenced by isAtomic().
|
static |
Applied on a VLIW architecture, marks instructions part of a bundle but not at end of the bundle.
Referenced by isBundle(), and isBundleEnd().
|
static |
Mask of a call instruction.
Referenced by isBranch(), and isCall().
|
static |
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 isConditional().
|
static |
Mask of a control instruction.
Referenced by isBranch(), and isControl().
|
static |
Mask of a division instruction.
Referenced by isDiv().
|
static |
Mask of an instruction processing floats.
|
static |
Referenced by isIndirect().
|
static |
Mask of an instruction processing integer.
|
static |
Mask of an instruction performing setup internal to the processor.
Referenced by isIntern().
|
static |
Mask of an instruction performing a memory load.
Referenced by isLoad().
|
static |
|
static |
Mask of a multiplication instruction.
Referenced by isMul().
|
static |
This mask denotes an instructions that perform multi-value store or load.
For example, the "ldmfd" or "stmfd" in the ARM ISA.
Referenced by isMulti().
|
static |
Mask of a return instruction.
Referenced by isBranch(), and isReturn().
|
static |
Mask of an instruction performing a shift (this includes logicial shifts, arithmetic shifts and rotations).
|
static |
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 isSpecial().
|
static |
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 isBranch().
|
static |
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 isUnknown().
|
staticprotected |
A table containing no sets.
|
static |
Null instruction with null address and null size (no kind).