retdec
architecture.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_COMMON_ARCHITECTURE_H
8 #define RETDEC_COMMON_ARCHITECTURE_H
9 
10 #include <string>
11 
12 namespace retdec {
13 namespace common {
14 
19 {
20  public:
23  bool isUnknown() const;
24  bool isKnown() const;
25  bool isMips() const;
26  bool isMips64() const;
27  bool isPic32() const;
28  bool isMipsOrPic32() const;
29  bool isArm() const;
30  bool isArm32() const;
31  bool isArm64() const;
32  bool isThumb() const;
33  bool isArm32OrThumb() const;
34  bool isX86() const;
35  bool isX86_16() const;
36  bool isX86_32() const;
37  bool isX86_64() const;
38  bool isPpc() const;
39  bool isPpc64() const;
40  bool isEndianLittle() const;
41  bool isEndianBig() const;
42  bool isEndianKnown() const;
43  bool isEndianUnknown() const;
45 
48  void setIsUnknown();
49  void setIsMips();
50  void setIsPic32();
51  void setIsArm();
52  void setIsThumb();
53  void setIsArm32();
54  void setIsArm64();
55  void setIsX86();
56  void setIsPpc();
60  void setName(const std::string &n);
61  void setBitSize(unsigned bs);
63 
66  std::string getName() const;
67  unsigned getBitSize() const;
68  unsigned getByteSize() const;
70 
71  private:
72  enum eEndian
73  {
76  E_BIG
77  };
78 
79  enum class eArch
80  {
81  UNKNOWN,
82  MIPS,
83  PIC32,
84  ARM,
85  X86,
86  PPC,
87  };
88 
89  private:
90  bool isArch(const std::string& a) const;
91  bool isArch(eArch a) const;
92  void setArch();
93 
94  private:
95  std::string _name;
96  unsigned _bitSize = 32;
97  bool _thumbFlag = false;
100 };
101 
102 } // namespace common
103 } // namespace retdec
104 
105 #endif
Definition: architecture.h:19
eArch _arch
Definition: architecture.h:99
eArch
Definition: architecture.h:80
bool isArch(const std::string &a) const
unsigned _bitSize
Definition: architecture.h:96
void setName(const std::string &n)
bool isArch(eArch a) const
std::string getName() const
void setBitSize(unsigned bs)
unsigned getBitSize() const
std::string _name
Definition: architecture.h:95
eEndian _endian
Definition: architecture.h:98
eEndian
Definition: architecture.h:73
@ E_BIG
Definition: architecture.h:76
@ E_UNKNOWN
Definition: architecture.h:74
@ E_LITTLE
Definition: architecture.h:75
unsigned getByteSize() const
bool _thumbFlag
Definition: architecture.h:97
Definition: archive_wrapper.h:19