Otawa
0.10
|
This module defines a set of classes to perform abstract interpretation. More...
Classes | |
class | otawa::ai::Graph |
Graph concept for ai module. More... | |
class | otawa::ai::Domain |
Domain concept for ai module. More... | |
class | otawa::ai::InputIter |
Iterator on input of a vertex. More... | |
class | otawa::ai::OutputIter |
Iterator to set output values. More... | |
class | otawa::ai::WorkListDriver< D, G, S > |
Driver of abstract interpretation with a simple to-do list. More... | |
class | otawa::ai::CFGGraph |
BiDiGraph implementation for CFG. More... | |
class | otawa::ai::ArrayStore< D, G > |
Stockage of output values as an array. More... | |
class | otawa::ai::EdgeStore< D, G > |
State storage on the edges. More... | |
This module defines a set of classes to perform abstract interpretation.
It is most versatile as the previous module, HalfAbsInt, and should be used to perform now in OTAWA to perform analyzes.
The support for abstract interpretation is made of different classes that are able to interact together according the needs of the developer. Basically, there are three types of classes:
Finally, the domains are given by the user and details the abstract interpretation to perform.
First, according to the program representation, developer has to choose a graph adapter. There is only one now (CFGGraph) for a lonely CFG but more will be proposed in the near future.
Second, the abstract interpretation domain has to be designed. It is class providing the following resources:
Update functions are not included in this list because they depend only on the way driver is used.
Then the storage and the driver must be chosen and tied together as below. This approach allows to customize the way the computation is performed. In the example below, we just apply the same method whatever the node or the edge.