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

This class is used to describe the x86 (32-bits) spec. More...

#include <x86Cpu.hpp>

Inheritance diagram for triton::arch::x86::x86Cpu:

Public Member Functions

TRITON_EXPORT x86Cpu (triton::callbacks::Callbacks *callbacks=nullptr)
 Constructor.
 
TRITON_EXPORT x86Cpu (const x86Cpu &other)
 Copy constructor.
 
virtual TRITON_EXPORT ~x86Cpu ()
 Destructor.
 
TRITON_EXPORT x86Cpuoperator= (const x86Cpu &other)
 Copies a x86Cpu class.
 
TRITON_EXPORT bool isGPR (triton::arch::register_e regId) const
 Returns true if regId is a GRP.
 
TRITON_EXPORT bool isMMX (triton::arch::register_e regId) const
 Returns true if regId is a MMX register.
 
TRITON_EXPORT bool isSTX (triton::arch::register_e regId) const
 Returns true if regId is a STX register.
 
TRITON_EXPORT bool isSSE (triton::arch::register_e regId) const
 Returns true if regId is a SSE register.
 
TRITON_EXPORT bool isFPU (triton::arch::register_e regId) const
 Returns true if regId is a FPU register.
 
TRITON_EXPORT bool isEFER (triton::arch::register_e regId) const
 Returns true if regId is an EFER register.
 
TRITON_EXPORT bool isAVX256 (triton::arch::register_e regId) const
 Returns true if regId is a AVX-256 (YMM) register.
 
TRITON_EXPORT bool isControl (triton::arch::register_e regId) const
 Returns true if regId is a control (cr) register.
 
TRITON_EXPORT bool isDebug (triton::arch::register_e regId) const
 Returns true if regId is a debug (dr) register.
 
TRITON_EXPORT bool isSegment (triton::arch::register_e regId) const
 Returns true if regId is a Segment.
 
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 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 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::x86::x86Specifications
TRITON_EXPORT x86Specifications (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::uint32 capstoneInstructionToTritonInstruction (triton::uint32 id) const
 Converts a capstone's instruction id to a triton's instruction id.
 
TRITON_EXPORT triton::arch::x86::prefix_e capstonePrefixToTritonPrefix (triton::uint32 id) const
 Converts a capstone's prefix id to a triton's prefix id.
 

Protected Attributes

std::unordered_map< triton::uint64, triton::uint8, IdentityHash< triton::uint64 > > memory
 map of address -> concrete value More...
 
triton::uint8 eax [triton::size::dword]
 Concrete value of eax.
 
triton::uint8 ebx [triton::size::dword]
 Concrete value of ebx.
 
triton::uint8 ecx [triton::size::dword]
 Concrete value of ecx.
 
triton::uint8 edx [triton::size::dword]
 Concrete value of edx.
 
triton::uint8 edi [triton::size::dword]
 Concrete value of edi.
 
triton::uint8 esi [triton::size::dword]
 Concrete value of esi.
 
triton::uint8 ebp [triton::size::dword]
 Concrete value of ebp.
 
triton::uint8 esp [triton::size::dword]
 Concrete value of esp.
 
triton::uint8 eip [triton::size::dword]
 Concrete value of eip.
 
triton::uint8 eflags [triton::size::dword]
 Concrete value of eflags.
 
triton::uint8 st0 [triton::size::fword]
 Concrete value of st0.
 
triton::uint8 st1 [triton::size::fword]
 Concrete value of st1.
 
triton::uint8 st2 [triton::size::fword]
 Concrete value of st2.
 
triton::uint8 st3 [triton::size::fword]
 Concrete value of st3.
 
triton::uint8 st4 [triton::size::fword]
 Concrete value of st4.
 
triton::uint8 st5 [triton::size::fword]
 Concrete value of st5.
 
triton::uint8 st6 [triton::size::fword]
 Concrete value of st6.
 
triton::uint8 st7 [triton::size::fword]
 Concrete value of st7.
 
triton::uint8 ymm0 [triton::size::qqword]
 Concrete value of ymm0.
 
triton::uint8 ymm1 [triton::size::qqword]
 Concrete value of ymm1.
 
triton::uint8 ymm2 [triton::size::qqword]
 Concrete value of ymm2.
 
triton::uint8 ymm3 [triton::size::qqword]
 Concrete value of ymm3.
 
triton::uint8 ymm4 [triton::size::qqword]
 Concrete value of ymm4.
 
triton::uint8 ymm5 [triton::size::qqword]
 Concrete value of ymm5.
 
triton::uint8 ymm6 [triton::size::qqword]
 Concrete value of ymm6.
 
triton::uint8 ymm7 [triton::size::qqword]
 Concrete value of ymm7.
 
triton::uint8 cr0 [triton::size::dword]
 Concrete value of cr0.
 
triton::uint8 cr1 [triton::size::dword]
 Concrete value of cr1.
 
triton::uint8 cr2 [triton::size::dword]
 Concrete value of cr2.
 
triton::uint8 cr3 [triton::size::dword]
 Concrete value of cr3.
 
triton::uint8 cr4 [triton::size::dword]
 Concrete value of cr4.
 
triton::uint8 cr5 [triton::size::dword]
 Concrete value of cr5.
 
triton::uint8 cr6 [triton::size::dword]
 Concrete value of cr6.
 
triton::uint8 cr7 [triton::size::dword]
 Concrete value of cr7.
 
triton::uint8 cr8 [triton::size::dword]
 Concrete value of cr8.
 
triton::uint8 cr9 [triton::size::dword]
 Concrete value of cr9.
 
triton::uint8 cr10 [triton::size::dword]
 Concrete value of cr10.
 
triton::uint8 cr11 [triton::size::dword]
 Concrete value of cr11.
 
triton::uint8 cr12 [triton::size::dword]
 Concrete value of cr12.
 
triton::uint8 cr13 [triton::size::dword]
 Concrete value of cr13.
 
triton::uint8 cr14 [triton::size::dword]
 Concrete value of cr14.
 
triton::uint8 cr15 [triton::size::dword]
 Concrete value of cr15.
 
triton::uint8 cs [triton::size::dword]
 Concrete value of CS.
 
triton::uint8 ds [triton::size::dword]
 Concrete value of DS.
 
triton::uint8 es [triton::size::dword]
 Concrete value of ES.
 
triton::uint8 fs [triton::size::dword]
 Concrete value of FS.
 
triton::uint8 gs [triton::size::dword]
 Concrete value of GS.
 
triton::uint8 ss [triton::size::dword]
 Concrete value of SS.
 
triton::uint8 dr0 [triton::size::dword]
 Concrete value of dr0.
 
triton::uint8 dr1 [triton::size::dword]
 Condete value of dr1.
 
triton::uint8 dr2 [triton::size::dword]
 Condete value of dr2.
 
triton::uint8 dr3 [triton::size::dword]
 Condete value of dr3.
 
triton::uint8 dr6 [triton::size::dword]
 Condete value of dr6.
 
triton::uint8 dr7 [triton::size::dword]
 Condete value of dr7.
 
triton::uint8 fcw [triton::size::word]
 Concrete value of the x87 FPU Control Word.
 
triton::uint8 fsw [triton::size::word]
 Concrete value of the x87 FPU Status Word.
 
triton::uint8 ftw [triton::size::word]
 Concrete value of the x87 FPU Tag Word.
 
triton::uint8 fop [triton::size::word]
 Concrete value of the x87 FPU Opcode.
 
triton::uint8 fip [triton::size::qword]
 Concrete value of the x87 FPU Instruction Pointer Offset.
 
triton::uint8 fcs [triton::size::word]
 Concrete value of the x87 FPU Instruction Pointer Selector.
 
triton::uint8 fdp [triton::size::qword]
 Concrete value of the x87 FPU Instruction Operand Pointer Offset.
 
triton::uint8 fds [triton::size::word]
 Concrete value of the x87 FPU Instruction Operand Pointer Selector.
 
triton::uint8 efer [triton::size::qword]
 Concrete value of the EFER MSR Register.
 
triton::uint8 mxcsr [triton::size::dword]
 Concrete value of the SSE Register State.
 
triton::uint8 mxcsr_mask [triton::size::dword]
 Concrete value of the SSE Register State Mask.
 
- Protected Attributes inherited from triton::arch::x86::x86Specifications
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 x86 (32-bits) spec.

Definition at line 53 of file x86Cpu.hpp.

Member Function Documentation

◆ setConcreteMemoryAreaValue() [1/2]

void triton::arch::x86::x86Cpu::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 798 of file x86Cpu.cpp.

◆ setConcreteMemoryAreaValue() [2/2]

void triton::arch::x86::x86Cpu::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 806 of file x86Cpu.cpp.

◆ setConcreteMemoryValue() [1/2]

void triton::arch::x86::x86Cpu::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 777 of file x86Cpu.cpp.

◆ setConcreteMemoryValue() [2/2]

void triton::arch::x86::x86Cpu::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 770 of file x86Cpu.cpp.

◆ setConcreteRegisterValue()

void triton::arch::x86::x86Cpu::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 814 of file x86Cpu.cpp.

Member Data Documentation

◆ memory

std::unordered_map<triton::uint64, triton::uint8, IdentityHash<triton::uint64> > triton::arch::x86::x86Cpu::memory
protected

map of address -> concrete value

item1: memory address
item2: concrete value

Definition at line 79 of file x86Cpu.hpp.


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