ETISS 0.8.0
Extendable Translating Instruction Set Simulator (version 0.8.0)
Classes | Typedefs | Functions
etiss::instr Namespace Reference

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 Documentation

◆ I

Definition at line 80 of file Instruction.h.

◆ Node

typedef std::set<Instruction*> etiss::instr::Node

Holding unique instruction sets code chunks after permutation.

Definition at line 155 of file Instruction.h.

◆ size_type

typedef BitArray::size_type etiss::instr::size_type

Definition at line 67 of file Instruction.cpp.

Function Documentation

◆ parse_i()

template<typename T_ >
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
    
See also
etiss::instr::OPCode for an example use of this syntax.

Definition at line 791 of file Instruction.h.

References etiss::ERROR, etiss::log(), get_metrics::mode, s, and get_metrics::type.

Here is the call graph for this function:

◆ parse_i32()

uint32_t etiss::instr::parse_i32 ( const char *  s)

Definition at line 762 of file Instruction.cpp.

References s.