libTriton  version 0.6 build 1375
Public Member Functions | Public Attributes | Protected Attributes | List of all members
triton::arch::Instruction Class Reference

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

#include <instruction.hpp>

Public Member Functions

TRITON_EXPORT Instruction ()
 Constructor.
 
TRITON_EXPORT Instruction (const triton::uint8 *opcode, triton::uint32 opSize)
 Constructor with opcode.
 
TRITON_EXPORT Instruction (const Instruction &other)
 Constructor by copy.
 
TRITON_EXPORT Instructionoperator= (const Instruction &other)
 Copies an Instruction.
 
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::uint32 getPrefix (void) const
 Returns the prefix of the instruction.
 
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 void setOpcode (const triton::uint8 *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 setSize (triton::uint32 size)
 Sets the size of the instruction.
 
TRITON_EXPORT void setType (triton::uint32 type)
 Sets the type of the instruction.
 
TRITON_EXPORT void setPrefix (triton::uint32 prefix)
 Sets the prefix of the instruction.
 
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 const triton::engines::symbolic::SharedSymbolicExpressionaddSymbolicExpression (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.
 
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::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 [32]
 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::uint32 prefix
 The prefix of the instruction. This field is set at the disassembly level.
 
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.
 
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.
 

Detailed Description

This class is used when to represent an instruction.

Definition at line 46 of file instruction.hpp.


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