libTriton version 1.0 build 1590
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Protected Attributes | List of all members
triton::arch::Instruction Class Reference

This class is used to represent an instruction. More...

#include <instruction.hpp>

Public Member Functions

TRITON_EXPORT Instruction ()
 Constructor.
 
TRITON_EXPORT Instruction (const void *opcode, triton::uint32 opSize)
 Constructor with opcode.
 
TRITON_EXPORT Instruction (triton::uint64 addr, const void *opcode, triton::uint32 opSize)
 Constructor with opcode and address.
 
TRITON_EXPORT Instruction (const Instruction &other)
 Constructor by copy.
 
TRITON_EXPORT Instructionoperator= (const Instruction &other)
 Copies an Instruction.
 
TRITON_EXPORT ~Instruction ()
 Destructor.
 
TRITON_EXPORT triton::arch::architecture_e getArchitecture (void) const
 Returns the instruction's architecture.
 
TRITON_EXPORT triton::uint32 getThreadId (void) const
 Returns the thread id of the instruction.
 
TRITON_EXPORT void setThreadId (triton::uint32 tid)
 Sets the thread id of the instruction.
 
TRITON_EXPORT triton::uint64 getAddress (void) const
 Returns the address of the instruction.
 
TRITON_EXPORT triton::uint64 getNextAddress (void) const
 Returns the next address of the instruction.
 
TRITON_EXPORT void setAddress (triton::uint64 addr)
 Sets the address of the instruction.
 
TRITON_EXPORT std::string getDisassembly (void) const
 Returns the disassembly of the instruction.
 
TRITON_EXPORT const triton::uint8getOpcode (void) const
 Returns the opcode of the instruction.
 
TRITON_EXPORT triton::uint32 getType (void) const
 Returns the type of the instruction.
 
TRITON_EXPORT triton::arch::x86::prefix_e getPrefix (void) const
 Returns the prefix of the instruction (mainly for X86).
 
TRITON_EXPORT triton::arch::arm::condition_e getCodeCondition (void) const
 Returns the code codition of the instruction (mainly for AArch64).
 
TRITON_EXPORT std::set< std::pair< triton::arch::MemoryAccess, triton::ast::SharedAbstractNode > > & getLoadAccess (void)
 Returns the list of all implicit and explicit load access.
 
TRITON_EXPORT std::set< std::pair< triton::arch::MemoryAccess, triton::ast::SharedAbstractNode > > & getStoreAccess (void)
 Returns the list of all implicit and explicit store access.
 
TRITON_EXPORT std::set< std::pair< triton::arch::Register, triton::ast::SharedAbstractNode > > & getReadRegisters (void)
 Returns the list of all implicit and explicit register (flags includes) inputs (read)
 
TRITON_EXPORT std::set< std::pair< triton::arch::Register, triton::ast::SharedAbstractNode > > & getWrittenRegisters (void)
 Returns the list of all implicit and explicit register (flags includes) outputs (write)
 
TRITON_EXPORT std::set< std::pair< triton::arch::Immediate, triton::ast::SharedAbstractNode > > & getReadImmediates (void)
 Returns the list of all implicit and explicit immediate inputs (read)
 
TRITON_EXPORT std::set< triton::arch::Register > & getUndefinedRegisters (void)
 Returns the list of all implicit and explicit undefined registers.
 
TRITON_EXPORT void setOpcode (const void *opcode, triton::uint32 size)
 Sets the opcode of the instruction.
 
TRITON_EXPORT triton::uint32 getSize (void) const
 Returns the size of the instruction.
 
TRITON_EXPORT void setLoadAccess (const triton::arch::MemoryAccess &mem, const triton::ast::SharedAbstractNode &node)
 Sets a load access.
 
TRITON_EXPORT void removeLoadAccess (const triton::arch::MemoryAccess &mem)
 Removes a load access.
 
TRITON_EXPORT void setStoreAccess (const triton::arch::MemoryAccess &mem, const triton::ast::SharedAbstractNode &node)
 Sets a store access.
 
TRITON_EXPORT void removeStoreAccess (const triton::arch::MemoryAccess &mem)
 Removes a store access.
 
TRITON_EXPORT void setReadRegister (const triton::arch::Register &reg, const triton::ast::SharedAbstractNode &node)
 Sets a read register.
 
TRITON_EXPORT void removeReadRegister (const triton::arch::Register &reg)
 Removes a read register.
 
TRITON_EXPORT void setWrittenRegister (const triton::arch::Register &reg, const triton::ast::SharedAbstractNode &node)
 Sets a written register.
 
TRITON_EXPORT void removeWrittenRegister (const triton::arch::Register &reg)
 Removes a written register.
 
TRITON_EXPORT void setReadImmediate (const triton::arch::Immediate &imm, const triton::ast::SharedAbstractNode &node)
 Sets a read immediate.
 
TRITON_EXPORT void removeReadImmediate (const triton::arch::Immediate &imm)
 Removes a read immediate.
 
TRITON_EXPORT void setUndefinedRegister (const triton::arch::Register &reg)
 Sets an undefined register.
 
TRITON_EXPORT void removeUndefinedRegister (const triton::arch::Register &reg)
 Removes an undefined register.
 
TRITON_EXPORT void setSize (triton::uint32 size)
 Sets the size of the instruction.
 
TRITON_EXPORT void setArchitecture (triton::arch::architecture_e arch)
 Sets the instruction's architecture.
 
TRITON_EXPORT void setType (triton::uint32 type)
 Sets the type of the instruction.
 
TRITON_EXPORT void setPrefix (triton::arch::x86::prefix_e prefix)
 Sets the prefix of the instruction (mainly for X86).
 
TRITON_EXPORT void setCodeCondition (triton::arch::arm::condition_e codeCondition)
 Sets the code condition of the instruction (mainly for AArch64).
 
TRITON_EXPORT void setDisassembly (const std::string &str)
 Sets the disassembly of the instruction.
 
TRITON_EXPORT void setTaint (bool state)
 Sets the taint of the instruction.
 
TRITON_EXPORT void setTaint (void)
 Sets the taint of the instruction based on its expressions.
 
TRITON_EXPORT void setWriteBack (bool state)
 Sets the writeBack flag of the instruction.
 
TRITON_EXPORT void setUpdateFlag (bool state)
 Sets the updateFlag of the instruction.
 
TRITON_EXPORT void setThumb (bool state)
 Sets the Thumb mode of the instruction.
 
TRITON_EXPORT void addSymbolicExpression (const triton::engines::symbolic::SharedSymbolicExpression &expr)
 Adds a symbolic expression.
 
TRITON_EXPORT bool isBranch (void) const
 Returns true if this instruction is a branch.
 
TRITON_EXPORT bool isControlFlow (void) const
 Returns true if this instruction changes the control flow (e.g x86: JMP, JCC, CALL, RET, ...)
 
TRITON_EXPORT bool isConditionTaken (void) const
 Returns true if the condition is taken (e.g x86: jcc, cmovcc, setcc, ...).
 
TRITON_EXPORT bool isTainted (void) const
 Returns true if at least one of its expressions is tainted.
 
TRITON_EXPORT bool isSymbolized (void) const
 Returns true if at least one of its expressions contains a symbolic variable.
 
TRITON_EXPORT bool isMemoryRead (void) const
 Returns true if the instruction contains an expression which reads the memory.
 
TRITON_EXPORT bool isMemoryWrite (void) const
 Returns true if the instruction contains an expression which writes into the memory.
 
TRITON_EXPORT bool isWriteTo (const triton::arch::OperandWrapper &target) const
 Returns whether the instruction writes the specified operand.
 
TRITON_EXPORT bool isReadFrom (const triton::arch::OperandWrapper &target) const
 Returns whether the instruction reads the specified operand.
 
TRITON_EXPORT bool isPrefixed (void) const
 Returns true if the instruction has a prefix (mainly for X86).
 
TRITON_EXPORT bool isWriteBack (void) const
 Returns true if the instruction performs a write back. Mainly used for AArch64 instructions like LDR.
 
TRITON_EXPORT bool isUpdateFlag (void) const
 Returns true if the instruction updates flags. Mainly used for AArch64 instructions like ADDS.
 
TRITON_EXPORT bool isThumb (void) const
 Returns true if it is a Thumb instruction.
 
TRITON_EXPORT void setBranch (bool flag)
 Sets flag to define this instruction as branch or not.
 
TRITON_EXPORT void setControlFlow (bool flag)
 Sets flag to define this instruction changes the control flow or not.
 
TRITON_EXPORT void setConditionTaken (bool flag)
 Sets flag to define if the condition is taken or not.
 
TRITON_EXPORT void clear (void)
 Clears all instruction information.
 

Public Attributes

std::vector< triton::arch::OperandWrapperoperands
 A list of operands.
 
std::vector< triton::engines::symbolic::SharedSymbolicExpressionsymbolicExpressions
 The semantics set of the instruction.
 

Protected Attributes

triton::arch::architecture_e arch
 The instruction's architecture.
 
triton::uint32 tid
 The thread id of the instruction.
 
triton::uint64 address
 The address of the instruction.
 
std::stringstream disassembly
 The disassembly of the instruction. This field is set at the disassembly level.
 
triton::uint8 opcode [16]
 The opcode of the instruction.
 
triton::uint32 size
 The size of the instruction.
 
triton::uint32 type
 The type of the instruction. This field is set at the disassembly level.
 
triton::arch::x86::prefix_e prefix
 The prefix of the instruction. This field is set at the disassembly level. Mainly used for X86.
 
triton::arch::arm::condition_e codeCondition
 The code condition of the instruction. This field is set at the disassembly level. Mainly used for AArch64.
 
std::set< std::pair< triton::arch::MemoryAccess, triton::ast::SharedAbstractNode > > loadAccess
 Implicit and explicit load access (read). This field is set at the semantics level.
 
std::set< std::pair< triton::arch::MemoryAccess, triton::ast::SharedAbstractNode > > storeAccess
 Implicit and explicit store access (write). This field is set at the semantics level.
 
std::set< std::pair< triton::arch::Register, triton::ast::SharedAbstractNode > > readRegisters
 Implicit and explicit register inputs (read). This field is set at the semantics level.
 
std::set< std::pair< triton::arch::Register, triton::ast::SharedAbstractNode > > writtenRegisters
 Implicit and explicit register outputs (write). This field is set at the semantics level.
 
std::set< std::pair< triton::arch::Immediate, triton::ast::SharedAbstractNode > > readImmediates
 Implicit and explicit immediate inputs (read). This field is set at the semantics level.
 
std::set< triton::arch::RegisterundefinedRegisters
 Implicit and explicit undefined registers. This field is set at the semantics level.
 
bool branch
 True if this instruction is a branch. This field is set at the disassembly level.
 
bool controlFlow
 True if this instruction changes the control flow. This field is set at the disassembly level.
 
bool conditionTaken
 True if the condition is taken (i.g x86: jcc, cmocc, setcc, ...). This field is set at the semantics level.
 
bool tainted
 True if this instruction is tainted. This field is set at the semantics level.
 
bool writeBack
 True if this instruction performs a write back. Mainly used for AArch64 instruction like LDR.
 
bool updateFlag
 True if this instruction updartes flags. Mainly used for AArch64 instruction like ADDS.
 
bool thumb
 True if this is a Thumb instruction. (Note that isThumb() in Arm32Cpu is used to determine the current execution mode, while in Instruction it indicates whether the instruction itself is a Thumb instruction.)
 

Detailed Description

This class is used to represent an instruction.

Definition at line 48 of file instruction.hpp.

Constructor & Destructor Documentation

◆ Instruction() [1/4]

triton::arch::Instruction::Instruction ( )

Constructor.

Definition at line 20 of file instruction.cpp.

◆ Instruction() [2/4]

triton::arch::Instruction::Instruction ( const void *  opcode,
triton::uint32  opSize 
)

Constructor with opcode.

Definition at line 40 of file instruction.cpp.

◆ Instruction() [3/4]

triton::arch::Instruction::Instruction ( triton::uint64  addr,
const void *  opcode,
triton::uint32  opSize 
)

Constructor with opcode and address.

Definition at line 46 of file instruction.cpp.

◆ Instruction() [4/4]

triton::arch::Instruction::Instruction ( const Instruction other)

Constructor by copy.

Definition at line 52 of file instruction.cpp.

◆ ~Instruction()

triton::arch::Instruction::~Instruction ( )

Destructor.

Definition at line 57 of file instruction.cpp.

Member Function Documentation

◆ addSymbolicExpression()

void triton::arch::Instruction::addSymbolicExpression ( const triton::engines::symbolic::SharedSymbolicExpression expr)

Adds a symbolic expression.

Definition at line 358 of file instruction.cpp.

◆ clear()

void triton::arch::Instruction::clear ( void  )

Clears all instruction information.

Definition at line 519 of file instruction.cpp.

◆ getAddress()

triton::uint64 triton::arch::Instruction::getAddress ( void  ) const

Returns the address of the instruction.

Definition at line 114 of file instruction.cpp.

◆ getArchitecture()

triton::arch::architecture_e triton::arch::Instruction::getArchitecture ( void  ) const

Returns the instruction's architecture.

Definition at line 157 of file instruction.cpp.

◆ getCodeCondition()

triton::arch::arm::condition_e triton::arch::Instruction::getCodeCondition ( void  ) const

Returns the code codition of the instruction (mainly for AArch64).

Definition at line 167 of file instruction.cpp.

◆ getDisassembly()

std::string triton::arch::Instruction::getDisassembly ( void  ) const

Returns the disassembly of the instruction.

Definition at line 129 of file instruction.cpp.

◆ getLoadAccess()

std::set< std::pair< triton::arch::MemoryAccess, triton::ast::SharedAbstractNode > > & triton::arch::Instruction::getLoadAccess ( void  )

Returns the list of all implicit and explicit load access.

Definition at line 172 of file instruction.cpp.

◆ getNextAddress()

triton::uint64 triton::arch::Instruction::getNextAddress ( void  ) const

Returns the next address of the instruction.

Definition at line 119 of file instruction.cpp.

◆ getOpcode()

const triton::uint8 * triton::arch::Instruction::getOpcode ( void  ) const

Returns the opcode of the instruction.

Definition at line 134 of file instruction.cpp.

◆ getPrefix()

triton::arch::x86::prefix_e triton::arch::Instruction::getPrefix ( void  ) const

Returns the prefix of the instruction (mainly for X86).

Definition at line 162 of file instruction.cpp.

◆ getReadImmediates()

std::set< std::pair< triton::arch::Immediate, triton::ast::SharedAbstractNode > > & triton::arch::Instruction::getReadImmediates ( void  )

Returns the list of all implicit and explicit immediate inputs (read)

Definition at line 192 of file instruction.cpp.

◆ getReadRegisters()

std::set< std::pair< triton::arch::Register, triton::ast::SharedAbstractNode > > & triton::arch::Instruction::getReadRegisters ( void  )

Returns the list of all implicit and explicit register (flags includes) inputs (read)

Definition at line 182 of file instruction.cpp.

◆ getSize()

triton::uint32 triton::arch::Instruction::getSize ( void  ) const

Returns the size of the instruction.

Definition at line 147 of file instruction.cpp.

◆ getStoreAccess()

std::set< std::pair< triton::arch::MemoryAccess, triton::ast::SharedAbstractNode > > & triton::arch::Instruction::getStoreAccess ( void  )

Returns the list of all implicit and explicit store access.

Definition at line 177 of file instruction.cpp.

◆ getThreadId()

triton::uint32 triton::arch::Instruction::getThreadId ( void  ) const

Returns the thread id of the instruction.

Definition at line 104 of file instruction.cpp.

◆ getType()

triton::uint32 triton::arch::Instruction::getType ( void  ) const

Returns the type of the instruction.

Definition at line 152 of file instruction.cpp.

◆ getUndefinedRegisters()

std::set< triton::arch::Register > & triton::arch::Instruction::getUndefinedRegisters ( void  )

Returns the list of all implicit and explicit undefined registers.

Definition at line 197 of file instruction.cpp.

◆ getWrittenRegisters()

std::set< std::pair< triton::arch::Register, triton::ast::SharedAbstractNode > > & triton::arch::Instruction::getWrittenRegisters ( void  )

Returns the list of all implicit and explicit register (flags includes) outputs (write)

Definition at line 187 of file instruction.cpp.

◆ isBranch()

bool triton::arch::Instruction::isBranch ( void  ) const

Returns true if this instruction is a branch.

Definition at line 367 of file instruction.cpp.

◆ isConditionTaken()

bool triton::arch::Instruction::isConditionTaken ( void  ) const

Returns true if the condition is taken (e.g x86: jcc, cmovcc, setcc, ...).

Definition at line 377 of file instruction.cpp.

◆ isControlFlow()

bool triton::arch::Instruction::isControlFlow ( void  ) const

Returns true if this instruction changes the control flow (e.g x86: JMP, JCC, CALL, RET, ...)

Definition at line 372 of file instruction.cpp.

◆ isMemoryRead()

bool triton::arch::Instruction::isMemoryRead ( void  ) const

Returns true if the instruction contains an expression which reads the memory.

Definition at line 396 of file instruction.cpp.

◆ isMemoryWrite()

bool triton::arch::Instruction::isMemoryWrite ( void  ) const

Returns true if the instruction contains an expression which writes into the memory.

Definition at line 403 of file instruction.cpp.

◆ isPrefixed()

bool triton::arch::Instruction::isPrefixed ( void  ) const

Returns true if the instruction has a prefix (mainly for X86).

Definition at line 482 of file instruction.cpp.

◆ isReadFrom()

bool triton::arch::Instruction::isReadFrom ( const triton::arch::OperandWrapper target) const

Returns whether the instruction reads the specified operand.

Definition at line 410 of file instruction.cpp.

◆ isSymbolized()

bool triton::arch::Instruction::isSymbolized ( void  ) const

Returns true if at least one of its expressions contains a symbolic variable.

Definition at line 387 of file instruction.cpp.

◆ isTainted()

bool triton::arch::Instruction::isTainted ( void  ) const

Returns true if at least one of its expressions is tainted.

Definition at line 382 of file instruction.cpp.

◆ isThumb()

bool triton::arch::Instruction::isThumb ( void  ) const

Returns true if it is a Thumb instruction.

Definition at line 499 of file instruction.cpp.

◆ isUpdateFlag()

bool triton::arch::Instruction::isUpdateFlag ( void  ) const

Returns true if the instruction updates flags. Mainly used for AArch64 instructions like ADDS.

Definition at line 494 of file instruction.cpp.

◆ isWriteBack()

bool triton::arch::Instruction::isWriteBack ( void  ) const

Returns true if the instruction performs a write back. Mainly used for AArch64 instructions like LDR.

Definition at line 489 of file instruction.cpp.

◆ isWriteTo()

bool triton::arch::Instruction::isWriteTo ( const triton::arch::OperandWrapper target) const

Returns whether the instruction writes the specified operand.

Definition at line 448 of file instruction.cpp.

◆ operator=()

Instruction & triton::arch::Instruction::operator= ( const Instruction other)

Copies an Instruction.

Definition at line 68 of file instruction.cpp.

◆ removeLoadAccess()

void triton::arch::Instruction::removeLoadAccess ( const triton::arch::MemoryAccess mem)

Removes a load access.

Definition at line 207 of file instruction.cpp.

◆ removeReadImmediate()

void triton::arch::Instruction::removeReadImmediate ( const triton::arch::Immediate imm)

Removes a read immediate.

Definition at line 275 of file instruction.cpp.

◆ removeReadRegister()

void triton::arch::Instruction::removeReadRegister ( const triton::arch::Register reg)

Removes a read register.

Definition at line 241 of file instruction.cpp.

◆ removeStoreAccess()

void triton::arch::Instruction::removeStoreAccess ( const triton::arch::MemoryAccess mem)

Removes a store access.

Definition at line 224 of file instruction.cpp.

◆ removeUndefinedRegister()

void triton::arch::Instruction::removeUndefinedRegister ( const triton::arch::Register reg)

Removes an undefined register.

Definition at line 292 of file instruction.cpp.

◆ removeWrittenRegister()

void triton::arch::Instruction::removeWrittenRegister ( const triton::arch::Register reg)

Removes a written register.

Definition at line 258 of file instruction.cpp.

◆ setAddress()

void triton::arch::Instruction::setAddress ( triton::uint64  addr)

Sets the address of the instruction.

Definition at line 124 of file instruction.cpp.

◆ setArchitecture()

void triton::arch::Instruction::setArchitecture ( triton::arch::architecture_e  arch)

Sets the instruction's architecture.

Definition at line 297 of file instruction.cpp.

◆ setBranch()

void triton::arch::Instruction::setBranch ( bool  flag)

Sets flag to define this instruction as branch or not.

Definition at line 504 of file instruction.cpp.

◆ setCodeCondition()

void triton::arch::Instruction::setCodeCondition ( triton::arch::arm::condition_e  codeCondition)

Sets the code condition of the instruction (mainly for AArch64).

Definition at line 327 of file instruction.cpp.

◆ setConditionTaken()

void triton::arch::Instruction::setConditionTaken ( bool  flag)

Sets flag to define if the condition is taken or not.

Definition at line 514 of file instruction.cpp.

◆ setControlFlow()

void triton::arch::Instruction::setControlFlow ( bool  flag)

Sets flag to define this instruction changes the control flow or not.

Definition at line 509 of file instruction.cpp.

◆ setDisassembly()

void triton::arch::Instruction::setDisassembly ( const std::string &  str)

Sets the disassembly of the instruction.

Definition at line 337 of file instruction.cpp.

◆ setLoadAccess()

void triton::arch::Instruction::setLoadAccess ( const triton::arch::MemoryAccess mem,
const triton::ast::SharedAbstractNode node 
)

Sets a load access.

Definition at line 202 of file instruction.cpp.

◆ setOpcode()

void triton::arch::Instruction::setOpcode ( const void *  opcode,
triton::uint32  size 
)

Sets the opcode of the instruction.

Definition at line 139 of file instruction.cpp.

◆ setPrefix()

void triton::arch::Instruction::setPrefix ( triton::arch::x86::prefix_e  prefix)

Sets the prefix of the instruction (mainly for X86).

Definition at line 312 of file instruction.cpp.

◆ setReadImmediate()

void triton::arch::Instruction::setReadImmediate ( const triton::arch::Immediate imm,
const triton::ast::SharedAbstractNode node 
)

Sets a read immediate.

Definition at line 270 of file instruction.cpp.

◆ setReadRegister()

void triton::arch::Instruction::setReadRegister ( const triton::arch::Register reg,
const triton::ast::SharedAbstractNode node 
)

Sets a read register.

Definition at line 236 of file instruction.cpp.

◆ setSize()

void triton::arch::Instruction::setSize ( triton::uint32  size)

Sets the size of the instruction.

Definition at line 302 of file instruction.cpp.

◆ setStoreAccess()

void triton::arch::Instruction::setStoreAccess ( const triton::arch::MemoryAccess mem,
const triton::ast::SharedAbstractNode node 
)

Sets a store access.

Definition at line 219 of file instruction.cpp.

◆ setTaint() [1/2]

void triton::arch::Instruction::setTaint ( bool  state)

Sets the taint of the instruction.

Definition at line 343 of file instruction.cpp.

◆ setTaint() [2/2]

void triton::arch::Instruction::setTaint ( void  )

Sets the taint of the instruction based on its expressions.

Definition at line 348 of file instruction.cpp.

◆ setThreadId()

void triton::arch::Instruction::setThreadId ( triton::uint32  tid)

Sets the thread id of the instruction.

Definition at line 109 of file instruction.cpp.

◆ setThumb()

void triton::arch::Instruction::setThumb ( bool  state)

Sets the Thumb mode of the instruction.

Definition at line 332 of file instruction.cpp.

◆ setType()

void triton::arch::Instruction::setType ( triton::uint32  type)

Sets the type of the instruction.

Definition at line 307 of file instruction.cpp.

◆ setUndefinedRegister()

void triton::arch::Instruction::setUndefinedRegister ( const triton::arch::Register reg)

Sets an undefined register.

Definition at line 287 of file instruction.cpp.

◆ setUpdateFlag()

void triton::arch::Instruction::setUpdateFlag ( bool  state)

Sets the updateFlag of the instruction.

Definition at line 322 of file instruction.cpp.

◆ setWriteBack()

void triton::arch::Instruction::setWriteBack ( bool  state)

Sets the writeBack flag of the instruction.

Definition at line 317 of file instruction.cpp.

◆ setWrittenRegister()

void triton::arch::Instruction::setWrittenRegister ( const triton::arch::Register reg,
const triton::ast::SharedAbstractNode node 
)

Sets a written register.

Definition at line 253 of file instruction.cpp.

Member Data Documentation

◆ address

triton::uint64 triton::arch::Instruction::address
protected

The address of the instruction.

Definition at line 57 of file instruction.hpp.

◆ arch

triton::arch::architecture_e triton::arch::Instruction::arch
protected

The instruction's architecture.

Definition at line 51 of file instruction.hpp.

◆ branch

bool triton::arch::Instruction::branch
protected

True if this instruction is a branch. This field is set at the disassembly level.

Definition at line 96 of file instruction.hpp.

◆ codeCondition

triton::arch::arm::condition_e triton::arch::Instruction::codeCondition
protected

The code condition of the instruction. This field is set at the disassembly level. Mainly used for AArch64.

Definition at line 75 of file instruction.hpp.

◆ conditionTaken

bool triton::arch::Instruction::conditionTaken
protected

True if the condition is taken (i.g x86: jcc, cmocc, setcc, ...). This field is set at the semantics level.

Definition at line 102 of file instruction.hpp.

◆ controlFlow

bool triton::arch::Instruction::controlFlow
protected

True if this instruction changes the control flow. This field is set at the disassembly level.

Definition at line 99 of file instruction.hpp.

◆ disassembly

std::stringstream triton::arch::Instruction::disassembly
protected

The disassembly of the instruction. This field is set at the disassembly level.

Definition at line 60 of file instruction.hpp.

◆ loadAccess

std::set<std::pair<triton::arch::MemoryAccess, triton::ast::SharedAbstractNode> > triton::arch::Instruction::loadAccess
protected

Implicit and explicit load access (read). This field is set at the semantics level.

Definition at line 78 of file instruction.hpp.

◆ opcode

triton::uint8 triton::arch::Instruction::opcode[16]
protected

The opcode of the instruction.

Definition at line 63 of file instruction.hpp.

◆ operands

std::vector<triton::arch::OperandWrapper> triton::arch::Instruction::operands

A list of operands.

Definition at line 122 of file instruction.hpp.

◆ prefix

triton::arch::x86::prefix_e triton::arch::Instruction::prefix
protected

The prefix of the instruction. This field is set at the disassembly level. Mainly used for X86.

Definition at line 72 of file instruction.hpp.

◆ readImmediates

std::set<std::pair<triton::arch::Immediate, triton::ast::SharedAbstractNode> > triton::arch::Instruction::readImmediates
protected

Implicit and explicit immediate inputs (read). This field is set at the semantics level.

Definition at line 90 of file instruction.hpp.

◆ readRegisters

std::set<std::pair<triton::arch::Register, triton::ast::SharedAbstractNode> > triton::arch::Instruction::readRegisters
protected

Implicit and explicit register inputs (read). This field is set at the semantics level.

Definition at line 84 of file instruction.hpp.

◆ size

triton::uint32 triton::arch::Instruction::size
protected

The size of the instruction.

Definition at line 66 of file instruction.hpp.

◆ storeAccess

std::set<std::pair<triton::arch::MemoryAccess, triton::ast::SharedAbstractNode> > triton::arch::Instruction::storeAccess
protected

Implicit and explicit store access (write). This field is set at the semantics level.

Definition at line 81 of file instruction.hpp.

◆ symbolicExpressions

std::vector<triton::engines::symbolic::SharedSymbolicExpression> triton::arch::Instruction::symbolicExpressions

The semantics set of the instruction.

Definition at line 125 of file instruction.hpp.

◆ tainted

bool triton::arch::Instruction::tainted
protected

True if this instruction is tainted. This field is set at the semantics level.

Definition at line 105 of file instruction.hpp.

◆ thumb

bool triton::arch::Instruction::thumb
protected

True if this is a Thumb instruction. (Note that isThumb() in Arm32Cpu is used to determine the current execution mode, while in Instruction it indicates whether the instruction itself is a Thumb instruction.)

Definition at line 114 of file instruction.hpp.

◆ tid

triton::uint32 triton::arch::Instruction::tid
protected

The thread id of the instruction.

Definition at line 54 of file instruction.hpp.

◆ type

triton::uint32 triton::arch::Instruction::type
protected

The type of the instruction. This field is set at the disassembly level.

Definition at line 69 of file instruction.hpp.

◆ undefinedRegisters

std::set<triton::arch::Register> triton::arch::Instruction::undefinedRegisters
protected

Implicit and explicit undefined registers. This field is set at the semantics level.

Definition at line 93 of file instruction.hpp.

◆ updateFlag

bool triton::arch::Instruction::updateFlag
protected

True if this instruction updartes flags. Mainly used for AArch64 instruction like ADDS.

Definition at line 111 of file instruction.hpp.

◆ writeBack

bool triton::arch::Instruction::writeBack
protected

True if this instruction performs a write back. Mainly used for AArch64 instruction like LDR.

Definition at line 108 of file instruction.hpp.

◆ writtenRegisters

std::set<std::pair<triton::arch::Register, triton::ast::SharedAbstractNode> > triton::arch::Instruction::writtenRegisters
protected

Implicit and explicit register outputs (write). This field is set at the semantics level.

Definition at line 87 of file instruction.hpp.


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