Otawa  0.10
features.h
Go to the documentation of this file.
1 /*
2  * $Id$
3  * Features for the prog module.
4  *
5  * This file is part of OTAWA
6  * Copyright (c) 2008, IRIT UPS.
7  *
8  * OTAWA is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * OTAWA is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with OTAWA; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21  */
22 #ifndef OTAWA_PROG_FEATURES_H_
23 #define OTAWA_PROG_FEATURES_H_
24 
25 #include <otawa/proc/Feature.h>
26 
27 namespace otawa {
28 
29 // delayed_t type
30 typedef enum delayed_t {
34 } delayed_t;
35 
36 // DelayedInfo class
37 class DelayedInfo {
38 public:
39  virtual ~DelayedInfo(void);
40  virtual delayed_t type(Inst *inst) = 0;
41  virtual int count(Inst *inst);
42 };
44 
45 
46 // Process information
52 
53 // Features
66 
67 } // otawa
68 
69 #endif /* OTAWA_PROG_FEATURES_H_ */
virtual ~DelayedInfo(void)
Definition: Process.cpp:1133
struct otawa::sem::inst inst
No delayed instruction.
Definition: features.h:31
Identifier< Address > ARGV_ADDRESS
This feature is put on the process object whose image supports Unix-like argument passing...
p::feature DELAYED_FEATURE
This feature is put on processes by the loader to inform that the control instruction of the current ...
p::feature DELAYED2_FEATURE
This Process feature informs that the actual architecture supports delayed branch.
p::feature SEMANTICS_INFO_EXTENDED
This feature is present when the loader provides implementation of extended semantics information...
p::feature MEMORY_ACCESS_FEATURE
This feature is usually asserted by processes that provides access to the memory segment of the progr...
Identifier< DelayedInfo * > DELAYED_INFO
This property provides access to delayed branch information of the current program.
p::feature SEMANTICS_INFO
This feature is present when the loader provides implementation of semantics information.
virtual int count(Inst *inst)
Get the count of instructions before the delayed branch becomes effective.
Definition: Process.cpp:1150
delayed_t
Enumeration giving the type of delayed modes used by control instruction.
Definition: features.h:30
p::feature VLIW_SUPPORTED
This feature is provided on Process objects by architecture implementing VLIW facilities.
Identifier< delayed_t > DELAYED
This kind of property is put on control branch to know if the following instruction is executed as pa...
Identifier< Address > SP_ADDRESS
This feature is put on the process to get information about the built image.
virtual delayed_t type(Inst *inst)=0
Get the type of the delayed control instruction.
The delayed instruction is only executed when the branch is taken.
Definition: features.h:33
p::feature SOURCE_LINE_FEATURE
This feature asserts that a table matching program address and source (file, lines) is available...
p::feature REGISTER_USAGE_FEATURE
This feature is usually asserted by processes that provides access to the register usage information...
p::feature CONTROL_DECODING_FEATURE
This feature is usually provided by the loader providing decoding facility for control instructions...
This class represents identifier with a typed associated value.
Definition: Identifier.h:51
p::feature FLOAT_MEMORY_ACCESS_FEATURE
This feature is usually asserted by processes that provides access to the memory segment of the progr...
This class represents assembly instruction of a piece of code.
Definition: Inst.h:62
The delayed instruction is ever executed, branch taken or not.
Definition: features.h:32
p::feature SEMANTICS_INFO_FLOAT
This feature is present when the loader provides implementation of floating-point semantic instructio...
Identifier< Address > ENVP_ADDRESS
This feature is put on the process object whose image supports Unix-like argument passing...
Shortcut to create a feature with a maker (without the mess of SilentFeature).
Definition: AbstractFeature.h:51
p::feature MEMORY_ACCESSES
This feature, put on a process, informs that the functional simulator provides the ability to give in...
Provide information on delayed branches.
Definition: features.h:37
Identifier< Address > AUXV_ADDRESS
This feature is put on the process object whose image supports Unix-like argument passing...