ETISS 0.8.0
Extendable Translating Instruction Set Simulator (version 0.8.0)
|
Classes | |
class | Buffer |
Buffer for reading data from memory while instructions are being fetched. More... | |
class | BitArray |
stores a bit vector More... | |
class | BitArrayRange |
Reading through it will only return bits within the range. More... | |
class | OPCode |
defines the relevant bits and their value to identify an instruction. More... | |
struct | less |
calls operator< of the objects. More... | |
class | InstructionContext |
this class contains parameters that persist in between instruction lookpus/translation within a translation block. More... | |
class | Instruction |
holds information and translation callbacks for an instruction. More... | |
class | InstructionSet |
holds etiss::instr::Instruction instances and handles automatic instruction tree creation. More... | |
class | VariableInstructionSet |
holds etiss::instr::InstructionSet instances with different bit widths. More... | |
class | ModedInstructionSet |
holds etiss::instr::VariableInstructionSet instances for different modes. More... | |
class | InstructionCollection |
maps to ModedInstructionSet More... | |
class | InstructionClass |
maps to VariableInstructionSet More... | |
class | InstructionGroup |
maps to InstructionSet More... | |
class | InstructionDefinition |
maps to Instruction More... | |
Typedefs | |
typedef uint32_t | I |
typedef std::set< Instruction * > | Node |
Holding unique instruction sets code chunks after permutation. More... | |
typedef BitArray::size_type | size_type |
Functions | |
uint32_t | parse_i32 (const char *s) |
template<typename T_ > | |
std::enable_if< std::is_integral< T_ >::value, typename std::make_unsigned< T_ >::type >::type | parse_i (const char *s, bool *good=0) |
this parser basically allows to write as a string hexadecimal values which will be appended as if it is one hexadecimal sequence and the "0x" prefix is replaced by a "<decimal number>x" [e.g. More... | |
typedef uint32_t etiss::instr::I |
Definition at line 80 of file Instruction.h.
typedef std::set<Instruction*> etiss::instr::Node |
Holding unique instruction sets code chunks after permutation.
Definition at line 155 of file Instruction.h.
typedef BitArray::size_type etiss::instr::size_type |
Definition at line 67 of file Instruction.cpp.
std::enable_if<std::is_integral<T_>::value, typename std::make_unsigned<T_>::type>::type etiss::instr::parse_i | ( | const char * | s, |
bool * | good = 0 |
||
) |
this parser basically allows to write as a string hexadecimal values which will be appended as if it is one hexadecimal sequence and the "0x" prefix is replaced by a "<decimal number>x" [e.g.
12x] that defines the length in bits. e.g. "2xF 2x0 4xF" -> 0xCF
syntax: string: definition [' ' string] definition: bit_count 'x' bit_value bit_count: digit [bit_count] digit: '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' bit_value: hdigit [bit_value] hdigit: '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F'
bit_count is a decimal number that defines the length in bits of the definition. bit_value defines the values of the bits of the definition in hexadecimal format. the definitions are alwas placed at the least significant bits and are left shifted by definitions to the right from them. the total sum of bit_count occurences in a string must match the width of the return type otherwise an error message is printed the behaviour is undefined in case of a bit_value that has less bits than defined by the bit_count.
example parsing process of "2xF 2x0 2xF 10x0": initial value: 0x0000 parse 1. definition: 0x0003 parse 2. definition: 0x000C parse 3. definition: 0x0033 parse 4. definition: 0xCC00
Definition at line 791 of file Instruction.h.
References etiss::ERROR, etiss::log(), get_metrics::mode, s, and get_metrics::type.
uint32_t etiss::instr::parse_i32 | ( | const char * | s | ) |
Definition at line 762 of file Instruction.cpp.
References s.