libTriton  version 0.9 build 1502
Public Member Functions | Protected Attributes | List of all members
triton::arch::Architecture Class Reference

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 &reg) 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 &reg) 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 &reg) 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 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::CpuInterfacegetCpuInstance (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::RegistergetRegister (triton::arch::register_e id) const
 Returns register from id.
 
TRITON_EXPORT const triton::arch::RegistergetRegister (const std::string &name) const
 Returns register from name.
 
TRITON_EXPORT const triton::arch::RegistergetParentRegister (triton::arch::register_e id) const
 Returns parent register from id.
 
TRITON_EXPORT const triton::arch::RegistergetParentRegister (const triton::arch::Register &reg) const
 Returns parent register from register.
 
TRITON_EXPORT const triton::arch::RegistergetProgramCounter (void) const
 Returns the program counter register.
 
TRITON_EXPORT const triton::arch::RegistergetStackPointer (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::Instructiondisassembly (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::Instructiondisassembly (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::uint8getConcreteMemoryAreaValue (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 &reg, 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 &reg, 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::CpuInterfacecpu
 Instance to the real CPU class.
 

Detailed Description

The abstract architecture class.

Definition at line 44 of file architecture.hpp.

Member Function Documentation

◆ setConcreteMemoryAreaValue() [1/2]

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 315 of file architecture.cpp.

◆ setConcreteMemoryAreaValue() [2/2]

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 322 of file architecture.cpp.

◆ setConcreteMemoryValue() [1/2]

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 308 of file architecture.cpp.

◆ setConcreteMemoryValue() [2/2]

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 301 of file architecture.cpp.

◆ setConcreteRegisterValue()

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 329 of file architecture.cpp.


The documentation for this class was generated from the following files: