21 #ifndef OTAWA_DFA_STATE_H_
22 #define OTAWA_DFA_STATE_H_
24 #include <elm/avl/Map.h>
25 #include <elm/stree/Tree.h>
31 namespace hard {
class Register; }
53 inline operator bool(
void)
const {
return _kind !=
NONE; }
55 inline bool isInterval(
void)
const {
return _kind >
NONE && _kind <= INTERVAL; }
56 inline bool isCLP(
void)
const {
return _kind >
NONE && _kind <= CLP; }
63 inline t::uint32 up(
void)
const {
return _base + _delta * _count; }
78 inline const Type *
type(
void)
const {
return _type; }
98 class RegIter:
public reg_map_t::PairIterator {
105 void record(
const MemCell& cell);
118 inline void get(
const Address& a,
float &v)
const {
proc.get(a, v); }
119 inline void get(
const Address& a,
double &v)
const {
proc.get(a, v); }
reg_map_t regs
Definition: State.h:123
const Type * _type
Definition: State.h:82
stree::Tree< address_t, bool > mem
Definition: State.h:124
Definition: ClpValue.h:54
t::uint32 count(void) const
Get the count value of a CLP.
Definition: State.h:61
bool isInterval(void) const
Definition: State.h:55
avl::Map< Address, MemCell > mem_map_t
Definition: State.h:88
avl::Map< const hard::Register *, Value > reg_map_t
Definition: State.h:87
Definition: SymbolicExpr.h:51
Value _val
Definition: State.h:83
t::uint32 _base
Definition: State.h:67
kind_t
Definition: State.h:39
StringOption proc(command, 'p',"processor","used processor","path","")
IntOption delta(command, 'D',"delta","use delta method with given sequence length","length", 4)
t::uint32 base(void) const
Get base value of a CLP.
Definition: State.h:59
const Value & value(void) const
Definition: State.h:79
t::uint32 value(void) const
Get the value for a constant.
Definition: State.h:58
kind_t
Allowed types for values: NONE represents nothing; REG is only used for addresses, and represents a register; VAL represents some values (either a constant or an interval); ALL is the Top element.
Definition: ClpValue.h:53
t::uint32 delta(void) const
Get the delta value of a CLP.
Definition: State.h:60
MemCell(Address addr, const Type *type, Value val)
Definition: State.h:76
offset_t offset(void) const
Get the offset value.
Definition: base.h:70
A process is the realization of a program on a platform.
Definition: Process.h:136
The representation of an address in OTAWA.
Definition: base.h:54
Process & proc
Definition: State.h:126
t::uint32 _count
Definition: State.h:69
Represents a value of the data state.
Definition: State.h:86
Identifier< State * > INITIAL_STATE
This attribute provides the initial state of the task.
t::uint32 up(void) const
Get the upper value of the interval.
Definition: State.h:63
MemIter(const MemIter &iter)
Definition: State.h:109
t::uint32 address_t
Definition: State.h:91
kind_t kind(void) const
Get the kind of the value.
Definition: State.h:52
bool isInitialized(Address addr) const
Test if the current state contains initialized data.
Definition: State.h:113
bool isConst(void) const
Definition: State.h:54
MemIter(State *state)
Definition: State.h:108
Identifier< Pair< const hard::Register *, Value > > REG_INIT
This configuration attribute allows to specify an initial value for a register.
RegIter(State *state)
Definition: State.h:100
const Type * type(void) const
Definition: State.h:78
p::feature INITIAL_STATE_FEATURE
This feature ensures that the executable and user information have been parsed to make the initial st...
This class represents identifier with a typed associated value.
Definition: Identifier.h:51
Identifier< MemCell > MEM_INIT
This configuration attribute allows to specify an initial value for a memory cell.
Address _addr
Definition: State.h:81
RegIter(const RegIter &i)
Definition: State.h:101
MemCell(void)
Definition: State.h:75
bool isCLP(void) const
Definition: State.h:56
Process & process(void) const
Definition: State.h:93
Objects of this class are simple machine register, more accurately unbreakable atomic registers...
Definition: Register.h:38
t::uint32 _delta
Definition: State.h:68
const Type & type(void)
Definition: type.h:163
mem_map_t cmem
Definition: State.h:125
This class describes the type of the data in the program.
Definition: type.h:39
kind_t _kind
Definition: State.h:66
t::uint32 low(void) const
Get the lower value of the interval.
Definition: State.h:62
Shortcut to create a feature with a maker (without the mess of SilentFeature).
Definition: AbstractFeature.h:51
Address address(void) const
Definition: State.h:77