34#include "boost/format.hpp"
85#define GCU_OPERATION_MOVES_VISIBLE_IN_BUS true
91 sequentialProgram_(
false) {
114 if (theTerminal.
isGPR()) {
126 }
else if (theTerminal.
isFUPort()) {
134 "Could not find the FU port.");
136 std::string operationString =
"";
155 thePort->
name() + operationString,
177 std::string errorMsg =
242 "Program references an illegal guard.");
274 "Immediate of jump '%s' gets clipped due to the target "
275 "port being too narrow. Wrong execution would occur.")
278 __FILE__, __LINE__,
__func__, errorMsg);
286 "Immediate of jump '%s' gets clipped due to the target "
287 "port being too narrow. Wrong execution would occur.")
290 __FILE__, __LINE__,
__func__, errorMsg);
340 assert(immediateSource != NULL);
359 assert(immediateSource != NULL);
362 immediateSource, destination,
367 immediateSource, bus, destination,
375 *source, destination,
380 *source, bus, destination,
445 for (
int j = 0; j < instruction.
moveCount(); ++j) {
457 return processedInstruction;
494 if (currentInstruction->
size() > 0) {
497 processedInstruction);
501 processedInstruction);
508 (boost::format(
"Error while processing instruction %d "
509 "(with moves %s): %s")
#define abortWithError(message)
#define assert(condition)
find Finds info of the inner loops in the false
#define GCU_OPERATION_MOVES_VISIBLE_IN_BUS
std::string fileName() const
std::string errorMessage() const
std::string procedureName() const
void addExecutableMove(ExecutableMove *move)
void addLongImmediateUpdateAction(LongImmUpdateAction *action)
void addImplicitExecutableInstruction(InstructionAddress addr, ExecutableInstruction *instruction)
void addExecutableInstruction(InstructionAddress addr, ExecutableInstruction *instruction)
PortState & portState(const std::string &portName, const std::string &fuName)
LongImmediateUnitState & longImmediateUnitState(const std::string &name)
GuardState & guardState(const TTAMachine::Guard &guard)
RegisterFileState & registerFileState(const std::string &name)
BusState & busState(const std::string &name)
static NullBusState & instance()
static NullGuardState & instance()
static NullPortState & instance()
static NullRegisterFileState & instance()
virtual TCEString name() const
static std::string disassemble(const TTAProgram::Move &move)
virtual RegisterState & registerState(int index)
virtual void setValue(const SimValue &value)
ExecutableMove * processMove(const TTAProgram::Move &move, MachineState &state)
const ReadableState & findGuardModel(const TTAMachine::Guard &guard, MachineState &state)
ExecutableInstruction * processInstruction(const TTAProgram::Instruction &instruction, MachineState &state)
StateData * processBidirTerminal(const TTAProgram::Terminal &theTerminal, MachineState &state)
StateData * processSourceTerminal(const TTAProgram::Terminal &theTerminal, MachineState &state)
virtual ~SimProgramBuilder()
InstructionMemory * build(const TTAProgram::Program &prog, MachineState &state)
void zeroExtendTo(int bitWidth)
ULongWord uLongWordValue() const
void signExtendTo(int bitWidth)
SLongWord sLongWordValue() const
virtual bool isOpcodeSetting() const =0
int immediateWidth() const
virtual TCEString name() const
virtual bool isInverted() const
virtual int width() const =0
Unit * parentUnit() const
virtual std::string name() const
InstructionAddress location() const
virtual int instructionCount() const
virtual Instruction & instructionAtIndex(int index) const
int immediateCount() const
Immediate & immediate(int i) const
const TTAMachine::Guard & guard() const
MoveGuard & guard() const
bool isControlFlowMove() const
bool isUnconditional() const
std::string toString() const
Terminal & source() const
Terminal & destination() const
const TTAMachine::Bus & bus() const
const Procedure & procedureAtIndex(int index) const
Address startAddress() const
TTAMachine::Machine & targetProcessor() const
int procedureCount() const
virtual SimValue value() const
virtual const TTAMachine::FunctionUnit & functionUnit() const
virtual int index() const
virtual bool isOpcodeSetting() const
virtual Operation & operation() const
virtual bool isGPR() const
virtual bool isImmediateRegister() const
virtual const TTAMachine::Port & port() const
virtual bool isImmediate() const
virtual const TTAMachine::ImmediateUnit & immediateUnit() const
virtual const TTAMachine::RegisterFile & registerFile() const
virtual bool isFUPort() const
virtual boost::format text(int textId)
@ TXT_ILLEGAL_PROGRAM_IU_STATE_NOT_FOUND
Text of the exception thrown when Immediate Unit state could not be found and there is instruction re...
@ TXT_ILLEGAL_PROGRAM_BUS_STATE_NOT_FOUND
Text of the exception thrown when FUPortState could not be found and there is instruction referring t...
@ TXT_ILLEGAL_PROGRAM_OPCODE_NOT_FOUND
Text of the exception thrown when a port to be written is an opcode setting port and no opcode is fou...
@ TXT_ILLEGAL_PROGRAM_UNKNOWN_MOVE_TERMINAL_TYPE
Text of the exception thrown when the terminal type of a move is not regocnized.
@ TXT_ILLEGAL_PROGRAM_PORT_STATE_NOT_FOUND
Text of the exception thrown when FUPortState could not be found and there is instruction referring t...
@ TXT_ILLEGAL_PROGRAM_RF_STATE_NOT_FOUND
Text of the exception thrown when RegisterFileState could not be found and there is instruction refer...