Otawa
0.10
|
Classes | |
class | otawa::clp::Value |
A set of values represented by a Circular Linear Progression. More... | |
class | otawa::clp::State |
The abstract state of the computer (abstract domain). More... | |
class | otawa::clp::ClpStatePack::Context |
A context allows to share a CLP problem through different constructions of ClpStatePack. More... | |
class | otawa::clp::Manager |
This class allows to exploit the result of a CLP analysis. More... | |
Functions | |
SilentFeature | otawa::clp::FEATURE ("otawa::clp::FEATURE", maker) |
This features ensure that the clp analysis has been identified. More... | |
Identifier< clp::State > | otawa::clp::STATE_IN ("otawa::clp::STATE_IN") |
Put on a basic block, it's the CLP state at the begining of the block. More... | |
Identifier< clp::State > | otawa::clp::STATE_OUT ("otawa::clp::STATE_OUT") |
Put on a basic block, it's the CLP state at the end of the block. More... | |
Variables | |
SilentFeature | otawa::clp::FEATURE |
This features ensure that the clp analysis has been identified. More... | |
Identifier< clp::State > | otawa::clp::STATE_IN |
Put on a basic block, it's the CLP state at the begining of the block. More... | |
Identifier< clp::State > | otawa::clp::STATE_OUT |
Put on a basic block, it's the CLP state at the end of the block. More... | |
static Identifier< init_t > | otawa::clp::Analysis::INITIAL |
Initial state of the analysis. More... | |
Circular-Linear Progression analysis is a data flow analysis that attempts to assign to each register or to each memory cell a triplet (b, d, n) with b, d, n integers. This triplet represent the set if values {b + k d / 0 <= k <= n }. Such a representation fits well the cases of array addresses where b is the base address of the array, d the size of the array elements and n the number of elements. Therefore, it provides interesting result when processing machine language.
Ensuring it has been performed needs only a requirement on otawa::clp::FEATURE.
This analysis is performed on the semantic (Semantic Instructions) representation of language machine. To use the result of the analysis requires to handle otawa::clp::State at the entry (otawa::clp::STATE_IN) or at the exit (otawa::clp::STATE_OUT) of a basic block. To get a more precise few of the program state inside the basic block, you have to declare otawa::clp::Manager and to use it to traverse semantic instructions paths as in the example below:
SilentFeature otawa::clp::FEATURE | ( | "otawa::clp::FEATURE" | , |
maker | |||
) |
This features ensure that the clp analysis has been identified.
Identifier<clp::State> otawa::clp::STATE_IN | ( | "otawa::clp::STATE_IN" | ) |
Put on a basic block, it's the CLP state at the begining of the block.
Identifier<clp::State> otawa::clp::STATE_OUT | ( | "otawa::clp::STATE_OUT" | ) |
Put on a basic block, it's the CLP state at the end of the block.
SilentFeature otawa::clp::FEATURE("otawa::clp::FEATURE", maker) |
This features ensure that the clp analysis has been identified.
Referenced by otawa::DeadCodeAnalysis::DeadCodeAnalysis(), and otawa::clp::Analysis::processWorkSpace().
|
static |
Initial state of the analysis.
This identifier is a configuration for the Analysis processor.
It allows to provide initial values for the registers involved in the analysis. The argument is a pair of register and its initial value as an address. A null address express the fact that the register is initialized with the default stack pointer address.
Referenced by otawa::clp::Analysis::configure().
Identifier<clp::State> otawa::clp::STATE_IN("otawa::clp::STATE_IN") |
Put on a basic block, it's the CLP state at the begining of the block.
Referenced by otawa::clp::ClpStatePack::ClpStatePack(), otawa::clp::Manager::start(), and otawa::clp::ClpStatePack::state_before().
Identifier<clp::State> otawa::clp::STATE_OUT("otawa::clp::STATE_OUT") |
Put on a basic block, it's the CLP state at the end of the block.
Referenced by otawa::DeadCodeAnalysis::processWorkSpace().