libTriton  version 0.9 build 1504
archEnums.hpp
Go to the documentation of this file.
1 /*
3 ** Copyright (C) - Triton
4 **
5 ** This program is under the terms of the Apache License 2.0.
6 */
7 
8 #ifndef TRITON_ARCHENUMS_HPP
9 #define TRITON_ARCHENUMS_HPP
10 
11 #include <cstdint>
12 #include <functional>
13 
14 
15 
17 namespace triton {
24  namespace arch {
38  };
39 
41  enum endianness_e {
44  };
45 
47  enum operand_e {
48  OP_INVALID = 0,
51  OP_REG
52  };
53 
55  enum register_e {
57 
58  #define REG_SPEC(UPPER_NAME, _1, _2, _3, _4, _5, _6, _7, _8) \
59  ID_REG_X86_##UPPER_NAME,
60  #define REG_SPEC_NO_CAPSTONE REG_SPEC
61  #include "triton/x86.spec"
62 
63  #define REG_SPEC(UPPER_NAME, _1, _2, _3, _4, _5) \
64  ID_REG_AARCH64_##UPPER_NAME,
65  #define REG_SPEC_NO_CAPSTONE REG_SPEC
66  #include "triton/aarch64.spec"
67 
68  #define REG_SPEC(UPPER_NAME, _1, _2, _3, _4, _5) \
69  ID_REG_ARM32_##UPPER_NAME,
70  #define REG_SPEC_NO_CAPSTONE REG_SPEC
71  #include "triton/arm32.spec"
72 
73  /* Must be the last item */
75  };
76 
78  namespace x86 {
91  enum prefix_e {
97 
98  /* Must be the last item */
100  };
101 
103  };
104 
106  namespace arm {
114  enum shift_e {
127  };
128 
130  enum extend_e {
141  };
142 
144  enum condition_e {
162  };
163 
165  };
167  };
169 };
170 
171 namespace std {
173  template <> struct hash<triton::arch::register_e> : public hash<uint64_t> {
174  };
175 };
176 
177 #endif /* TRITON_ARCHENUMS_HPP */
register_e
Types of register.
Definition: archEnums.hpp:55
@ OP_IMM
immediate operand
Definition: archEnums.hpp:49
@ OP_INVALID
invalid operand
Definition: archEnums.hpp:48
@ OP_MEM
memory operand
Definition: archEnums.hpp:50
@ OP_REG
register operand
Definition: archEnums.hpp:51
@ ID_REG_INVALID
invalid = 0
Definition: archEnums.hpp:56
@ ID_REG_LAST_ITEM
must be the last item
Definition: archEnums.hpp:74
shift_e
Types of shift.
Definition: archEnums.hpp:114
extend_e
Types of extend.
Definition: archEnums.hpp:130
condition_e
Types of condition.
Definition: archEnums.hpp:144
@ ID_SHIFT_LSR
Logical Shift Right (immediate)
Definition: archEnums.hpp:118
@ ID_SHIFT_LSR_REG
Logical Shift Right (register)
Definition: archEnums.hpp:123
@ ID_SHIFT_ASR
Arithmetic Shift Right (immediate)
Definition: archEnums.hpp:116
@ ID_SHIFT_ROR_REG
Rotate Right (register)
Definition: archEnums.hpp:124
@ ID_SHIFT_ROR
Rotate Right (immediate)
Definition: archEnums.hpp:119
@ ID_SHIFT_ASR_REG
Arithmetic Shift Right (register)
Definition: archEnums.hpp:121
@ ID_SHIFT_RRX
Rotate Right with Extend (immediate)
Definition: archEnums.hpp:120
@ ID_SHIFT_RRX_REG
Rotate Right with Extend (register)
Definition: archEnums.hpp:125
@ ID_SHIFT_LAST_ITEM
Must be the last item.
Definition: archEnums.hpp:126
@ ID_SHIFT_LSL_REG
Logical Shift Left (register)
Definition: archEnums.hpp:122
@ ID_SHIFT_INVALID
invalid
Definition: archEnums.hpp:115
@ ID_SHIFT_LSL
Logical Shift Left (immediate)
Definition: archEnums.hpp:117
@ ID_EXTEND_SXTW
Extracts a word (32-bit) value from a register and zero extends it to the size of the register.
Definition: archEnums.hpp:138
@ ID_EXTEND_UXTX
Use the whole 64-bit register.
Definition: archEnums.hpp:135
@ ID_EXTEND_SXTX
Use the whole 64-bit register.
Definition: archEnums.hpp:139
@ ID_EXTEND_SXTH
Extracts a halfword (16-bit) value from a register and zero extends it to the size of the register.
Definition: archEnums.hpp:137
@ ID_EXTEND_UXTB
Extracts a byte (8-bit) value from a register and zero extends it to the size of the register.
Definition: archEnums.hpp:132
@ ID_EXTEND_INVALID
invalid
Definition: archEnums.hpp:131
@ ID_EXTEND_UXTW
Extracts a word (32-bit) value from a register and zero extends it to the size of the register.
Definition: archEnums.hpp:134
@ ID_EXTEND_SXTB
Extracts a byte (8-bit) value from a register and zero extends it to the size of the register.
Definition: archEnums.hpp:136
@ ID_EXTEND_UXTH
Extracts a halfword (16-bit) value from a register and zero extends it to the size of the register.
Definition: archEnums.hpp:133
@ ID_EXTEND_LAST_ITEM
Must be the last item.
Definition: archEnums.hpp:140
@ ID_CONDITION_HS
Higher or same (unsigned >=). C set.
Definition: archEnums.hpp:151
@ ID_CONDITION_PL
Positive or zero. N clear.
Definition: archEnums.hpp:158
@ ID_CONDITION_VC
No overflow. V clear.
Definition: archEnums.hpp:159
@ ID_CONDITION_LE
Signed <=. Z set, N and V differ.
Definition: archEnums.hpp:152
@ ID_CONDITION_VS
Overflow. V set.
Definition: archEnums.hpp:160
@ ID_CONDITION_LAST_ITEM
must be the last item.
Definition: archEnums.hpp:161
@ ID_CONDITION_MI
Negative. N set.
Definition: archEnums.hpp:156
@ ID_CONDITION_GE
Signed >=. N and V the same.
Definition: archEnums.hpp:148
@ ID_CONDITION_GT
Signed >. Z clear, N and V the same.
Definition: archEnums.hpp:149
@ ID_CONDITION_HI
Higher (unsigned >). C set and Z clear.
Definition: archEnums.hpp:150
@ ID_CONDITION_NE
Not equal. Z clear.
Definition: archEnums.hpp:157
@ ID_CONDITION_AL
Always. Any flags. This suffix is normally omitted.
Definition: archEnums.hpp:146
@ ID_CONDITION_LO
Lower (unsigned <). C clear.
Definition: archEnums.hpp:153
@ ID_CONDITION_LT
Signed <. N and V differ.
Definition: archEnums.hpp:155
@ ID_CONDITION_LS
Lower or same (unsigned <=). C clear or Z set.
Definition: archEnums.hpp:154
@ ID_CONDITION_INVALID
invalid
Definition: archEnums.hpp:145
@ ID_CONDITION_EQ
Equal. Z set.
Definition: archEnums.hpp:147
prefix_e
Types of prefix.
Definition: archEnums.hpp:91
@ ID_PREFIX_REPE
REPE.
Definition: archEnums.hpp:95
@ ID_PREFIX_REPNE
REPNE.
Definition: archEnums.hpp:96
@ ID_PREFIX_INVALID
invalid
Definition: archEnums.hpp:92
@ ID_PREFIX_LAST_ITEM
must be the last item
Definition: archEnums.hpp:99
@ ID_PREFIX_LOCK
LOCK.
Definition: archEnums.hpp:93
The Triton namespace.
Definition: api.cpp:227