33#ifndef TTA_INSTRUCTION_HH
34#define TTA_INSTRUCTION_HH
60#ifdef TCE_PYTHON_BINDINGS
87 std::shared_ptr<Move>
movePtr(
int i)
const;
125 typedef std::vector<std::shared_ptr<Move> >
MoveList;
127 typedef std::vector<std::shared_ptr<Immediate> >
ImmList;
UInt32 InstructionAddress
static NullInstructionTemplate & instance()
CodeSnippet * parent_
Parent procedure.
const TTAMachine::InstructionTemplate * insTemplate_
Instruction template that is used for this instruction.
Instruction * copy() const
bool hasConditionalRegisterAccesses_
Set to true in case this instruction has moves that access registers and are conditional.
MoveList moves_
Moves contained in this instruction.
void removeImmediate(Immediate &imm)
std::string toString() const
void addImmediate(std::shared_ptr< Immediate > imm)
short size_
Size of instruction in MAU's.
std::shared_ptr< Move > movePtr(int i) const
InstructionAddress positionInProcedure_
Cache the instruction's index in the its procedure for faster address().
std::shared_ptr< Immediate > immediatePtr(int i) const
ImmList immediates_
Immediates contained in this instruction.
int immediateCount() const
bool hasControlFlowMove() const
bool hasConditionalRegisterAccesses() const
std::vector< std::shared_ptr< Move > > MoveList
List for moves.
Immediate & immediate(int i) const
void setFinalAddress(InstructionAddress addr)
Instruction(const Instruction &)
Copying not allowed.
void addMove(std::shared_ptr< Move > move)
bool hasFinalAddress() const
InstructionAddress finalAddress_
In case the final instruction address is known (due to program not modified anymore),...
void removeMove(Move &move)
void setInstructionTemplate(const TTAMachine::InstructionTemplate &insTemp)
Instruction & operator=(const Instruction &)
Assignment not allowed.
CodeSnippet & parent() const
const TTAMachine::InstructionTemplate & instructionTemplate() const
void setParent(CodeSnippet &proc)
bool hasRegisterAccesses_
Set to true in case this instruction has moves that access registers.
bool hasRegisterAccesses() const
bool isInProcedure() const
std::vector< std::shared_ptr< Immediate > > ImmList
List for immediates.