ROSE  0.11.145.0
InstructionUnit.h
1 #ifndef ROSE_BinaryAnalysis_ModelChecker_InstructionUnit_H
2 #define ROSE_BinaryAnalysis_ModelChecker_InstructionUnit_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_MODEL_CHECKER
5 
6 #include <Rose/BinaryAnalysis/ModelChecker/ExecutionUnit.h>
7 
8 namespace Rose {
9 namespace BinaryAnalysis {
10 namespace ModelChecker {
11 
15 class InstructionUnit: public ExecutionUnit {
16 public:
17  using Ptr = InstructionUnitPtr;
18 
19 private:
20  SgAsmInstruction *insn_;
21 
22 protected:
23  InstructionUnit() = delete;
24  InstructionUnit(SgAsmInstruction*, const SourceLocation&);
25 public:
26  ~InstructionUnit();
27 
28 public:
34  static Ptr instance(SgAsmInstruction*, const SourceLocation&);
35 
36 public:
43  SgAsmInstruction* instruction() const;
44 
45 public:
46  virtual std::string printableName() const override;
47  virtual void printSteps(const SettingsPtr&, std::ostream&, const std::string &prefix,
48  size_t stepOrigin, size_t maxSteps) const override;
49  virtual void toYamlHeader(const SettingsPtr&, std::ostream&, const std::string &prefix) const override;
50  virtual void toYamlSteps(const SettingsPtr&, std::ostream&, const std::string &prefix,
51  size_t stepOrigin, size_t maxSteps) const override;
52  virtual size_t nSteps() const override;
53  virtual Sawyer::Optional<rose_addr_t> address() const override;
54 
55  virtual std::vector<TagPtr>
56  execute(const SettingsPtr&, const SemanticCallbacksPtr&,
58 };
59 
60 } // namespace
61 } // namespace
62 } // namespace
63 
64 #endif
65 #endif
boost::shared_ptr< RiscOperators > RiscOperatorsPtr
Shared-ownership pointer to a RISC operators object.
Base class for machine instructions.
Main namespace for the ROSE library.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.