Pin
Public Member Functions | List of all members
IMULTI_ELEMENT_OPERAND Class Referenceabstract

Public Member Functions

virtual BOOL IsMemory () const =0
 
virtual BOOL IsRegister () const =0
 
virtual USIZE Size () const =0
 
virtual ADDRINT Address () const =0
 
virtual UINT32 NumOfElements () const =0
 
virtual USIZE ElementSize (UINT32 element_index) const =0
 
virtual ADDRINT ElementAddress (UINT32 element_index) const =0
 
virtual UINT32 ElementOffset (UINT32 element_index) const =0
 
virtual UINT32 ElementMaskValue (UINT32 element_index) const =0
 
virtual PIN_OP_ELEMENT_ACCESS ElementAccessType (UINT32 element_index) const =0
 

Detailed Description

An object implementing this interface is passed to analysis routine when IARG_MULTI_ELEMENT_OPERAND is requested. This interface allows inspecting multi element operands (register or memory).

Member Function Documentation

◆ Address()

virtual ADDRINT IMULTI_ELEMENT_OPERAND::Address ( ) const
pure virtual

Return effective address of the full operand.
For memory operands that do not have an effective address(where INS_HasScatteredMemoryAccess returns TRUE) - 0 is returned.
This function should be used only for Memory operands and will result in Pin error if used for Register operands.

◆ ElementAccessType()

virtual PIN_OP_ELEMENT_ACCESS IMULTI_ELEMENT_OPERAND::ElementAccessType ( UINT32  element_index) const
pure virtual

Return element access type (read/write/readwrite)

◆ ElementAddress()

virtual ADDRINT IMULTI_ELEMENT_OPERAND::ElementAddress ( UINT32  element_index) const
pure virtual

Return element effective address

◆ ElementMaskValue()

virtual UINT32 IMULTI_ELEMENT_OPERAND::ElementMaskValue ( UINT32  element_index) const
pure virtual

Return element mask value - 0 or 1.
If the instruction has no active mask - 1 is returned.
If the mask register is a KMASK then 1 is returned if the bit associated with element N in the mask is set.
If the mask register is a vector register then 1 is returned if the high bit of the mask element associated with element N (size of mask element depends on the instruction) is set.

◆ ElementOffset()

virtual UINT32 IMULTI_ELEMENT_OPERAND::ElementOffset ( UINT32  element_index) const
pure virtual

Return element offset in bytes from the beginning of the register to the specified element.
This function should be used only for register operands and will result in Pin error if used for memory operands.
Users may use the returned offset on buffers received IARG_REG_REFERENCE/IARG_REG_CONST_REFERENCE

◆ ElementSize()

virtual USIZE IMULTI_ELEMENT_OPERAND::ElementSize ( UINT32  element_index) const
pure virtual

Return element size in bytes

◆ IsMemory()

virtual BOOL IMULTI_ELEMENT_OPERAND::IsMemory ( ) const
pure virtual

Return whether this is a Memory operand

◆ IsRegister()

virtual BOOL IMULTI_ELEMENT_OPERAND::IsRegister ( ) const
pure virtual

Return whether this is a Register operand

◆ NumOfElements()

virtual UINT32 IMULTI_ELEMENT_OPERAND::NumOfElements ( ) const
pure virtual

Return number of operand elements

◆ Size()

virtual USIZE IMULTI_ELEMENT_OPERAND::Size ( ) const
pure virtual

Return full operand size.
For operands that do not have a size (where INS_HasScatteredMemoryAccess returns TRUE) - 0 is returned.


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