ETISS 0.8.0
Extendable Translating Instruction Set Simulator (version 0.8.0)
|
holds etiss::instr::InstructionSet instances with different bit widths. More...
#include <Instruction.h>
Public Member Functions | |
etiss_del_como (VariableInstructionSet) VariableInstructionSet(ModedInstructionSet & | |
~VariableInstructionSet () | |
bool | compile () |
InstructionSet * | get (unsigned width) |
InstructionSet * | create (unsigned width, const std::string &name=std::string()) |
InstructionSet & | open (unsigned width, const std::string &name=std::string()) |
InstructionSet * | getMain () |
InstructionSet * | createMain (const std::string &name=std::string()) |
InstructionSet & | openMain (const std::string &name=std::string()) |
template<typename T > | |
Instruction & | open (unsigned bits, T code, T mask, const char *name) |
void | foreach (std::function< void(InstructionSet &)> func) |
std::string | print (std::string prefix=std::string()) |
Public Attributes | |
ModedInstructionSet & | parent_ |
unsigned | width_ |
const std::string | archname_ |
std::function< void(VariableInstructionSet &, InstructionContext &, BitArray &)> | length_updater_ |
unsigned | width |
unsigned const std::string & | archname |
Private Attributes | |
std::map< unsigned, InstructionSet * > | ismap_ |
holds etiss::instr::InstructionSet instances with different bit widths.
Location in an instruction translation tree: ModedInstructionSet ↳ VariableInstructionSet (e.g. for mode 0) ↳ InstructionSet (e.g. 32 bit) ↳ Instruction (e.g. LDR, STR) ↳ InstructionSet (e.g. 16 bit)
Definition at line 499 of file Instruction.h.
etiss::instr::VariableInstructionSet::~VariableInstructionSet | ( | ) |
Definition at line 535 of file Instruction.cpp.
References ismap_.
bool etiss::instr::VariableInstructionSet::compile | ( | ) |
Definition at line 544 of file Instruction.cpp.
References ismap_, etiss::log(), etiss::WARNING, and width_.
Referenced by etiss::instr::ModedInstructionSet::compile().
InstructionSet * etiss::instr::VariableInstructionSet::create | ( | unsigned | width, |
const std::string & | name = std::string() |
||
) |
Definition at line 572 of file Instruction.cpp.
Referenced by createMain(), and open().
|
inline |
Definition at line 521 of file Instruction.h.
References create(), and width_.
etiss::instr::VariableInstructionSet::etiss_del_como | ( | VariableInstructionSet | ) | & |
void etiss::instr::VariableInstructionSet::foreach | ( | std::function< void(InstructionSet &)> | func | ) |
Definition at line 591 of file Instruction.cpp.
References etiss::ERROR, etiss_log, and ismap_.
Referenced by etiss::CPUArch::finalizeInstrSet(), etiss::plugin::InstructionAccurateCallback::finalizeInstrSet(), etiss::plugin::InstructionSpecificAddressCallback::finalizeInstrSet(), etiss::plugin::PrintInstruction::finalizeInstrSet(), etiss::plugin::VariableValueLogger::finalizeInstrSet(), etiss::plugin::gdb::Server::finalizeInstrSet(), and etiss::DataSheetAccurateTiming::initInstrSet().
InstructionSet * etiss::instr::VariableInstructionSet::get | ( | unsigned | width | ) |
Definition at line 565 of file Instruction.cpp.
Referenced by etiss::Translation::disasm(), getMain(), RV32IMACFDArch::initInstrSet(), RV64IMACFDArch::initInstrSet(), open(), and etiss::Translation::translateBlock().
|
inline |
Definition at line 520 of file Instruction.h.
Referenced by etiss::Translation::translateBlock().
|
inline |
Definition at line 525 of file Instruction.h.
References etiss::ERROR, etiss_log, etiss::instr::InstructionSet::open(), and open().
InstructionSet & etiss::instr::VariableInstructionSet::open | ( | unsigned | width, |
const std::string & | name = std::string() |
||
) |
Definition at line 581 of file Instruction.cpp.
References create(), get(), and width.
Referenced by etiss::instr::InstructionClass::addTo(), etiss::instr::ModedInstructionSet::open(), open(), and openMain().
|
inline |
Definition at line 522 of file Instruction.h.
References open(), and width_.
std::string etiss::instr::VariableInstructionSet::print | ( | std::string | prefix = std::string() | ) |
Definition at line 606 of file Instruction.cpp.
References archname_, etiss::instr::InstructionSet::print(), and width_.
Referenced by etiss::instr::ModedInstructionSet::print().
unsigned const std::string& etiss::instr::VariableInstructionSet::archname |
Definition at line 513 of file Instruction.h.
const std::string etiss::instr::VariableInstructionSet::archname_ |
Definition at line 507 of file Instruction.h.
Referenced by print().
|
private |
Definition at line 502 of file Instruction.h.
Referenced by compile(), create(), foreach(), get(), and ~VariableInstructionSet().
std::function<void(VariableInstructionSet &, InstructionContext &, BitArray &)> etiss::instr::VariableInstructionSet::length_updater_ |
Definition at line 508 of file Instruction.h.
Referenced by RV32IMACFDArch::initInstrSet(), RV64IMACFDArch::initInstrSet(), and etiss::Translation::translateBlock().
ModedInstructionSet& etiss::instr::VariableInstructionSet::parent_ |
Definition at line 505 of file Instruction.h.
Referenced by etiss::DataSheetAccurateTiming::initInstrSet(), and etiss::instr::ModedInstructionSet::print().
unsigned etiss::instr::VariableInstructionSet::width |
Definition at line 513 of file Instruction.h.
unsigned etiss::instr::VariableInstructionSet::width_ |
Definition at line 506 of file Instruction.h.
Referenced by compile(), createMain(), getMain(), etiss::instr::ModedInstructionSet::open(), openMain(), print(), and etiss::Translation::translateBlock().