Pin
|
Functions | |
BOOL | INS_HasRealRep (INS ins) |
BOOL | INS_IsStandardMemop (INS ins) |
BOOL | INS_IsCacheLineFlush (INS ins) |
INT32 | INS_Category (const INS ins) |
INT32 | INS_Extension (const INS ins) |
UINT32 | INS_EffectiveAddressWidth (INS ins) |
PIN_DEPRECATED_API USIZE | INS_MemoryWriteSize (INS ins) |
PIN_DEPRECATED_API USIZE | INS_MemoryReadSize (INS ins) |
PREDICATE | INS_GetPredicate (INS ins) |
BOOL | INS_IsMemoryRead (INS ins) |
BOOL | INS_IsMemoryWrite (INS ins) |
BOOL | INS_HasMemoryRead2 (INS ins) |
BOOL | INS_HasFallThrough (INS ins) |
BOOL | INS_IsSysenter (INS ins) |
BOOL | INS_IsXbegin (INS ins) |
BOOL | INS_IsXend (INS ins) |
BOOL | INS_IsLea (INS ins) |
BOOL | INS_IsNop (INS ins) |
std::string | OPCODE_StringShort (UINT32 opcode) |
std::string | INS_Mnemonic (INS ins) |
BOOL | INS_IsBranch (INS ins) |
BOOL | INS_IsDirectBranch (INS ins) |
BOOL | INS_IsDirectCall (INS ins) |
PIN_DEPRECATED_API BOOL | INS_IsDirectBranchOrCall (INS ins) |
BOOL | INS_IsDirectControlFlow (INS ins) |
BOOL | INS_IsHalt (INS ins) |
PIN_DEPRECATED_API BOOL | INS_IsBranchOrCall (INS ins) |
BOOL | INS_Stutters (INS ins) |
BOOL | INS_IsPcMaterialization (INS ins) |
BOOL | INS_IsCall (INS ins) |
BOOL | INS_IsControlFlow (INS ins) |
BOOL | INS_IsFarCall (INS ins) |
BOOL | INS_IsFarJump (INS ins) |
BOOL | INS_IsDirectFarJump (INS ins) |
BOOL | INS_IsValidForIpointAfter (INS ins) |
BOOL | INS_IsValidForIpointTakenBranch (INS ins) |
BOOL | INS_IsVgather (INS ins) |
BOOL | INS_IsVscatter (INS ins) |
BOOL | INS_HasMemoryVector (INS ins) |
BOOL | INS_HasScatteredMemoryAccess (INS ins) |
BOOL | INS_IsAmx (INS ins) |
VOID | INS_GetFarPointer (INS ins, UINT16 &segment_selector, UINT32 &displacement) |
BOOL | INS_IsProcedureCall (INS ins) |
BOOL | INS_IsInterrupt (INS ins) |
BOOL | INS_IsRet (INS ins) |
BOOL | INS_IsSysret (INS ins) |
BOOL | INS_IsFarRet (INS ins) |
BOOL | INS_IsPrefetch (INS ins) |
BOOL | INS_IsSub (const INS ins) |
BOOL | INS_IsMov (const INS ins) |
BOOL | INS_IsMovdir64b (const INS ins) |
BOOL | INS_IsMovFullRegRegSame (const INS ins) |
BOOL | INS_IsAtomicUpdate (const INS ins) |
BOOL | INS_IsRDTSC (const INS ins) |
BOOL | INS_IsMaskMov (const INS ins) |
REG | INS_RepCountRegister (INS ins) |
PIN_DEPRECATED_API BOOL | INS_IsIndirectBranchOrCall (INS ins) |
BOOL | INS_IsIndirectControlFlow (INS ins) |
REG | INS_SegmentRegPrefix (INS ins) |
BOOL | INS_HasExplicitMemoryReference (INS ins) |
VOID | PIN_SetSyntaxIntel () |
VOID | PIN_SetSyntaxATT () |
VOID | PIN_SetSyntaxXED () |
REG | INS_RegR (INS x, UINT32 k) |
REG | INS_RegW (INS x, UINT32 k) |
OPCODE | INS_Opcode (INS ins) |
std::string | CATEGORY_StringShort (UINT32 num) |
std::string | EXTENSION_StringShort (UINT32 num) |
BOOL | INS_SegPrefixIsMemoryRead (INS ins) |
BOOL | INS_SegPrefixIsMemoryWrite (INS ins) |
BOOL | INS_AddressSizePrefix (INS ins) |
BOOL | INS_BranchNotTakenPrefix (INS ins) |
BOOL | INS_BranchTakenPrefix (INS ins) |
BOOL | INS_LockPrefix (INS ins) |
BOOL | INS_OperandSizePrefix (INS ins) |
BOOL | INS_RepPrefix (INS ins) |
BOOL | INS_RepnePrefix (INS ins) |
BOOL | INS_SegmentPrefix (INS ins) |
BOOL | INS_IsXchg (INS ins) |
BOOL | INS_IsStringop (INS ins) |
BOOL | INS_IsIRet (INS ins) |
UINT32 | INS_MaxNumRRegs (INS x) |
UINT32 | INS_MaxNumWRegs (INS x) |
BOOL | INS_RegRContain (const INS ins, const REG reg) |
BOOL | INS_RegWContain (const INS ins, const REG reg) |
BOOL | INS_FullRegRContain (const INS ins, const REG reg) |
BOOL | INS_FullRegWContain (const INS ins, const REG reg) |
BOOL | INS_IsStackRead (const INS ins) |
BOOL | INS_IsStackWrite (const INS ins) |
BOOL | INS_IsIpRelRead (const INS ins) |
BOOL | INS_IsIpRelWrite (const INS ins) |
BOOL | INS_IsPredicated (INS ins) |
BOOL | INS_IsOriginal (INS ins) |
std::string | INS_Disassemble (INS ins) |
ADDRDELTA | INS_MemoryDisplacement (INS ins) |
REG | INS_MemoryBaseReg (INS ins) |
REG | INS_MemoryIndexReg (INS ins) |
UINT32 | INS_MemoryScale (INS ins) |
BOOL | INS_ChangeReg (const INS ins, const REG old_reg, const REG new_reg, const BOOL as_read) |
xed_decoded_inst_t * | INS_XedDec (INS ins) |
REG | INS_XedExactMapToPinReg (xed_reg_enum_t xed_reg) |
PIN_DEPRECATED_API REG | INS_XedExactMapToPinReg (unsigned int r) |
xed_reg_enum_t | INS_XedExactMapFromPinReg (REG pin_reg) |
UINT32 | INS_OperandCount (INS ins) |
UINT32 | INS_OperandElementCount (INS ins, UINT32 opIdx) |
BOOL | INS_OperandHasElements (INS ins, UINT32 opIdx) |
USIZE | INS_OperandElementSize (INS ins, UINT32 opIdx) |
UINT32 | INS_OperandNameId (INS ins, UINT32 n) |
BOOL | INS_OperandIsMemory (INS ins, UINT32 n) |
REG | INS_OperandMemoryBaseReg (INS ins, UINT32 n) |
REG | INS_OperandMemoryIndexReg (INS ins, UINT32 n) |
REG | INS_OperandMemorySegmentReg (INS ins, UINT32 n) |
UINT32 | INS_OperandMemoryScale (INS ins, UINT32 n) |
ADDRDELTA | INS_OperandMemoryDisplacement (INS ins, UINT32 n) |
BOOL | INS_OperandIsFixedMemop (INS ins, UINT32 n) |
VOID | GetNumberAndSizeOfMemAccesses (INS ins, int *numAccesses, int *accessSize, int *indexSize) |
UINT32 | INS_MemoryOperandCount (INS ins) |
UINT32 | INS_MemoryOperandElementCount (INS ins, UINT32 memoryOp) |
USIZE | INS_MemoryOperandSize (INS ins, UINT32 memoryOp) |
USIZE | INS_MemoryOperandElementSize (INS ins, UINT32 memoryOp) |
BOOL | INS_OperandIsAddressGenerator (INS ins, UINT32 n) |
BOOL | INS_OperandIsBranchDisplacement (INS ins, UINT32 n) |
BOOL | INS_MemoryOperandIsRead (INS ins, UINT32 memopIdx) |
BOOL | INS_MemoryOperandIsWritten (INS ins, UINT32 memopIdx) |
UINT32 | INS_MemoryOperandIndexToOperandIndex (INS ins, UINT32 memopIdx) |
BOOL | INS_OperandIsReg (INS ins, UINT32 n) |
BOOL | INS_OperandIsSegmentReg (INS ins, UINT32 n) |
REG | INS_OperandReg (INS ins, UINT32 n) |
BOOL | INS_OperandIsImmediate (INS ins, UINT32 n) |
UINT64 | INS_OperandImmediate (INS ins, UINT32 n) |
BOOL | INS_OperandIsImplicit (INS ins, UINT32 n) |
BOOL | INS_RegIsImplicit (INS ins, REG reg) |
UINT32 | INS_OperandWidth (INS ins, UINT32 n) |
UINT32 | INS_OperandSize (INS ins, UINT32 n) |
BOOL | INS_OperandRead (INS ins, UINT32 n) |
BOOL | INS_OperandWritten (INS ins, UINT32 n) |
BOOL | INS_OperandReadOnly (INS ins, UINT32 n) |
BOOL | INS_OperandWrittenOnly (INS ins, UINT32 n) |
BOOL | INS_OperandReadAndWritten (INS ins, UINT32 n) |
REG | INS_MaskRegister (INS ins) |
BOOL | INS_IsSyscall (INS ins) |
SYSCALL_STANDARD | INS_SyscallStd (INS ins) |
RTN | INS_Rtn (INS x) |
INS | INS_Next (INS x) |
INS | INS_Prev (INS x) |
INS | INS_Invalid () |
BOOL | INS_Valid (INS x) |
ADDRINT | INS_Address (INS ins) |
USIZE | INS_Size (INS ins) |
PIN_DEPRECATED_API ADDRINT | INS_DirectBranchOrCallTargetAddress (INS ins) |
ADDRINT | INS_DirectControlFlowTargetAddress (INS ins) |
ADDRINT | INS_NextAddress (INS ins) |
BOOL | INS_IsAddedForFunctionReplacement (INS ins) |
BOOL | INS_IsValidForIarg (INS ins, IARG_TYPE argType) |
Variables | |
const UINT32 | VSYSCALL_NR = 0xABCDDCBA |
Functions to examine IA-32 and Intel(R) 64 instructions.
enum MEMORY_TYPE |
Memory type of argument
enum PREDICATE |
Predicate abstraction for IA-32 and Intel(R) 64 instructions.
This file contains basic abstractions for IA32
enum SYSCALL_STANDARD |
Calling standard of the system call instruction.
std::string CATEGORY_StringShort | ( | UINT32 | num | ) |
std::string EXTENSION_StringShort | ( | UINT32 | num | ) |
ADDRINT INS_Address | ( | INS | ins | ) |
BOOL INS_AddressSizePrefix | ( | INS | ins | ) |
BOOL INS_BranchNotTakenPrefix | ( | INS | ins | ) |
BOOL INS_BranchTakenPrefix | ( | INS | ins | ) |
INT32 INS_Category | ( | const INS | ins | ) |
The category of an instruction is a higher level semantic description of an instruction than its opcode (INS_Opcode). So, for instance, you can test for a conditional branch by using INS_Category(ins) == XED_CATEGORY_COND_BR, whereas using INS_Opcode(ins) would require that you enumerate all twenty conditional branch opcodes.
The full mapping of opcodes to categories can be found in the idata.txt file in the Intel(R) X86 Encoder Decoder distribution (which is distributed as part of the Pin kit). The category enumeration can be found in the file "xed-category-enum.h".
A category can be converted into a string by using CATEGORY_StringShort.
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.
PIN_DEPRECATED_API ADDRINT INS_DirectBranchOrCallTargetAddress | ( | INS | ins | ) |
ADDRINT INS_DirectControlFlowTargetAddress | ( | INS | ins | ) |
std::string INS_Disassemble | ( | INS | ins | ) |
UINT32 INS_EffectiveAddressWidth | ( | INS | ins | ) |
INT32 INS_Extension | ( | const INS | ins | ) |
BOOL INS_FullRegRContain | ( | const INS | ins, |
const REG | reg | ||
) |
BOOL INS_FullRegWContain | ( | const INS | ins, |
const REG | reg | ||
) |
VOID INS_GetFarPointer | ( | INS | ins, |
UINT16 & | segment_selector, | ||
UINT32 & | displacement | ||
) |
PREDICATE INS_GetPredicate | ( | INS | ins | ) |
CMOVcc and FMOVcc instructions are treated as predicated. Rep string ops are treated as predicated.
BOOL INS_HasExplicitMemoryReference | ( | INS | ins | ) |
Test if this instruction has an explict memory operand. We include the memory operand in lea.
BOOL INS_HasFallThrough | ( | INS | ins | ) |
If INS_HasFallThrough(INS) is TRUE, then the instruction may execute the "natural" next instruction (i.e. the one which starts immediately after this one), if it is FALSE, then the instruction following the one tested will not (normally) be executed next. So HasFallThrough is TRUE for instructions which don't change the control flow (most instructions), or for conditional branches (which might change the control flow, but might not), and FALSE for unconditional branches and calls (where the next instruction to be executed is always explicitly specified).
Note that an unconditional branch or call to the next instruction still doesn't have a fall-through, since a fall through is the implicitly following instruction, and an unconditional branch never uses that.
BOOL INS_HasMemoryRead2 | ( | INS | ins | ) |
BOOL INS_HasMemoryVector | ( | INS | ins | ) |
BOOL INS_HasRealRep | ( | INS | ins | ) |
this file contains functions visible in level_core it uses primitives from level_core_with_ia32_ins but does not leak out any IA32 stuff!
BOOL INS_HasScatteredMemoryAccess | ( | INS | ins | ) |
INS INS_Invalid | ( | ) |
BOOL INS_IsAddedForFunctionReplacement | ( | INS | ins | ) |
Return TRUE if ins is not an original instruction in the application, but is an instruction added by Pin for doing function replacement. Pin allows you to even instrument these non-original instructions in JIT mode.
BOOL INS_IsAmx | ( | INS | ins | ) |
Return TRUE iff the ins is an AMX instruction
BOOL INS_IsAtomicUpdate | ( | const INS | ins | ) |
BOOL INS_IsBranch | ( | INS | ins | ) |
PIN_DEPRECATED_API BOOL INS_IsBranchOrCall | ( | INS | ins | ) |
BOOL INS_IsCacheLineFlush | ( | INS | ins | ) |
BOOL INS_IsCall | ( | INS | ins | ) |
BOOL INS_IsControlFlow | ( | INS | ins | ) |
BOOL INS_IsDirectBranch | ( | INS | ins | ) |
These are supposed to be near relative branches.
PIN_DEPRECATED_API BOOL INS_IsDirectBranchOrCall | ( | INS | ins | ) |
These are supposed to be near relative branches.
BOOL INS_IsDirectCall | ( | INS | ins | ) |
These are supposed to be near relative branches.
BOOL INS_IsDirectControlFlow | ( | INS | ins | ) |
BOOL INS_IsDirectFarJump | ( | INS | ins | ) |
BOOL INS_IsFarCall | ( | INS | ins | ) |
BOOL INS_IsFarJump | ( | INS | ins | ) |
BOOL INS_IsFarRet | ( | INS | ins | ) |
BOOL INS_IsHalt | ( | INS | ins | ) |
PIN_DEPRECATED_API BOOL INS_IsIndirectBranchOrCall | ( | INS | ins | ) |
BOOL INS_IsIndirectControlFlow | ( | INS | ins | ) |
BOOL INS_IsInterrupt | ( | INS | ins | ) |
Return TRUE if the INS is an interrupt category instruction
BOOL INS_IsIpRelRead | ( | const INS | ins | ) |
Is an IP-relative read
BOOL INS_IsIpRelWrite | ( | const INS | ins | ) |
Is an IP-relative write
BOOL INS_IsIRet | ( | INS | ins | ) |
Returns true iff the given ins is an iret instruction.
BOOL INS_IsLea | ( | INS | ins | ) |
BOOL INS_IsMaskMov | ( | const INS | ins | ) |
BOOL INS_IsMemoryRead | ( | INS | ins | ) |
BOOL INS_IsMemoryWrite | ( | INS | ins | ) |
BOOL INS_IsMov | ( | const INS | ins | ) |
returns true if this instruction is a move.
BOOL INS_IsMovdir64b | ( | const INS | ins | ) |
returns true if this instruction is movdir64.
BOOL INS_IsMovFullRegRegSame | ( | const INS | ins | ) |
returns true if this instruction is a mov reg1, reg1. And reg1 is a full reg
BOOL INS_IsNop | ( | INS | ins | ) |
BOOL INS_IsOriginal | ( | INS | ins | ) |
BOOL INS_IsPcMaterialization | ( | INS | ins | ) |
BOOL INS_IsPredicated | ( | INS | ins | ) |
We treat these instructions as predicated conditional move (CMOVcc) floating conditional move (FCMOVcc) rep string ops (since they don't execute if GCX==0)
BOOL INS_IsPrefetch | ( | INS | ins | ) |
BOOL INS_IsProcedureCall | ( | INS | ins | ) |
BOOL INS_IsRDTSC | ( | const INS | ins | ) |
BOOL INS_IsRet | ( | INS | ins | ) |
Returns true if the given ins is a ret instruction.
BOOL INS_IsStackRead | ( | const INS | ins | ) |
Access to the stack simply means that the instruction accesses memory relative to the stack pointer (ESP or RSP), or the frame pointer (EBP or RBP). In code compiled without a frame pointer (where EBP/RBP is used as a general register), this may give a misleading result.
BOOL INS_IsStackWrite | ( | const INS | ins | ) |
Detection of stack accesses is done in the same way as for INS_IsStackRead, so the same caveats apply here too.
BOOL INS_IsStandardMemop | ( | INS | ins | ) |
BOOL INS_IsStringop | ( | INS | ins | ) |
BOOL INS_IsSub | ( | const INS | ins | ) |
returns true if this instruction is a subtract.
BOOL INS_IsSyscall | ( | INS | ins | ) |
Syscall information for Unix/x86 systems
BOOL INS_IsSysenter | ( | INS | ins | ) |
BOOL INS_IsSysret | ( | INS | ins | ) |
BOOL INS_IsValidForIarg | ( | INS | ins, |
IARG_TYPE | argType | ||
) |
This file contains functions that inspect instructions with regard to IARGs.
This function checks whether the IARG can be used with the instruction. Currently the supported IARGs are IARG_MULTI_ELEMENT_OPERAND and IARG_REWRITE_SCATTERED_MEMOP. For all other IARGs the function will return TRUE.
[in] | ins | The instruction to inspect |
[in] | argType | The IARG_TYPE enum to use with the instruction |
@Return true if the specified IARG type can be used in the specified instruction, false otherwise.
BOOL INS_IsValidForIpointAfter | ( | INS | ins | ) |
BOOL INS_IsValidForIpointTakenBranch | ( | INS | ins | ) |
BOOL INS_IsVgather | ( | INS | ins | ) |
BOOL INS_IsVscatter | ( | INS | ins | ) |
BOOL INS_IsXbegin | ( | INS | ins | ) |
BOOL INS_IsXchg | ( | INS | ins | ) |
BOOL INS_IsXend | ( | INS | ins | ) |
BOOL INS_LockPrefix | ( | INS | ins | ) |
REG INS_MaskRegister | ( | INS | ins | ) |
Returns the mask register used in the given instruction if such exist, REG_INVALID otherwise.
[in] | ins | The vector instruction in question. |
UINT32 INS_MaxNumRRegs | ( | INS | x | ) |
ELF specific stuff related to INS
UINT32 INS_MaxNumWRegs | ( | INS | x | ) |
REG INS_MemoryBaseReg | ( | INS | ins | ) |
ADDRDELTA INS_MemoryDisplacement | ( | INS | ins | ) |
REG INS_MemoryIndexReg | ( | INS | ins | ) |
UINT32 INS_MemoryOperandCount | ( | INS | ins | ) |
UINT32 INS_MemoryOperandElementCount | ( | INS | ins, |
UINT32 | memoryOp | ||
) |
USIZE INS_MemoryOperandElementSize | ( | INS | ins, |
UINT32 | memoryOp | ||
) |
[in] | ins | the instruction. |
[in] | memoryOp | the memory operand index whose element size is required. |
UINT32 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(). |
BOOL INS_MemoryOperandIsRead | ( | INS | ins, |
UINT32 | memopIdx | ||
) |
BOOL INS_MemoryOperandIsWritten | ( | INS | ins, |
UINT32 | memopIdx | ||
) |
USIZE INS_MemoryOperandSize | ( | INS | ins, |
UINT32 | memoryOp | ||
) |
[in] | ins | the instruction. |
[in] | memoryOp | the memory operand index whose size is required. |
PIN_DEPRECATED_API USIZE INS_MemoryReadSize | ( | INS | ins | ) |
UINT32 INS_MemoryScale | ( | INS | ins | ) |
PIN_DEPRECATED_API USIZE INS_MemoryWriteSize | ( | INS | ins | ) |
std::string INS_Mnemonic | ( | INS | ins | ) |
Only use this function if you really want a printable version of the instruction's opcode.
If you are trying to test what the opcode of an instruction is, use INS_Opcode and compare it with one of the XED_ICLASS values, or use one of the INS_Is... calls such as INS_IsMov, rather than using this function and comparing a string. Generating and comparing strings is much slower than comparing small integer values!
INS INS_Next | ( | INS | x | ) |
ADDRINT INS_NextAddress | ( | INS | ins | ) |
Get the address of the next instruction.
OPCODE INS_Opcode | ( | INS | ins | ) |
On ia-32 and Intel64 the opcodes are constants of the form XED_ICLASS_name. The full list of valid opcodes can be found in the idata.txt file in the Intel(R) X86 Encoder Decoder distribution (which is distributed as part of the Pin kit), and the enum definitions are in the file "xed-iclass-enum.h".
Use INS_Mnemonic if you want a string.
UINT32 INS_OperandCount | ( | INS | ins | ) |
ia32 specific stuff related to OPERAND
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. |
UINT32 INS_OperandElementCount | ( | INS | ins, |
UINT32 | opIdx | ||
) |
[in] | ins | The instruction. |
[in] | opIdx | The operand index whose element count is required. The operand can be either a memory operand or a register operand. |
USIZE INS_OperandElementSize | ( | INS | ins, |
UINT32 | opIdx | ||
) |
[in] | ins | The instruction. |
[in] | opIdx | The operand index whose element size is required. The operand can be either a memory operand or a register operand. |
BOOL INS_OperandHasElements | ( | INS | ins, |
UINT32 | opIdx | ||
) |
[in] | ins | The instruction. |
[in] | opIdx | The operand index. The operand can be either a memory operand or a register operand. |
UINT64 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 INS_OperandIsAddressGenerator | ( | INS | ins, |
UINT32 | n | ||
) |
BOOL INS_OperandIsBranchDisplacement | ( | INS | ins, |
UINT32 | n | ||
) |
BOOL INS_OperandIsFixedMemop | ( | INS | ins, |
UINT32 | n | ||
) |
BOOL INS_OperandIsImmediate | ( | INS | ins, |
UINT32 | n | ||
) |
BOOL INS_OperandIsImplicit | ( | INS | ins, |
UINT32 | n | ||
) |
BOOL INS_OperandIsMemory | ( | INS | ins, |
UINT32 | n | ||
) |
Note: this does not include LEA operands.
BOOL INS_OperandIsReg | ( | INS | ins, |
UINT32 | n | ||
) |
BOOL INS_OperandIsSegmentReg | ( | INS | ins, |
UINT32 | n | ||
) |
REG INS_OperandMemoryBaseReg | ( | INS | ins, |
UINT32 | n | ||
) |
ADDRDELTA INS_OperandMemoryDisplacement | ( | INS | ins, |
UINT32 | n | ||
) |
REG INS_OperandMemoryIndexReg | ( | INS | ins, |
UINT32 | n | ||
) |
UINT32 INS_OperandMemoryScale | ( | INS | ins, |
UINT32 | n | ||
) |
REG INS_OperandMemorySegmentReg | ( | INS | ins, |
UINT32 | n | ||
) |
BOOL 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 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 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 INS_OperandReg | ( | INS | ins, |
UINT32 | n | ||
) |
UINT32 INS_OperandSize | ( | INS | ins, |
UINT32 | n | ||
) |
This function will generate an error for memory operands in instructions where INS_HasScatteredMemoryAccess returns TRUE.
BOOL INS_OperandSizePrefix | ( | INS | ins | ) |
UINT32 INS_OperandWidth | ( | INS | ins, |
UINT32 | n | ||
) |
BOOL 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 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(). |
INS INS_Prev | ( | INS | x | ) |
BOOL INS_RegIsImplicit | ( | INS | ins, |
REG | reg | ||
) |
Assumes that reg is a PIN register
REG INS_RegR | ( | INS | x, |
UINT32 | k | ||
) |
BOOL INS_RegRContain | ( | const INS | ins, |
const REG | reg | ||
) |
REG INS_RegW | ( | INS | x, |
UINT32 | k | ||
) |
BOOL INS_RegWContain | ( | const INS | ins, |
const REG | reg | ||
) |
REG INS_RepCountRegister | ( | INS | ins | ) |
BOOL INS_RepnePrefix | ( | INS | ins | ) |
BOOL INS_RepPrefix | ( | INS | ins | ) |
RTN INS_Rtn | ( | INS | x | ) |
BOOL INS_SegmentPrefix | ( | INS | ins | ) |
REG INS_SegmentRegPrefix | ( | INS | ins | ) |
BOOL INS_SegPrefixIsMemoryRead | ( | INS | ins | ) |
BOOL INS_SegPrefixIsMemoryWrite | ( | INS | ins | ) |
USIZE INS_Size | ( | INS | ins | ) |
BOOL INS_Stutters | ( | INS | ins | ) |
SYSCALL_STANDARD INS_SyscallStd | ( | INS | ins | ) |
Check to see if the given instruction is a system call and return corresponding calling standard.
BOOL INS_Valid | ( | INS | x | ) |
xed_decoded_inst_t* INS_XedDec | ( | INS | ins | ) |
Intel(R) X86 Encoder Decoder low-level support routines.
This supports the other core_ia32 files and is the lowest level interface to Intel(R) XED encoding/decoding.
xed_reg_enum_t INS_XedExactMapFromPinReg | ( | REG | pin_reg | ) |
Convert Pin REG type (application register) to an Intel(R) X86 Encoder Decoder xed_reg_enum_t register.
PIN_DEPRECATED_API REG INS_XedExactMapToPinReg | ( | unsigned int | r | ) |
Convert a Intel(R) X86 Encoder Decoder xed_reg_enum_t register to a Pin REG type.
REG INS_XedExactMapToPinReg | ( | xed_reg_enum_t | xed_reg | ) |
Convert a Intel(R) X86 Encoder Decoder xed_reg_enum_t register to a Pin REG type.
std::string OPCODE_StringShort | ( | UINT32 | opcode | ) |
VOID PIN_SetSyntaxATT | ( | ) |
Sets the disassembly syntax to ATT SYSV format. (Destination on the right)
VOID PIN_SetSyntaxIntel | ( | ) |
Sets the disassembly syntax to Intel format. (Destination on the left)
VOID PIN_SetSyntaxXED | ( | ) |
Sets the disassembly syntax to Intel(R) X86 Encoder Decoder detailed format which lists all resources read and written.
const UINT32 VSYSCALL_NR = 0xABCDDCBA |
This file contains INS primitives
system call number for function called from vsyscall