![]() |
OTAWA
2.0
Framework to perform machine analysis and compute WCET.
|
Classes | |
class | otawa::BaseBundle< I > |
class | otawa::Bundle |
class | otawa::Condition |
class | otawa::DecodingException |
class | otawa::DelayedInfo |
class | otawa::File |
class | otawa::Inst |
class | otawa::Inst::Kind |
class | otawa::Manager |
class | otawa::OutOfSegmentException |
class | otawa::Process |
class | otawa::ProgItem |
class | otawa::Segment |
class | otawa::Symbol |
class | otawa::UnsupportedFeatureException |
class | otawa::WorkSpace |
Enumerations | |
enum | otawa::delayed_t { otawa::DELAYED_None = 0, otawa::DELAYED_Always = 1, otawa::DELAYED_Taken = 2 } |
Functions | |
p::id< int > | otawa::ARGC ("otawa::ARGC", -1) |
Argument count as passed to the program (int). More... | |
p::id< char ** > | otawa::ARGV ("otawa::ARGV", 0) |
Argument values as passed to the program (char **). More... | |
Identifier< Address > | otawa::ARGV_ADDRESS ("otawa::ARGV_ADDRESS", Address::null) |
This feature is put on the process object whose image supports Unix-like argument passing. More... | |
Identifier< Address > | otawa::AUXV_ADDRESS ("otawa::AUXV_ADDRESS", Address::null) |
This feature is put on the process object whose image supports Unix-like argument passing. More... | |
p::id< hard::CacheConfiguration * > | otawa::CACHE_CONFIG ("otawa::CACHE_CONFIG", 0) |
This property is used to pass the cache configuration directly to the platform. More... | |
p::id< elm::xom::Element * > | otawa::CACHE_CONFIG_ELEMENT ("otawa::CACHE_CONFIG_ELEMENT", 0) |
Gives an XML element containing the cache configuration. More... | |
p::id< elm::sys::Path > | otawa::CACHE_CONFIG_PATH ("otawa::CACHE_CONFIG_PATH", "") |
Gives the path of file containing the cache configuration. More... | |
p::feature | otawa::CONDITIONAL_INSTRUCTIONS_FEATURE ("otawa::CONDITIONAL_INSTRUCTIONS_FEATURE", new Maker< NoProcessor >()) |
This feature is provided by Process which architecture provides conditional instructions. More... | |
p::id< elm::xom::Element * > | otawa::CONFIG_ELEMENT ("otawa::CONFIG_ELEMENT", 0) |
XML element containing the configuration of the current computation. More... | |
p::id< elm::sys::Path > | otawa::CONFIG_PATH ("otawa::CONFIG_PATH", "") |
Path to the XML configuration file used in this computation. More... | |
p::feature | otawa::CONTROL_DECODING_FEATURE ("otawa::CONTROL_DECODING_FEATURE", new Maker< NoProcessor >()) |
This feature is usually provided by the loader providing decoding facility for control instructions. More... | |
Identifier< delayed_t > | otawa::DELAYED ("otawa::DELAYED", DELAYED_None) |
This kind of property is put on control branch to know if the following instruction is executed as part of a delayed branch. More... | |
p::feature | otawa::DELAYED2_FEATURE ("otawa::DELAYED2_FEATURE", new Maker< NoProcessor >()) |
This Process feature informs that the actual architecture supports delayed branch. More... | |
p::feature | otawa::DELAYED_FEATURE ("otawa::DELAYED_FEATURE", new Maker< NoProcessor >()) |
This feature is put on processes by the loader to inform that the control instruction of the current instruction contains delayed branches. More... | |
Identifier< DelayedInfo * > | otawa::DELAYED_INFO ("otawa::DELAYED_INFO", 0) |
This property provides access to delayed branch information of the current program. More... | |
p::id< char ** > | otawa::ENVP ("otawa::ENVP", 0) |
Argument values as passed to the program (char **). More... | |
Identifier< Address > | otawa::ENVP_ADDRESS ("otawa::ENVP_ADDRESS", Address::null) |
This feature is put on the process object whose image supports Unix-like argument passing. More... | |
p::feature | otawa::FLOAT_MEMORY_ACCESS_FEATURE ("otawa::FLOAT_MEMORY_ACCES_FEATURE", new Maker< NoProcessor >()) |
This feature is usually asserted by processes that provides access to the memory segment of the program with float values. More... | |
Identifier< String > | otawa::FUNCTION_LABEL ("otawa::FUNCTION_LABEL", "") |
This property is put on instruction. More... | |
Identifier< String > | otawa::LABEL ("otawa::LABEL", "") |
Property with this identifier is put on instructions or basic blocks which a symbol is known for. More... | |
p::id< string > | otawa::LOAD_PARAM ("otawa::LOAD_PARAM", "") |
Identifier used for Manager::load() configuration. More... | |
p::id< Loader * > | otawa::LOADER ("otawa::LOADER", 0) |
Identifier of the property indicating the loader to use. More... | |
p::id< string > | otawa::LOADER_NAME ("otawa::LOADER_NAME", "") |
Identifier of the property indicating a name (CString) of the loader to use. More... | |
p::feature | otawa::MEMORY_ACCESS_FEATURE ("otawa::MEMORY_ACCESS_FEATURE", new Maker< NoProcessor >()) |
This feature is usually asserted by processes that provides access to the memory segment of the program. More... | |
p::feature | otawa::MEMORY_ACCESSES ("otawa::MEMORY_ACCESSES", new Maker< NoProcessor >()) |
This feature, put on a process, informs that the functional simulator provides the ability to give information about memory accesses. More... | |
p::id< elm::xom::Element * > | otawa::MEMORY_ELEMENT ("otawa::MEMORY_ELEMENT", 0) |
Passed to manager::load() to give the XML element describing the memory configuration. More... | |
p::id< hard::Memory * > | otawa::MEMORY_OBJECT ("otawa::MEMORY_OBJECT", 0) |
Passed to manager::load() to set the memory configuration. More... | |
p::id< elm::sys::Path > | otawa::MEMORY_PATH ("otawa::MEMORY_PATH", "") |
Passed to Manager::load() to give the path of the file describing the memory. More... | |
p::id< string > | otawa::NO_RETURN_FUNCTION ("otawa::NO_RETURN_FUNCTION", "") |
this property may be used to pass information about the non-returning behaviour of some functions. More... | |
p::id< bool > | otawa::NO_STACK ("otawa::NO_STACK", false) |
This property shows that no stack need to be allocated. More... | |
p::id< bool > | otawa::NO_SYSTEM ("otawa::NO_SYSTEM", false) |
This property shows that the system does not need to by simulated when the binary image is built. More... | |
p::id< hard::Platform * > | otawa::PLATFORM ("otawa::PLATFORM", 0) |
Identifier of the property indicating a platform (Platform *) to use. More... | |
p::id< string > | otawa::PLATFORM_NAME ("otawa::PLATFORM_NAME", "") |
Identifier of the property indicating the name (CString) of the platform to use. More... | |
p::id< hard::Processor * > | otawa::PROCESSOR ("otawa::PROCESSOR", 0) |
Gives the processor to use in the current computation. More... | |
p::id< elm::xom::Element * > | otawa::PROCESSOR_ELEMENT ("otawa::PROCESSOR_ELEMENT", 0) |
XML element containing the configuration of the processor. More... | |
p::id< elm::sys::Path > | otawa::PROCESSOR_PATH ("otawa::PROCESSOR_PATH", "") |
Path to the XML configuration file of the processor. More... | |
p::feature | otawa::REGISTER_USAGE_FEATURE ("otawa::REGISTER_USAGE_FEATURE", new Maker< NoProcessor >()) |
This feature is usually asserted by processes that provides access to the register usage information. More... | |
p::feature | otawa::SEMANTICS_INFO ("otawa::SEMANTICS_INFO", new Maker< NoProcessor >()) |
This feature is present when the loader provides implementation of semantics information. More... | |
p::feature | otawa::SEMANTICS_INFO_EXTENDED ("otawa::SEMANTICS_INFO_EXTENDED", new Maker< NoProcessor >()) |
This feature is present when the loader provides implementation of extended semantics information. More... | |
p::feature | otawa::SEMANTICS_INFO_FLOAT ("otawa::SEMANTICS_INFO_FLOAT", new Maker< NoProcessor >()) |
This feature is present when the loader provides implementation of floating-point semantic instructions. More... | |
p::id< sim::Simulator * > | otawa::SIMULATOR ("otawa::SIMULATOR", 0) |
This property defines the used the used simulator when a simulator is needed to perform simulation. More... | |
p::id< string > | otawa::SIMULATOR_NAME ("otawa::SIMULATOR_NAME", "") |
Name of the simulator to use. More... | |
p::feature | otawa::SOURCE_LINE_FEATURE ("otawa::SOURCE_LINE_FEATURE", new Maker< NoProcessor >()) |
This feature asserts that a table matching program address and source (file, lines) is available. More... | |
Identifier< Address > | otawa::SP_ADDRESS ("otawa::SP_ADDRESS", Address::null) |
This feature is put on the process to get information about the built image. More... | |
Identifier< Symbol * > | otawa::SYMBOL ("otawa::SYMBOL", 0) |
This property carries the symbol attached to an instruction. More... | |
p::id< Address > | otawa::TASK_ADDRESS ("otawa::TASK_ADDRESS", Address::null) |
This property, passed to the load configuration, select the task entry by its address. More... | |
p::id< string > | otawa::TASK_ENTRY ("otawa::TASK_ENTRY", "main") |
This property, passed to the load configuration, gives the name of the entry function of the current task. More... | |
p::feature | otawa::VLIW_SUPPORTED ("otawa::VLIW_SUPPORTED", new Maker< NoProcessor >()) |
This feature is provided on Process objects by architecture implementing VLIW facilities. More... | |
Variables | |
static Manager | otawa::Manager::_def |
Default manager. More... | |
p::id< int > | otawa::ARGC |
Argument count as passed to the program (int). More... | |
p::id< char ** > | otawa::ARGV |
Argument values as passed to the program (char **). More... | |
Identifier< Address > | otawa::ARGV_ADDRESS |
This feature is put on the process object whose image supports Unix-like argument passing. More... | |
Identifier< Address > | otawa::AUXV_ADDRESS |
This feature is put on the process object whose image supports Unix-like argument passing. More... | |
p::id< hard::CacheConfiguration * > | otawa::CACHE_CONFIG |
This property is used to pass the cache configuration directly to the platform. More... | |
p::id< elm::xom::Element * > | otawa::CACHE_CONFIG_ELEMENT |
Gives an XML element containing the cache configuration. More... | |
p::id< elm::sys::Path > | otawa::CACHE_CONFIG_PATH |
Gives the path of file containing the cache configuration. More... | |
p::feature | otawa::CONDITIONAL_INSTRUCTIONS_FEATURE |
This feature is provided by Process which architecture provides conditional instructions. More... | |
p::id< elm::xom::Element * > | otawa::CONFIG_ELEMENT |
XML element containing the configuration of the current computation. More... | |
p::id< elm::sys::Path > | otawa::CONFIG_PATH |
Path to the XML configuration file used in this computation. More... | |
p::feature | otawa::CONTROL_DECODING_FEATURE |
This feature is usually provided by the loader providing decoding facility for control instructions. More... | |
Identifier< delayed_t > | otawa::DELAYED |
This kind of property is put on control branch to know if the following instruction is executed as part of a delayed branch. More... | |
p::feature | otawa::DELAYED2_FEATURE |
This Process feature informs that the actual architecture supports delayed branch. More... | |
p::feature | otawa::DELAYED_FEATURE |
This feature is put on processes by the loader to inform that the control instruction of the current instruction contains delayed branches. More... | |
Identifier< DelayedInfo * > | otawa::DELAYED_INFO |
This property provides access to delayed branch information of the current program. More... | |
p::id< char ** > | otawa::ENVP |
Argument values as passed to the program (char **). More... | |
Identifier< Address > | otawa::ENVP_ADDRESS |
This feature is put on the process object whose image supports Unix-like argument passing. More... | |
p::feature | otawa::FLOAT_MEMORY_ACCESS_FEATURE |
This feature is usually asserted by processes that provides access to the memory segment of the program with float values. More... | |
Identifier< string > | otawa::FUNCTION_LABEL |
This property is put on instruction. More... | |
Identifier< string > | otawa::LABEL |
Property with this identifier is put on instructions or basic blocks which a symbol is known for. More... | |
p::id< string > | otawa::LOAD_PARAM |
Identifier used for Manager::load() configuration. More... | |
p::id< Loader * > | otawa::LOADER |
Identifier of the property indicating the loader to use. More... | |
p::id< string > | otawa::LOADER_NAME |
Identifier of the property indicating a name (CString) of the loader to use. More... | |
p::feature | otawa::MEMORY_ACCESS_FEATURE |
This feature is usually asserted by processes that provides access to the memory segment of the program. More... | |
p::feature | otawa::MEMORY_ACCESSES |
This feature, put on a process, informs that the functional simulator provides the ability to give information about memory accesses. More... | |
p::id< elm::xom::Element * > | otawa::MEMORY_ELEMENT |
Passed to manager::load() to give the XML element describing the memory configuration. More... | |
p::id< hard::Memory * > | otawa::MEMORY_OBJECT |
Passed to manager::load() to set the memory configuration. More... | |
p::id< elm::sys::Path > | otawa::MEMORY_PATH |
Passed to Manager::load() to give the path of the file describing the memory. More... | |
p::id< string > | otawa::NO_RETURN_FUNCTION |
this property may be used to pass information about the non-returning behaviour of some functions. More... | |
p::id< bool > | otawa::NO_STACK |
This property shows that no stack need to be allocated. More... | |
p::id< bool > | otawa::NO_SYSTEM |
This property shows that the system does not need to by simulated when the binary image is built. More... | |
p::id< hard::Platform * > | otawa::PLATFORM |
Identifier of the property indicating a platform (Platform *) to use. More... | |
p::id< hard::Platform::Identification * > | otawa::PLATFORM_IDENTFIER ("otawa::PLATFORM_IDENTFIER", 0) |
Identifier of the property indicating the identifier (PlatformId) of the loader to use. More... | |
p::id< string > | otawa::PLATFORM_NAME |
Identifier of the property indicating the name (CString) of the platform to use. More... | |
p::id< hard::Processor * > | otawa::PROCESSOR |
Gives the processor to use in the current computation. More... | |
p::id< elm::xom::Element * > | otawa::PROCESSOR_ELEMENT |
XML element containing the configuration of the processor. More... | |
p::id< elm::sys::Path > | otawa::PROCESSOR_PATH |
Path to the XML configuration file of the processor. More... | |
p::feature | otawa::REGISTER_USAGE_FEATURE |
This feature is usually asserted by processes that provides access to the register usage information. More... | |
p::feature | otawa::SEMANTICS_INFO |
This feature is present when the loader provides implementation of semantics information. More... | |
p::feature | otawa::SEMANTICS_INFO_EXTENDED |
This feature is present when the loader provides implementation of extended semantics information. More... | |
p::feature | otawa::SEMANTICS_INFO_FLOAT |
This feature is present when the loader provides implementation of floating-point semantic instructions. More... | |
p::id< sim::Simulator * > | otawa::SIMULATOR |
This property defines the used the used simulator when a simulator is needed to perform simulation. More... | |
p::id< elm::string > | otawa::SIMULATOR_NAME |
Name of the simulator to use. More... | |
p::feature | otawa::SOURCE_LINE_FEATURE |
This feature asserts that a table matching program address and source (file, lines) is available. More... | |
Identifier< Address > | otawa::SP_ADDRESS |
This feature is put on the process to get information about the built image. More... | |
Identifier< Symbol * > | otawa::SYMBOL |
This property carries the symbol attached to an instruction. More... | |
p::id< Address > | otawa::TASK_ADDRESS |
This property, passed to the load configuration, select the task entry by its address. More... | |
p::id< string > | otawa::TASK_ENTRY |
This property, passed to the load configuration, gives the name of the entry function of the current task. More... | |
p::feature | otawa::VLIW_SUPPORTED |
This feature is provided on Process objects by architecture implementing VLIW facilities. More... | |
The program representation module of OTAWA is the main module providing all details about the processed program. It provides a representation built from the program binary form (Process) and provides a workspace to perform analyses (WorkSpace). Usually, a workspace containing a process is provided by the manager (otawa::Manager) as a simple Manager::load() call:
The load may possibly fail and throw an otawa::Exception exception.
The Process class describes the full program and its execution environment as different items of description:
To load a program, the following properties may be useful:
Expert users can also use the following properties:
A commonly used propertu with IPET method is the property below:
Notice that most properties listed above may be used with owcet Command command or most OTAWA command using "--add-prop" option. Ask for command description with "-h" option or look at otawa::Application for more details.
VLIW (Very Long Instruction Word) is a technology allowing to execute in parallel several instructions, in order, without the logic needed to analyze dependencies between instructions and to re-order instructions as found in out-of-order architectures. Instruction are grouped into bundles that are guaranteed by compiler to be executable in parallel.
For instance, runned on a VLIW computer, the ARM instructions below perform actually an exchange of register R0 and R1 (end of bundle is denoted by double semi-colon):
In fact, when the bundle above is executed, registers R1 and R0 are read in parallel and the assignment to R0, respectively to R1, is also performed in parallel.
OTAWA provides a specific support for VLIW but the bundle-aware resources can be used as is by non-VLIW instruction set: bundles will be composed of only one instruction in this case. Whatever, using bundle-aware architecture allows adaptation for free of analyzes to VLIW and non-VLIW architectures. Following bundle facilities are available:
A special attention must be devoted to supporting semantic instruction. Model of execution of semantic instruction is purely sequential. Hence, VLIW instruction set semantic cannot be preserved if semantic instructions of machine are executed sequentially. Re-using the example of register exchange above, the straight translation into semantics will only copy R1 to R0:
A simple trick allows maintaining the current semantic instruction behavior and to adapt without effort existing analysis to VLIW: just copy write-back registers into temporaries and delay write-back to the end of execution of semantic instructions. Therefore, the semantic instructions implementing a machine instructions of a bundle need only to be concatenated and ended by write-back operations. uses these temporaries instead (our example continued):
This requires the help of the VLIW instructions to build such a sequence. Usually, the template to translate into semantic instructions looks like:
For VLIW, this template must be re-defined to perform write-back on temporaries:
Write-back sequence is obtained by a call to Inst::semWriteBack() that returns also the number of used temporaries and Inst::semInsts() allows generating the semantic instruction using a specific temporary base. To detail the example, we get:
A process is the representation of the program at the start of the execution. A process mainly provides the content of the different memories composing the platform updated to with the bits of the program. In addition, the process provides also details bout the underlying architecture (instruction set, endianness, registers, branching model, etc) or about the capacities of the loader.
A simple way to get information about capabilities of an architecture is to look to features provided by the process. They are automatically transfered to any workspace using the process. For example, to test if the architecture supports "delayed branches", one can write:
The following features are usually provided by processes:
enum otawa::delayed_t |
p::id<int> otawa::ARGC | ( | "otawa::ARGC" | , |
- | 1 | ||
) |
Argument count as passed to the program (int).
p::id<char **> otawa::ARGV | ( | "otawa::ARGV" | , |
0 | |||
) |
Argument values as passed to the program (char **).
Identifier<Address> otawa::ARGV_ADDRESS | ( | "otawa::ARGV_ADDRESS" | , |
Address::null | |||
) |
This feature is put on the process object whose image supports Unix-like argument passing.
It contains the image address of the argv vector. Hooks
Identifier<Address> otawa::AUXV_ADDRESS | ( | "otawa::AUXV_ADDRESS" | , |
Address::null | |||
) |
This feature is put on the process object whose image supports Unix-like argument passing.
It contains the image address of the auxv vector. Hooks
p::id<hard::CacheConfiguration *> otawa::CACHE_CONFIG | ( | "otawa::CACHE_CONFIG" | , |
0 | |||
) |
This property is used to pass the cache configuration directly to the platform.
p::id<elm::xom::Element *> otawa::CACHE_CONFIG_ELEMENT | ( | "otawa::CACHE_CONFIG_ELEMENT" | , |
0 | |||
) |
Gives an XML element containing the cache configuration.
p::id<elm::sys::Path> otawa::CACHE_CONFIG_PATH | ( | "otawa::CACHE_CONFIG_PATH" | , |
"" | |||
) |
Gives the path of file containing the cache configuration.
p::feature otawa::CONDITIONAL_INSTRUCTIONS_FEATURE | ( | "otawa::CONDITIONAL_INSTRUCTIONS_FEATURE" | , |
new Maker< NoProcessor > | () | ||
) |
This feature is provided by Process which architecture provides conditional instructions.
A common example are the ARM microprocessors which instructions, at least in normal mode, can be conditional. The architectures providing this feature implement the method Inst::condition() and Inst::updateCondition().
p::id<elm::xom::Element *> otawa::CONFIG_ELEMENT | ( | "otawa::CONFIG_ELEMENT" | , |
0 | |||
) |
XML element containing the configuration of the current computation.
p::id<elm::sys::Path> otawa::CONFIG_PATH | ( | "otawa::CONFIG_PATH" | , |
"" | |||
) |
Path to the XML configuration file used in this computation.
p::feature otawa::CONTROL_DECODING_FEATURE | ( | "otawa::CONTROL_DECODING_FEATURE" | , |
new Maker< NoProcessor > | () | ||
) |
This feature is usually provided by the loader providing decoding facility for control instructions.
Identifier<delayed_t> otawa::DELAYED | ( | "otawa::DELAYED" | , |
DELAYED_None | |||
) |
This kind of property is put on control branch to know if the following instruction is executed as part of a delayed branch.
p::feature otawa::DELAYED2_FEATURE | ( | "otawa::DELAYED2_FEATURE" | , |
new Maker< NoProcessor > | () | ||
) |
This Process feature informs that the actual architecture supports delayed branch.
p::feature otawa::DELAYED_FEATURE | ( | "otawa::DELAYED_FEATURE" | , |
new Maker< NoProcessor > | () | ||
) |
This feature is put on processes by the loader to inform that the control instruction of the current instruction contains delayed branches.
Identifier<DelayedInfo *> otawa::DELAYED_INFO | ( | "otawa::DELAYED_INFO" | , |
0 | |||
) |
This property provides access to delayed branch information of the current program.
p::id<char **> otawa::ENVP | ( | "otawa::ENVP" | , |
0 | |||
) |
Argument values as passed to the program (char **).
Identifier<Address> otawa::ENVP_ADDRESS | ( | "otawa::ENVP_ADDRESS" | , |
Address::null | |||
) |
This feature is put on the process object whose image supports Unix-like argument passing.
It contains the image address of the envp vector. Hooks
p::feature otawa::FLOAT_MEMORY_ACCESS_FEATURE | ( | "otawa::FLOAT_MEMORY_ACCES_FEATURE" | , |
new Maker< NoProcessor > | () | ||
) |
This feature is usually asserted by processes that provides access to the memory segment of the program with float values.
Identifier<String> otawa::FUNCTION_LABEL | ( | "otawa::FUNCTION_LABEL" | , |
"" | |||
) |
This property is put on instruction.
An instruction may accept many properties of this type.
Identifier<String> otawa::LABEL | ( | "otawa::LABEL" | , |
"" | |||
) |
Property with this identifier is put on instructions or basic blocks which a symbol is known for.
Identifier used for Manager::load() configuration.
For complex loading ISA, several properties with such an identifier may be put in the configuration property list. Its arguments is a string of the form ID=VALUE where ID is an identifier of the XXX-config.xml of the loader and VALUE the matching value.
Identifier of the property indicating the loader to use.
Identifier of the property indicating a name (CString) of the loader to use.
p::feature otawa::MEMORY_ACCESS_FEATURE | ( | "otawa::MEMORY_ACCESS_FEATURE" | , |
new Maker< NoProcessor > | () | ||
) |
This feature is usually asserted by processes that provides access to the memory segment of the program.
p::feature otawa::MEMORY_ACCESSES | ( | "otawa::MEMORY_ACCESSES" | , |
new Maker< NoProcessor > | () | ||
) |
This feature, put on a process, informs that the functional simulator provides the ability to give information about memory accesses.
p::id<elm::xom::Element *> otawa::MEMORY_ELEMENT | ( | "otawa::MEMORY_ELEMENT" | , |
0 | |||
) |
Passed to manager::load() to give the XML element describing the memory configuration.
This property is often used with an XML file containing different configurations.
p::id<hard::Memory *> otawa::MEMORY_OBJECT | ( | "otawa::MEMORY_OBJECT" | , |
0 | |||
) |
Passed to manager::load() to set the memory configuration.
The user is responsible of the release of the memory occipied by the memory object.
p::id<elm::sys::Path> otawa::MEMORY_PATH | ( | "otawa::MEMORY_PATH" | , |
"" | |||
) |
Passed to Manager::load() to give the path of the file describing the memory.
this property may be used to pass information about the non-returning behaviour of some functions.
The parameter is the name of the function. It is often used with the _exit function.
This property shows that no stack need to be allocated.
This property shows that the system does not need to by simulated when the binary image is built.
p::id<hard::Platform *> otawa::PLATFORM | ( | "otawa::PLATFORM" | , |
0 | |||
) |
Identifier of the property indicating a platform (Platform *) to use.
Identifier of the property indicating the name (CString) of the platform to use.
p::id<hard::Processor *> otawa::PROCESSOR | ( | "otawa::PROCESSOR" | , |
0 | |||
) |
Gives the processor to use in the current computation.
p::id<elm::xom::Element *> otawa::PROCESSOR_ELEMENT | ( | "otawa::PROCESSOR_ELEMENT" | , |
0 | |||
) |
XML element containing the configuration of the processor.
p::id<elm::sys::Path> otawa::PROCESSOR_PATH | ( | "otawa::PROCESSOR_PATH" | , |
"" | |||
) |
Path to the XML configuration file of the processor.
p::feature otawa::REGISTER_USAGE_FEATURE | ( | "otawa::REGISTER_USAGE_FEATURE" | , |
new Maker< NoProcessor > | () | ||
) |
This feature is usually asserted by processes that provides access to the register usage information.
p::feature otawa::SEMANTICS_INFO | ( | "otawa::SEMANTICS_INFO" | , |
new Maker< NoProcessor > | () | ||
) |
This feature is present when the loader provides implementation of semantics information.
p::feature otawa::SEMANTICS_INFO_EXTENDED | ( | "otawa::SEMANTICS_INFO_EXTENDED" | , |
new Maker< NoProcessor > | () | ||
) |
This feature is present when the loader provides implementation of extended semantics information.
This feature ensures that the following semantics instruction are generated:
p::feature otawa::SEMANTICS_INFO_FLOAT | ( | "otawa::SEMANTICS_INFO_FLOAT" | , |
new Maker< NoProcessor > | () | ||
) |
This feature is present when the loader provides implementation of floating-point semantic instructions.
p::id<sim::Simulator *> otawa::SIMULATOR | ( | "otawa::SIMULATOR" | , |
0 | |||
) |
This property defines the used the used simulator when a simulator is needed to perform simulation.
p::feature otawa::SOURCE_LINE_FEATURE | ( | "otawa::SOURCE_LINE_FEATURE" | , |
new Maker< NoProcessor > | () | ||
) |
This feature asserts that a table matching program address and source (file, lines) is available.
Identifier<Address> otawa::SP_ADDRESS | ( | "otawa::SP_ADDRESS" | , |
Address::null | |||
) |
This feature is put on the process to get information about the built image.
It contains the startup address of the stack pointer. Hooks
Identifier<Symbol *> otawa::SYMBOL | ( | "otawa::SYMBOL" | , |
0 | |||
) |
This property carries the symbol attached to an instruction.
Notice that an instruction may support several symbols.
p::id<Address> otawa::TASK_ADDRESS | ( | "otawa::TASK_ADDRESS" | , |
Address::null | |||
) |
This property, passed to the load configuration, select the task entry by its address.
This property, passed to the load configuration, gives the name of the entry function of the current task.
p::feature otawa::VLIW_SUPPORTED | ( | "otawa::VLIW_SUPPORTED" | , |
new Maker< NoProcessor > | () | ||
) |
This feature is provided on Process objects by architecture implementing VLIW facilities.
This means mainly that Inst::IS_BUNDLE and Inst::semWriteBack() are used in instructions.
|
staticprivate |
Default manager.
Avoid to declare one in the main.
p::id<int> otawa::ARGC("otawa::ARGC", -1) |
Argument count as passed to the program (int).
p::id<char **> otawa::ARGV("otawa::ARGV", 0) |
Argument values as passed to the program (char **).
Identifier<Address> otawa::ARGV_ADDRESS("otawa::ARGV_ADDRESS", Address::null) |
This feature is put on the process object whose image supports Unix-like argument passing.
It contains the image address of the argv vector. Hooks
Identifier<Address> otawa::AUXV_ADDRESS("otawa::AUXV_ADDRESS", Address::null) |
This feature is put on the process object whose image supports Unix-like argument passing.
It contains the image address of the auxv vector. Hooks
p::id<hard::CacheConfiguration *> otawa::CACHE_CONFIG("otawa::CACHE_CONFIG", 0) |
This property is used to pass the cache configuration directly to the platform.
p::id<elm::xom::Element *> otawa::CACHE_CONFIG_ELEMENT("otawa::CACHE_CONFIG_ELEMENT", 0) |
Gives an XML element containing the cache configuration.
Referenced by otawa::script::Script::work().
p::id<elm::sys::Path> otawa::CACHE_CONFIG_PATH("otawa::CACHE_CONFIG_PATH", "") |
Gives the path of file containing the cache configuration.
Referenced by otawa::GraphBBTime< ParExeGraph >::configure().
p::feature otawa::CONDITIONAL_INSTRUCTIONS_FEATURE("otawa::CONDITIONAL_INSTRUCTIONS_FEATURE", new Maker< NoProcessor >()) |
This feature is provided by Process which architecture provides conditional instructions.
A common example are the ARM microprocessors which instructions, at least in normal mode, can be conditional. The architectures providing this feature implement the method Inst::condition() and Inst::updateCondition().
p::id<elm::xom::Element *> otawa::CONFIG_ELEMENT("otawa::CONFIG_ELEMENT", 0) |
XML element containing the configuration of the current computation.
Referenced by otawa::WorkSpace::config(), otawa::Manager::load(), and otawa::script::Script::work().
p::id<elm::sys::Path> otawa::CONFIG_PATH("otawa::CONFIG_PATH", "") |
Path to the XML configuration file used in this computation.
p::feature otawa::CONTROL_DECODING_FEATURE("otawa::CONTROL_DECODING_FEATURE", new Maker< NoProcessor >()) |
This feature is usually provided by the loader providing decoding facility for control instructions.
Identifier<delayed_t> otawa::DELAYED("otawa::DELAYED", DELAYED_None) |
This kind of property is put on control branch to know if the following instruction is executed as part of a delayed branch.
Referenced by otawa::DelayedBuilder::type().
p::feature otawa::DELAYED2_FEATURE("otawa::DELAYED2_FEATURE", new Maker< NoProcessor >()) |
This Process feature informs that the actual architecture supports delayed branch.
Referenced by otawa::DelayedBuilder::setup().
p::feature otawa::DELAYED_FEATURE("otawa::DELAYED_FEATURE", new Maker< NoProcessor >()) |
This feature is put on processes by the loader to inform that the control instruction of the current instruction contains delayed branches.
Referenced by otawa::DelayedBuilder::processWorkSpace().
Identifier<DelayedInfo *> otawa::DELAYED_INFO("otawa::DELAYED_INFO", 0) |
This property provides access to delayed branch information of the current program.
Referenced by otawa::DelayedBuilder::setup().
p::id<char **> otawa::ENVP("otawa::ENVP", 0) |
Argument values as passed to the program (char **).
Identifier<Address> otawa::ENVP_ADDRESS("otawa::ENVP_ADDRESS", Address::null) |
This feature is put on the process object whose image supports Unix-like argument passing.
It contains the image address of the envp vector. Hooks
p::feature otawa::FLOAT_MEMORY_ACCESS_FEATURE("otawa::FLOAT_MEMORY_ACCES_FEATURE", new Maker< NoProcessor >()) |
This feature is usually asserted by processes that provides access to the memory segment of the program with float values.
Identifier<String> otawa::FUNCTION_LABEL("otawa::FUNCTION_LABEL", "") |
This property is put on instruction.
An instruction may accept many properties of this type.
Referenced by otawa::CFG::label(), otawa::CFG::name(), and otawa::TextDecoder::processWorkSpace().
Identifier<String> otawa::LABEL("otawa::LABEL", "") |
Property with this identifier is put on instructions or basic blocks which a symbol is known for.
Referenced by otawa::CFG::label(), otawa::CFG::name(), and otawa::TextDecoder::processWorkSpace().
Identifier used for Manager::load() configuration.
For complex loading ISA, several properties with such an identifier may be put in the configuration property list. Its arguments is a string of the form ID=VALUE where ID is an identifier of the XXX-config.xml of the loader and VALUE the matching value.
Referenced by otawa::Application::run().
Identifier of the property indicating the loader to use.
Identifier of the property indicating a name (CString) of the loader to use.
p::feature otawa::MEMORY_ACCESS_FEATURE("otawa::MEMORY_ACCESS_FEATURE", new Maker< NoProcessor >()) |
This feature is usually asserted by processes that provides access to the memory segment of the program.
Referenced by otawa::Process::get().
p::feature otawa::MEMORY_ACCESSES("otawa::MEMORY_ACCESSES", new Maker< NoProcessor >()) |
This feature, put on a process, informs that the functional simulator provides the ability to give information about memory accesses.
Referenced by otawa::SimState::lowerRead(), otawa::SimState::lowerWrite(), otawa::SimState::upperRead(), and otawa::SimState::upperWrite().
p::id<elm::xom::Element *> otawa::MEMORY_ELEMENT("otawa::MEMORY_ELEMENT", 0) |
Passed to manager::load() to give the XML element describing the memory configuration.
This property is often used with an XML file containing different configurations.
Referenced by otawa::script::Script::work().
p::id<hard::Memory *> otawa::MEMORY_OBJECT("otawa::MEMORY_OBJECT", 0) |
Passed to manager::load() to set the memory configuration.
The user is responsible of the release of the memory occipied by the memory object.
p::id<elm::sys::Path> otawa::MEMORY_PATH("otawa::MEMORY_PATH", "") |
Passed to Manager::load() to give the path of the file describing the memory.
this property may be used to pass information about the non-returning behaviour of some functions.
The parameter is the name of the function. It is often used with the _exit function.
This property shows that no stack need to be allocated.
This property shows that the system does not need to by simulated when the binary image is built.
p::id<hard::Platform *> otawa::PLATFORM("otawa::PLATFORM", 0) |
Identifier of the property indicating a platform (Platform *) to use.
p::id<hard::Platform::Identification *> otawa::PLATFORM_IDENTFIER("otawa::PLATFORM_IDENTFIER", 0) |
Identifier of the property indicating the identifier (PlatformId) of the loader to use.
Identifier of the property indicating the name (CString) of the platform to use.
p::id<hard::Processor *> otawa::PROCESSOR("otawa::PROCESSOR", 0) |
Gives the processor to use in the current computation.
p::id<elm::xom::Element *> otawa::PROCESSOR_ELEMENT("otawa::PROCESSOR_ELEMENT", 0) |
XML element containing the configuration of the processor.
Referenced by otawa::script::Script::work().
p::id<elm::sys::Path> otawa::PROCESSOR_PATH("otawa::PROCESSOR_PATH", "") |
Path to the XML configuration file of the processor.
p::feature otawa::REGISTER_USAGE_FEATURE("otawa::REGISTER_USAGE_FEATURE", new Maker< NoProcessor >()) |
This feature is usually asserted by processes that provides access to the register usage information.
Referenced by otawa::Inst::readRegs(), and otawa::Inst::writtenRegs().
p::feature otawa::SEMANTICS_INFO("otawa::SEMANTICS_INFO", new Maker< NoProcessor >()) |
This feature is present when the loader provides implementation of semantics information.
p::feature otawa::SEMANTICS_INFO_EXTENDED("otawa::SEMANTICS_INFO_EXTENDED", new Maker< NoProcessor >()) |
This feature is present when the loader provides implementation of extended semantics information.
This feature ensures that the following semantics instruction are generated:
p::feature otawa::SEMANTICS_INFO_FLOAT("otawa::SEMANTICS_INFO_FLOAT", new Maker< NoProcessor >()) |
This feature is present when the loader provides implementation of floating-point semantic instructions.
p::id<sim::Simulator *> otawa::SIMULATOR("otawa::SIMULATOR", 0) |
This property defines the used the used simulator when a simulator is needed to perform simulation.
Referenced by otawa::Process::simulator().
Name of the simulator to use.
Referenced by otawa::Process::simulator().
p::feature otawa::SOURCE_LINE_FEATURE("otawa::SOURCE_LINE_FEATURE", new Maker< NoProcessor >()) |
This feature asserts that a table matching program address and source (file, lines) is available.
Referenced by otawa::Process::getSourceLine(), otawa::FlowFactLoader::processWorkSpace(), otawa::ipet::FlowFactLoader::setup(), and otawa::BBRatioDisplayer::setup().
Identifier<Address> otawa::SP_ADDRESS("otawa::SP_ADDRESS", Address::null) |
This feature is put on the process to get information about the built image.
It contains the startup address of the stack pointer. Hooks
Identifier<Symbol *> otawa::SYMBOL("otawa::SYMBOL", 0) |
This property carries the symbol attached to an instruction.
Notice that an instruction may support several symbols.
Referenced by otawa::display::CFGDecorator::displayLabels(), and otawa::WorkSpace::format().
This property, passed to the load configuration, select the task entry by its address.
Referenced by otawa::CFGCollector::configure().
This property, passed to the load configuration, gives the name of the entry function of the current task.
Referenced by otawa::CFGCollector::configure(), and otawa::cfgio::Input::configure().
p::feature otawa::VLIW_SUPPORTED("otawa::VLIW_SUPPORTED", new Maker< NoProcessor >()) |
This feature is provided on Process objects by architecture implementing VLIW facilities.
This means mainly that Inst::IS_BUNDLE and Inst::semWriteBack() are used in instructions.