libTriton  version 1.0 build 1530
Public Member Functions | Protected Attributes | List of all members
triton::arch::arm::aarch64::AArch64Cpu Class Reference

This class is used to describe the ARM (64-bits) spec. More...

#include <aarch64Cpu.hpp>

Inheritance diagram for triton::arch::arm::aarch64::AArch64Cpu:

Public Member Functions

TRITON_EXPORT AArch64Cpu (triton::callbacks::Callbacks *callbacks=nullptr)
 Constructor.
 
TRITON_EXPORT AArch64Cpu (const AArch64Cpu &other)
 Constructor.
 
virtual TRITON_EXPORT ~AArch64Cpu ()
 Destructor.
 
TRITON_EXPORT AArch64Cpuoperator= (const AArch64Cpu &other)
 Copies a AArch64Cpu class.
 
TRITON_EXPORT bool isGPR (triton::arch::register_e regId) const
 Returns true if regId is a GRP.
 
TRITON_EXPORT bool isScalarRegister (triton::arch::register_e regId) const
 Returns true if regId is a scalar register.
 
TRITON_EXPORT bool isFlag (triton::arch::register_e regId) const
 Returns true if the register ID 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 isRegisterValid (triton::arch::register_e regId) const
 Returns true if the register ID is valid.
 
TRITON_EXPORT bool isThumb (void) const
 Returns true if the execution mode is Thumb. Only useful for Arm32.
 
TRITON_EXPORT bool isMemoryExclusiveAccess (void) const
 Returns true if the exclusive memory access flag is set. Only valid for Arm32.
 
TRITON_EXPORT const std::unordered_map< triton::arch::register_e, const triton::arch::Register > & getAllRegisters (void) const
 Returns all registers.
 
TRITON_EXPORT const triton::arch::RegistergetParentRegister (const triton::arch::Register &reg) const
 Returns parent register from a given one.
 
TRITON_EXPORT const triton::arch::RegistergetParentRegister (triton::arch::register_e id) const
 Returns parent register from a given one.
 
TRITON_EXPORT const triton::arch::RegistergetProgramCounter (void) const
 Returns the program counter register.
 
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::RegistergetStackPointer (void) const
 Returns the stack pointer register.
 
TRITON_EXPORT std::set< const triton::arch::Register * > getParentRegisters (void) const
 Returns all parent registers.
 
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::arch::endianness_e getEndianness (void) const
 Returns the kind of endianness as triton::arch::endianness_e.
 
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 triton::uint32 numberOfRegisters (void) const
 Returns the number of registers according to the CPU architecture.
 
TRITON_EXPORT triton::uint512 getConcreteMemoryValue (const triton::arch::MemoryAccess &mem, bool execCallbacks=true) const
 Returns the concrete value of memory cells.
 
TRITON_EXPORT triton::uint512 getConcreteRegisterValue (const triton::arch::Register &reg, bool execCallbacks=true) const
 Returns the concrete value of a register.
 
TRITON_EXPORT triton::uint8 getConcreteMemoryValue (triton::uint64 addr, bool execCallbacks=true) const
 Returns the concrete value of a memory cell.
 
TRITON_EXPORT void clear (void)
 Clears the architecture states (registers and memory).
 
TRITON_EXPORT void disassembly (triton::arch::Instruction &inst)
 Disassembles the instruction according to the architecture.
 
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 setConcreteMemoryValue (const triton::arch::MemoryAccess &mem, const triton::uint512 &value)
 [architecture api] - Sets the concrete value of memory cells. More...
 
TRITON_EXPORT void setConcreteMemoryValue (triton::uint64 addr, triton::uint8 value)
 [architecture api] - Sets the concrete value of a memory cell. 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 void setThumb (bool state)
 Sets CPU state to Thumb mode.
 
TRITON_EXPORT void setMemoryExclusiveAccess (bool state)
 Sets exclusive memory access flag. Only valid for Arm32.
 
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.
 
- Public Member Functions inherited from triton::arch::CpuInterface
virtual TRITON_EXPORT ~CpuInterface ()
 Destructor.
 
- Public Member Functions inherited from triton::arch::arm::aarch64::AArch64Specifications
TRITON_EXPORT AArch64Specifications (triton::arch::architecture_e)
 Constructor.
 
TRITON_EXPORT triton::arch::register_e capstoneRegisterToTritonRegister (triton::uint32 id) const
 Converts a capstone's register id to a triton's register id.
 
TRITON_EXPORT triton::arch::arm::shift_e capstoneShiftToTritonShift (triton::uint32 id) const
 Converts a capstone's shift id to a triton's shift id.
 
TRITON_EXPORT triton::arch::arm::extend_e capstoneExtendToTritonExtend (triton::uint32 id) const
 Converts a capstone's extend id to a triton's extend id.
 
TRITON_EXPORT triton::arch::arm::condition_e capstoneConditionToTritonCondition (triton::uint32 id) const
 Converts a capstone's condition id to a triton's condition id.
 
TRITON_EXPORT triton::uint32 capstoneInstructionToTritonInstruction (triton::uint32 id) const
 Converts a capstone's instruction id to a triton's instruction id.
 

Protected Attributes

std::unordered_map< triton::uint64, triton::uint8, IdentityHash< triton::uint64 > > memory
 map of address -> concrete value More...
 
triton::uint8 x0 [triton::size::qword]
 Concrete value of x0.
 
triton::uint8 x1 [triton::size::qword]
 Concrete value of x1.
 
triton::uint8 x2 [triton::size::qword]
 Concrete value of x2.
 
triton::uint8 x3 [triton::size::qword]
 Concrete value of x3.
 
triton::uint8 x4 [triton::size::qword]
 Concrete value of x4.
 
triton::uint8 x5 [triton::size::qword]
 Concrete value of x5.
 
triton::uint8 x6 [triton::size::qword]
 Concrete value of x6.
 
triton::uint8 x7 [triton::size::qword]
 Concrete value of x7.
 
triton::uint8 x8 [triton::size::qword]
 Concrete value of x8.
 
triton::uint8 x9 [triton::size::qword]
 Concrete value of x9.
 
triton::uint8 x10 [triton::size::qword]
 Concrete value of x10.
 
triton::uint8 x11 [triton::size::qword]
 Concrete value of x11.
 
triton::uint8 x12 [triton::size::qword]
 Concrete value of x12.
 
triton::uint8 x13 [triton::size::qword]
 Concrete value of x13.
 
triton::uint8 x14 [triton::size::qword]
 Concrete value of x14.
 
triton::uint8 x15 [triton::size::qword]
 Concrete value of x15.
 
triton::uint8 x16 [triton::size::qword]
 Concrete value of x16.
 
triton::uint8 x17 [triton::size::qword]
 Concrete value of x17.
 
triton::uint8 x18 [triton::size::qword]
 Concrete value of x18.
 
triton::uint8 x19 [triton::size::qword]
 Concrete value of x19.
 
triton::uint8 x20 [triton::size::qword]
 Concrete value of x20.
 
triton::uint8 x21 [triton::size::qword]
 Concrete value of x21.
 
triton::uint8 x22 [triton::size::qword]
 Concrete value of x22.
 
triton::uint8 x23 [triton::size::qword]
 Concrete value of x23.
 
triton::uint8 x24 [triton::size::qword]
 Concrete value of x24.
 
triton::uint8 x25 [triton::size::qword]
 Concrete value of x25.
 
triton::uint8 x26 [triton::size::qword]
 Concrete value of x26.
 
triton::uint8 x27 [triton::size::qword]
 Concrete value of x27.
 
triton::uint8 x28 [triton::size::qword]
 Concrete value of x28.
 
triton::uint8 x29 [triton::size::qword]
 Concrete value of x29.
 
triton::uint8 x30 [triton::size::qword]
 Concrete value of x30.
 
triton::uint8 q0 [triton::size::dqword]
 Concrete value of q0.
 
triton::uint8 q1 [triton::size::dqword]
 Concrete value of q1.
 
triton::uint8 q2 [triton::size::dqword]
 Concrete value of q2.
 
triton::uint8 q3 [triton::size::dqword]
 Concrete value of q3.
 
triton::uint8 q4 [triton::size::dqword]
 Concrete value of q4.
 
triton::uint8 q5 [triton::size::dqword]
 Concrete value of q5.
 
triton::uint8 q6 [triton::size::dqword]
 Concrete value of q6.
 
triton::uint8 q7 [triton::size::dqword]
 Concrete value of q7.
 
triton::uint8 q8 [triton::size::dqword]
 Concrete value of q8.
 
triton::uint8 q9 [triton::size::dqword]
 Concrete value of q9.
 
triton::uint8 q10 [triton::size::dqword]
 Concrete value of q10.
 
triton::uint8 q11 [triton::size::dqword]
 Concrete value of q11.
 
triton::uint8 q12 [triton::size::dqword]
 Concrete value of q12.
 
triton::uint8 q13 [triton::size::dqword]
 Concrete value of q13.
 
triton::uint8 q14 [triton::size::dqword]
 Concrete value of q14.
 
triton::uint8 q15 [triton::size::dqword]
 Concrete value of q15.
 
triton::uint8 q16 [triton::size::dqword]
 Concrete value of q16.
 
triton::uint8 q17 [triton::size::dqword]
 Concrete value of q17.
 
triton::uint8 q18 [triton::size::dqword]
 Concrete value of q18.
 
triton::uint8 q19 [triton::size::dqword]
 Concrete value of q19.
 
triton::uint8 q20 [triton::size::dqword]
 Concrete value of q20.
 
triton::uint8 q21 [triton::size::dqword]
 Concrete value of q21.
 
triton::uint8 q22 [triton::size::dqword]
 Concrete value of q22.
 
triton::uint8 q23 [triton::size::dqword]
 Concrete value of q23.
 
triton::uint8 q24 [triton::size::dqword]
 Concrete value of q24.
 
triton::uint8 q25 [triton::size::dqword]
 Concrete value of q25.
 
triton::uint8 q26 [triton::size::dqword]
 Concrete value of q26.
 
triton::uint8 q27 [triton::size::dqword]
 Concrete value of q27.
 
triton::uint8 q28 [triton::size::dqword]
 Concrete value of q28.
 
triton::uint8 q29 [triton::size::dqword]
 Concrete value of q29.
 
triton::uint8 q30 [triton::size::dqword]
 Concrete value of q30.
 
triton::uint8 q31 [triton::size::dqword]
 Concrete value of q31.
 
triton::uint8 sp [triton::size::qword]
 Concrete value of sp.
 
triton::uint8 pc [triton::size::qword]
 Concrete value of pc.
 
triton::uint8 spsr [triton::size::dword]
 Concrete value of spsr.
 
- Protected Attributes inherited from triton::arch::arm::aarch64::AArch64Specifications
std::unordered_map< triton::arch::register_e, const triton::arch::Registerid2reg
 List of registers specification available for this architecture.
 
std::unordered_map< std::string, triton::arch::register_ename2id
 

Detailed Description

This class is used to describe the ARM (64-bits) spec.

Definition at line 61 of file aarch64Cpu.hpp.

Member Function Documentation

◆ setConcreteMemoryAreaValue() [1/2]

void triton::arch::arm::aarch64::AArch64Cpu::setConcreteMemoryAreaValue ( triton::uint64  baseAddr,
const std::vector< triton::uint8 > &  values 
)
virtual

[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.

Implements triton::arch::CpuInterface.

Definition at line 817 of file aarch64Cpu.cpp.

◆ setConcreteMemoryAreaValue() [2/2]

void triton::arch::arm::aarch64::AArch64Cpu::setConcreteMemoryAreaValue ( triton::uint64  baseAddr,
const triton::uint8 area,
triton::usize  size 
)
virtual

[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.

Implements triton::arch::CpuInterface.

Definition at line 825 of file aarch64Cpu.cpp.

◆ setConcreteMemoryValue() [1/2]

void triton::arch::arm::aarch64::AArch64Cpu::setConcreteMemoryValue ( const triton::arch::MemoryAccess mem,
const triton::uint512 value 
)
virtual

[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.

Implements triton::arch::CpuInterface.

Definition at line 796 of file aarch64Cpu.cpp.

◆ setConcreteMemoryValue() [2/2]

void triton::arch::arm::aarch64::AArch64Cpu::setConcreteMemoryValue ( triton::uint64  addr,
triton::uint8  value 
)
virtual

[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.

Implements triton::arch::CpuInterface.

Definition at line 789 of file aarch64Cpu.cpp.

◆ setConcreteRegisterValue()

void triton::arch::arm::aarch64::AArch64Cpu::setConcreteRegisterValue ( const triton::arch::Register reg,
const triton::uint512 value 
)
virtual

[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.

Implements triton::arch::CpuInterface.

Definition at line 833 of file aarch64Cpu.cpp.

Member Data Documentation

◆ memory

std::unordered_map<triton::uint64, triton::uint8, IdentityHash<triton::uint64> > triton::arch::arm::aarch64::AArch64Cpu::memory
protected

map of address -> concrete value

item1: memory address
item2: concrete value

Definition at line 87 of file aarch64Cpu.hpp.


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