Predicate abstraction for IA-32 and Intel(R) 64 instructions.
BOOL LEVEL_CORE::INS_AddressSizePrefix | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_BranchNotTakenPrefix | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_BranchTakenPrefix | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_ChangeReg | ( | const INS | ins, | |
const REG | old_reg, | |||
const REG | new_reg, | |||
const BOOL | as_read | |||
) |
Change all occurrences of old_reg to new_reg in the r/w sets of the ins. Return TRUE if at least one occurrence changed.
UINT32 LEVEL_CORE::INS_EffectiveAddressWidth | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_FullRegRContain | ( | const INS | ins, | |
const REG | reg | |||
) |
BOOL LEVEL_CORE::INS_FullRegWContain | ( | const INS | ins, | |
const REG | reg | |||
) |
VOID LEVEL_CORE::INS_GetFarPointer | ( | INS | ins, | |
UINT16 & | segment_selector, | |||
UINT32 & | displacement | |||
) |
BOOL LEVEL_CORE::INS_HasMemoryVector | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_HasRealRep | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_IsDirectFarJump | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_IsFarCall | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_IsFarJump | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_IsFarRet | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_IsHalt | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_IsInterrupt | ( | INS | ins | ) |
Return TRUE if the INS is an interrupt category instruction
BOOL LEVEL_CORE::INS_IsIRet | ( | INS | ins | ) |
Note that IRET instructions also pass the INS_IsRet test, since they are RETs.
BOOL LEVEL_CORE::INS_IsMaskedJump | ( | const INS | ins | ) |
BOOL LEVEL_CORE::INS_IsMaskMov | ( | const INS | ins | ) |
BOOL LEVEL_CORE::INS_IsMov | ( | const INS | ins | ) |
returns true if this instruction is a move.
BOOL LEVEL_CORE::INS_IsMovFullRegRegSame | ( | const INS | ins | ) |
returns true if this instruction is a mov reg1, reg1. And reg1 is a full reg
BOOL LEVEL_CORE::INS_IsPcMaterialization | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_IsRDTSC | ( | const INS | ins | ) |
BOOL LEVEL_CORE::INS_IsStandardMemop | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_IsStringop | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_IsSub | ( | const INS | ins | ) |
returns true if this instruction is a subtract.
BOOL LEVEL_CORE::INS_IsSysenter | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_IsVgather | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_IsVscatter | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_IsXbegin | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_IsXchg | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_IsXend | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_LockPrefix | ( | INS | ins | ) |
REG LEVEL_CORE::INS_MemoryBaseReg | ( | INS | ins | ) |
ADDRDELTA LEVEL_CORE::INS_MemoryDisplacement | ( | INS | ins | ) |
REG LEVEL_CORE::INS_MemoryIndexReg | ( | INS | ins | ) |
UINT32 LEVEL_CORE::INS_MemoryOperandIndexToOperandIndex | ( | INS | ins, | |
UINT32 | memopIdx | |||
) |
Convert a memory operand index into a simple operand index.
[in] | ins | The instruction. |
[in] | memopIdx | Memory operand's index in the range [0, n-1], where n is from INS_MemoryOperandCount(). |
UINT32 LEVEL_CORE::INS_MemoryScale | ( | INS | ins | ) |
UINT32 LEVEL_CORE::INS_OperandCount | ( | INS | ins | ) |
Tells the number of operands for the instruction. Several other APIs take an operand index as a parameter. Those APIs expect an index in the range [0, n-1], where n is the value returned by INS_OperandCount().
[in] | ins | The instruction. |
UINT64 LEVEL_CORE::INS_OperandImmediate | ( | INS | ins, | |
UINT32 | n | |||
) |
Although return type is UINT64, on 32-bit systems only the lower 32 bits are utilized. To see how to retrieve immediate values with correct width and sign information, see example in test tool PinTools/SimpleExamples/oper-imm.cpp.
BOOL LEVEL_CORE::INS_OperandIsBranchDisplacement | ( | INS | ins, | |
UINT32 | n | |||
) |
BOOL LEVEL_CORE::INS_OperandIsFixedMemop | ( | INS | ins, | |
UINT32 | n | |||
) |
BOOL LEVEL_CORE::INS_OperandIsImmediate | ( | INS | ins, | |
UINT32 | n | |||
) |
BOOL LEVEL_CORE::INS_OperandIsImplicit | ( | INS | ins, | |
UINT32 | n | |||
) |
BOOL LEVEL_CORE::INS_OperandIsMemory | ( | INS | ins, | |
UINT32 | n | |||
) |
BOOL LEVEL_CORE::INS_OperandIsReg | ( | INS | ins, | |
UINT32 | n | |||
) |
REG LEVEL_CORE::INS_OperandMemoryBaseReg | ( | INS | ins, | |
UINT32 | n | |||
) |
ADDRDELTA LEVEL_CORE::INS_OperandMemoryDisplacement | ( | INS | ins, | |
UINT32 | n | |||
) |
REG LEVEL_CORE::INS_OperandMemoryIndexReg | ( | INS | ins, | |
UINT32 | n | |||
) |
UINT32 LEVEL_CORE::INS_OperandMemoryScale | ( | INS | ins, | |
UINT32 | n | |||
) |
REG LEVEL_CORE::INS_OperandMemorySegmentReg | ( | INS | ins, | |
UINT32 | n | |||
) |
BOOL LEVEL_CORE::INS_OperandRead | ( | INS | ins, | |
UINT32 | n | |||
) |
Tells if an instruction operand is a source; it may also be a destination.
[in] | ins | The instruction. |
[in] | n | Operand's index in the range [0, n-1], where n is from INS_OperandCount(). |
BOOL LEVEL_CORE::INS_OperandReadAndWritten | ( | INS | ins, | |
UINT32 | n | |||
) |
Tells if an instruction operand is both a source and a destination.
[in] | ins | The instruction. |
[in] | n | Operand's index in the range [0, n-1], where n is from INS_OperandCount(). |
BOOL LEVEL_CORE::INS_OperandReadOnly | ( | INS | ins, | |
UINT32 | n | |||
) |
Tells if an instruction operand is just a source (and not a destination).
[in] | ins | The instruction. |
[in] | n | Operand's index in the range [0, n-1], where n is from INS_OperandCount(). |
REG LEVEL_CORE::INS_OperandReg | ( | INS | ins, | |
UINT32 | n | |||
) |
BOOL LEVEL_CORE::INS_OperandSizePrefix | ( | INS | ins | ) |
UINT32 LEVEL_CORE::INS_OperandWidth | ( | INS | ins, | |
UINT32 | n | |||
) |
BOOL LEVEL_CORE::INS_OperandWritten | ( | INS | ins, | |
UINT32 | n | |||
) |
Tells if an instruction operand is a destination; it may also be a source.
[in] | ins | The instruction. |
[in] | n | Operand's index in the range [0, n-1], where n is from INS_OperandCount(). |
BOOL LEVEL_CORE::INS_OperandWrittenOnly | ( | INS | ins, | |
UINT32 | n | |||
) |
Tells if an instruction operand is just a destination (and not a source).
[in] | ins | The instruction. |
[in] | n | Operand's index in the range [0, n-1], where n is from INS_OperandCount(). |
REG LEVEL_CORE::INS_RepCountRegister | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_RepnePrefix | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_RepPrefix | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_SegmentPrefix | ( | INS | ins | ) |
REG LEVEL_CORE::INS_SegmentRegPrefix | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_SegPrefixIsMemoryRead | ( | INS | ins | ) |
BOOL LEVEL_CORE::INS_SegPrefixIsMemoryWrite | ( | INS | ins | ) |
VOID LEVEL_CORE::PIN_SetSyntaxATT | ( | ) |
Sets the disassembly syntax to ATT SYSV format. (Destination on the right)
VOID LEVEL_CORE::PIN_SetSyntaxIntel | ( | ) |
Sets the disassembly syntax to Intel format. (Destination on the left)
VOID LEVEL_CORE::PIN_SetSyntaxXED | ( | ) |
Sets the disassembly syntax to XED detailed format which lists all resources read and written.