22 #ifndef OTAWA_STACK_FEATURES_H_
23 #define OTAWA_STACK_FEATURES_H_
130 inline State&
state(
void)
const {
return *
s; }
sem::PathIter si
Definition: features.h:137
Values in the StackAnalysis.
Definition: features.h:43
Value & operator=(const Value &val)
Definition: features.h:68
void print(io::Output &out) const
Print the value.
Definition: util_StackAnalysis.cpp:297
bool pathEnd(void) const
Test if the current instruction is a path end.
Definition: PathIter.h:41
Value(page_t page, int_t val=0)
Definition: features.h:57
kind_t
Definition: features.h:35
Feature< StackAnalysis > STACK_ANALYSIS_FEATURE
This features ensure that the stack analysis has been identified.
Definition: features.h:148
bool isCond(void) const
Test if the current instruction is a conditional, that means that two different paths will be created...
Definition: PathIter.h:42
t::int32 page_t
Definition: features.h:52
sem::inst item(void) const
Definition: features.h:126
Definition: features.h:39
Inst * instruction(void) const
Definition: features.h:133
void sub(const Value &val)
Perform subtraction of values.
Definition: util_StackAnalysis.cpp:157
bool operator!=(const Value &val) const
Definition: features.h:77
Value(void)
Definition: features.h:62
static Value reg(int n)
Definition: features.h:64
static Value addr(Address a)
Definition: features.h:65
int_t value(void) const
Definition: features.h:81
static Value bot
Bottom value (uninitialized value).
Definition: features.h:61
static const page_t null_page
Definition: base.h:59
t::int32 signed_t
Definition: features.h:46
bool operator<(const Value &val) const
Definition: features.h:78
sem::inst item(void) const
Definition: PathIter.h:45
static const int_t bot_id
Definition: features.h:50
void nextInst(void)
Compute the state at the end of the instruction.
Definition: util_StackAnalysis.cpp:1042
bool pathEnd(void) const
Definition: features.h:121
void _xor(const Value &val)
Perform XOR operator on values (modifying current one).
Definition: util_StackAnalysis.cpp:200
State & state(void) const
Definition: features.h:130
Definition: features.h:40
StackProblem * p
Definition: features.h:141
dtd::Element bb(dtd::make("bb", _BB).attr(id).attr(address).attr(size))
Definition: features.h:36
State * es
Definition: features.h:139
void _or(const Value &val)
Perform OR operator on values (modifying current one).
Definition: util_StackAnalysis.cpp:172
A block represents a sequence of semantic instructions inst.
Definition: inst.h:183
Value getReg(int i)
Get register value.
Definition: util_StackAnalysis.cpp:1054
void asr(const Value &val)
Arithmetic right-shift on a value.
Definition: util_StackAnalysis.cpp:345
void add(const Value &val)
Perform addition of values.
Definition: util_StackAnalysis.cpp:139
void start(BasicBlock *bb)
Start the state calculation for a new basic block.
Definition: util_StackAnalysis.cpp:973
t::uint64 upper_t
Definition: features.h:47
void mod(const Value &val)
Perform modulo on values (modifying current one).
Definition: util_StackAnalysis.cpp:256
kind_t kind(void) const
Get the kind of the value.
Definition: util_StackAnalysis.cpp:110
bool ended(void) const
Definition: features.h:125
void shr(const Value &val)
Right-shift on a value.
Definition: util_StackAnalysis.cpp:332
Iterator on the result of stack analysis.
Definition: features.h:114
Definition: features.h:38
bool isBot(void) const
Definition: features.h:71
void neg(void)
Invert sign of value.
Definition: util_StackAnalysis.cpp:358
void divu(const Value &val)
Perform division on values (modifying current one).
Definition: util_StackAnalysis.cpp:242
~Iter(void)
Definition: util_StackAnalysis.cpp:963
bool isConst(void) const
Definition: features.h:74
bool isTop(void) const
Definition: features.h:70
bool ended(void) const
Definition: PathIter.h:44
void shl(const Value &val)
Left-shit on a value.
Definition: util_StackAnalysis.cpp:319
A workspace represents a program, its run-time and all information about WCET computation or any othe...
Definition: WorkSpace.h:67
Value getMem(Value addr, int size)
Get value from memory.
Definition: util_StackAnalysis.cpp:1065
void set(page_t kind, int_t value)
Definition: features.h:105
The representation of an address in OTAWA.
Definition: base.h:54
static const Value all
undefined value
Definition: features.h:102
sem::Block b
Definition: features.h:136
bool instEnd(void) const
Definition: features.h:123
sys::SystemOutStream & out
State * s
Definition: features.h:139
static Value top
Top value (any value).
Definition: features.h:61
void mulh(const Value &val)
Compute upper-word multiplication on values (modifying current one).
Definition: util_StackAnalysis.cpp:284
BasicBlock::InstIter i
Definition: features.h:138
static const page_t spec_page
Definition: features.h:54
void modu(const Value &val)
Perform modulo on values (modifying current one).
Definition: util_StackAnalysis.cpp:270
void next(void)
Compute the state for the next semantic instruction.
Definition: util_StackAnalysis.cpp:991
io::Output & operator<<(io::Output &out, const Value &v)
Definition: features.h:110
p::feature ADDRESS_FEATURE
Feature ensuring that addresses are built from stack analysis.
This is the minimal definition of a basic block.
Definition: BasicBlock.h:43
void _not(void)
Invert bits of the value.
Definition: util_StackAnalysis.cpp:371
bool isSP(void) const
Definition: features.h:73
bool ended(void) const
Definition: BasicBlock.h:76
This class represents assembly instruction of a piece of code.
Definition: Inst.h:62
bool operator==(const Value &val) const
Definition: features.h:76
void mul(const Value &val)
Perform MUL operator on values (modifying current one).
Definition: util_StackAnalysis.cpp:214
Definition: features.h:37
static const int_t top_id
Definition: features.h:51
static const Value & none
Definition: features.h:102
bool isReg(void) const
Definition: features.h:72
Iter(WorkSpace *ws)
Definition: util_StackAnalysis.cpp:957
static Value sp(int_t off)
Definition: features.h:67
page_t _page
Definition: features.h:106
This structure class represents an instruction in the semantics representation of machine instruction...
Definition: inst.h:110
This iterator allows easily to traverse all execution paths of a block of semantic instructions...
Definition: PathIter.h:29
void _and(const Value &val)
Perform AND operator on values (modifying current one).
Definition: util_StackAnalysis.cpp:186
void join(const Value &val)
Join of values.
Definition: util_StackAnalysis.cpp:384
genstruct::Vector< State * > ss
Definition: features.h:140
t::uint32 int_t
Definition: features.h:45
static const page_t sp_page
Definition: features.h:55
static Value cst(int_t k)
Definition: features.h:66
int_t _val
Definition: features.h:107
Shortcut to create a feature with a maker (without the mess of SilentFeature).
Definition: AbstractFeature.h:51
void div(const Value &val)
Perform division on values (modifying current one).
Definition: util_StackAnalysis.cpp:228
Iterator for instructions in the basic block.
Definition: BasicBlock.h:70
bool isCond(void) const
Definition: features.h:122