libTriton
version 1.0 build 1530
|
The abstract architecture class. More...
#include <architecture.hpp>
Public Member Functions | |
TRITON_EXPORT | Architecture (triton::callbacks::Callbacks *callbacks=nullptr) |
Constructor. | |
TRITON_EXPORT bool | isFlag (triton::arch::register_e regId) const |
Returns true if the register ID is a flag. | |
TRITON_EXPORT bool | isFlag (const triton::arch::Register ®) const |
Returns true if the register is a flag. | |
TRITON_EXPORT bool | isRegister (triton::arch::register_e regId) const |
Returns true if the register ID is a register. | |
TRITON_EXPORT bool | isRegister (const triton::arch::Register ®) const |
Returns true if the register is a register. | |
TRITON_EXPORT bool | isRegisterValid (triton::arch::register_e regId) const |
Returns true if the register ID is a register or a flag. | |
TRITON_EXPORT bool | isRegisterValid (const triton::arch::Register ®) const |
Returns true if the register is a register or a flag. | |
TRITON_EXPORT bool | isValid (void) const |
Returns true if the architecture is valid. | |
TRITON_EXPORT bool | isThumb (void) const |
Returns true if the execution mode is Thumb. Only valid for Arm32. | |
TRITON_EXPORT void | setThumb (bool state) |
Sets CPU state to Thumb mode. Only valid for Arm32. | |
TRITON_EXPORT bool | isMemoryExclusiveAccess (void) const |
Returns true if the exclusive memory access flag is set. Only valid for Arm32. | |
TRITON_EXPORT void | setMemoryExclusiveAccess (bool state) |
Sets exclusive memory access flag. Only valid for Arm32. | |
TRITON_EXPORT triton::arch::architecture_e | getArchitecture (void) const |
Returns the kind of architecture as triton::arch::architecture_e. | |
TRITON_EXPORT triton::arch::endianness_e | getEndianness (void) const |
Returns the kind of endianness as triton::arch::endianness_e. | |
TRITON_EXPORT triton::arch::CpuInterface * | getCpuInstance (void) |
Returns the instance of the current CPU used. | |
TRITON_EXPORT triton::uint32 | numberOfRegisters (void) const |
Returns the number of registers according to the CPU architecture. | |
TRITON_EXPORT triton::uint32 | gprBitSize (void) const |
Returns the bit in bit of the General Purpose Registers. | |
TRITON_EXPORT triton::uint32 | gprSize (void) const |
Returns the bit in byte of the General Purpose Registers. | |
TRITON_EXPORT void | setArchitecture (triton::arch::architecture_e arch) |
Initializes an architecture. | |
TRITON_EXPORT void | clearArchitecture (void) |
Clears the architecture states (registers and memory). | |
TRITON_EXPORT const std::unordered_map< triton::arch::register_e, const triton::arch::Register > & | getAllRegisters (void) const |
Returns all registers. | |
TRITON_EXPORT std::set< const triton::arch::Register * > | getParentRegisters (void) const |
Returns all parent registers. | |
TRITON_EXPORT const triton::arch::Register & | getRegister (triton::arch::register_e id) const |
Returns register from id. | |
TRITON_EXPORT const triton::arch::Register & | getRegister (const std::string &name) const |
Returns register from name. | |
TRITON_EXPORT const triton::arch::Register & | getParentRegister (triton::arch::register_e id) const |
Returns parent register from id. | |
TRITON_EXPORT const triton::arch::Register & | getParentRegister (const triton::arch::Register ®) const |
Returns parent register from register. | |
TRITON_EXPORT const triton::arch::Register & | getProgramCounter (void) const |
Returns the program counter register. | |
TRITON_EXPORT const triton::arch::Register & | getStackPointer (void) const |
Returns the stack pointer register. | |
TRITON_EXPORT void | disassembly (triton::arch::Instruction &inst) const |
Disassembles the instruction according to the architecture. | |
TRITON_EXPORT std::vector< triton::arch::Instruction > | disassembly (triton::uint64 addr, triton::usize count) const |
Disassembles a concrete memory area and returns a list of at most count disassembled instructions. | |
TRITON_EXPORT std::vector< triton::arch::Instruction > | disassembly (triton::uint64 addr) const |
Disassembles a concrete memory area from addr to control flow instruction and returns a list of disassembled instructions. | |
TRITON_EXPORT bool | buildSemantics (triton::arch::Instruction &inst) |
Builds the instruction semantics according to the architecture. Returns true if the instruction is supported. | |
TRITON_EXPORT triton::uint8 | getConcreteMemoryValue (triton::uint64 addr, bool execCallbacks=true) const |
Returns the concrete value of a memory cell. | |
TRITON_EXPORT triton::uint512 | getConcreteMemoryValue (const triton::arch::MemoryAccess &mem, bool execCallbacks=true) const |
Returns the concrete value of memory cells. | |
TRITON_EXPORT std::vector< triton::uint8 > | getConcreteMemoryAreaValue (triton::uint64 baseAddr, triton::usize size, bool execCallbacks=true) const |
Returns the concrete value of a memory area. | |
TRITON_EXPORT triton::uint512 | getConcreteRegisterValue (const triton::arch::Register ®, bool execCallbacks=true) const |
Returns the concrete value of a register. | |
TRITON_EXPORT void | setConcreteMemoryValue (triton::uint64 addr, triton::uint8 value) |
[architecture api] - Sets the concrete value of a memory cell. More... | |
TRITON_EXPORT void | setConcreteMemoryValue (const triton::arch::MemoryAccess &mem, const triton::uint512 &value) |
[architecture api] - Sets the concrete value of memory cells. More... | |
TRITON_EXPORT void | setConcreteMemoryAreaValue (triton::uint64 baseAddr, const std::vector< triton::uint8 > &values) |
[architecture api] - Sets the concrete value of a memory area. More... | |
TRITON_EXPORT void | setConcreteMemoryAreaValue (triton::uint64 baseAddr, const triton::uint8 *area, triton::usize size) |
[architecture api] - Sets the concrete value of a memory area. More... | |
TRITON_EXPORT void | setConcreteRegisterValue (const triton::arch::Register ®, const triton::uint512 &value) |
[architecture api] - Sets the concrete value of a register. More... | |
TRITON_EXPORT bool | isConcreteMemoryValueDefined (const triton::arch::MemoryAccess &mem) const |
Returns true if memory cells have a defined concrete value. | |
TRITON_EXPORT bool | isConcreteMemoryValueDefined (triton::uint64 baseAddr, triton::usize size=1) const |
Returns true if memory cells have a defined concrete value. | |
TRITON_EXPORT void | clearConcreteMemoryValue (const triton::arch::MemoryAccess &mem) |
Clears concrete values assigned to the memory cells. | |
TRITON_EXPORT void | clearConcreteMemoryValue (triton::uint64 baseAddr, triton::usize size=1) |
Clears concrete values assigned to the memory cells. | |
Protected Attributes | |
triton::arch::architecture_e | arch |
The kind of architecture used. | |
std::unique_ptr< triton::arch::CpuInterface > | cpu |
Instance to the real CPU class. | |
The abstract architecture class.
Definition at line 44 of file architecture.hpp.
void triton::arch::Architecture::setConcreteMemoryAreaValue | ( | triton::uint64 | baseAddr, |
const std::vector< triton::uint8 > & | values | ||
) |
[architecture api] - Sets the concrete value of a memory area.
Note that by setting a concrete value will probably imply a desynchronization with the symbolic state (if it exists). You should probably use the concretize functions after this.
Definition at line 329 of file architecture.cpp.
void triton::arch::Architecture::setConcreteMemoryAreaValue | ( | triton::uint64 | baseAddr, |
const triton::uint8 * | area, | ||
triton::usize | size | ||
) |
[architecture api] - Sets the concrete value of a memory area.
Note that by setting a concrete value will probably imply a desynchronization with the symbolic state (if it exists). You should probably use the concretize functions after this.
Definition at line 336 of file architecture.cpp.
void triton::arch::Architecture::setConcreteMemoryValue | ( | const triton::arch::MemoryAccess & | mem, |
const triton::uint512 & | value | ||
) |
[architecture api] - Sets the concrete value of memory cells.
Note that by setting a concrete value will probably imply a desynchronization with the symbolic state (if it exists). You should probably use the concretize functions after this.
Definition at line 322 of file architecture.cpp.
void triton::arch::Architecture::setConcreteMemoryValue | ( | triton::uint64 | addr, |
triton::uint8 | value | ||
) |
[architecture api] - Sets the concrete value of a memory cell.
Note that by setting a concrete value will probably imply a desynchronization with the symbolic state (if it exists). You should probably use the concretize functions after this.
Definition at line 315 of file architecture.cpp.
void triton::arch::Architecture::setConcreteRegisterValue | ( | const triton::arch::Register & | reg, |
const triton::uint512 & | value | ||
) |
[architecture api] - Sets the concrete value of a register.
Note that by setting a concrete value will probably imply a desynchronization with the symbolic state (if it exists). You should probably use the concretize functions after this.
Definition at line 343 of file architecture.cpp.