Classes | |
union | PIN_REGISTER |
Typedefs | |
typedef CONTEXT | CONTEXT |
Enumerations | |
enum | PROCESSOR_STATE { PROCESSOR_STATE_X87, PROCESSOR_STATE_XMM, PROCESSOR_STATE_YMM, PROCESSOR_STATE_ZMM } |
Functions | |
BOOL | LEVEL_PINCLIENT::PIN_SupportsProcessorState (PROCESSOR_STATE state) |
BOOL | LEVEL_PINCLIENT::PIN_ContextContainsState (CONTEXT *ctxt, PROCESSOR_STATE state) |
VOID | LEVEL_PINCLIENT::PIN_SetContextRegval (CONTEXT *ctxt, REG reg, const UINT8 *val) |
VOID | LEVEL_PINCLIENT::PIN_GetContextRegval (const CONTEXT *ctxt, REG reg, UINT8 *val) |
VOID | LEVEL_PINCLIENT::PIN_SetContextReg (CONTEXT *ctxt, REG reg, ADDRINT val) |
ADDRINT | LEVEL_PINCLIENT::PIN_GetContextReg (const CONTEXT *ctxt, REG reg) |
VOID | LEVEL_PINCLIENT::PIN_SetContextFPState (CONTEXT *ctxt, const FPSTATE *fpstate) |
VOID | LEVEL_PINCLIENT::PIN_GetContextFPState (const CONTEXT *ctxt, FPSTATE *fpstate) |
VOID | LEVEL_PINCLIENT::PIN_SaveContext (const CONTEXT *ctxtFrom, CONTEXT *ctxtTo) |
VOID | LEVEL_PINCLIENT::PIN_ExecuteAt (const CONTEXT *ctxt) |
Usually, the tool receives context in the instrumentation callback like THREAD_START_CALLBACK, CONTEXT_CHANGE_CALLBACK, or when it specifies IARG_CONTEXT argument to the instrumentation routine. At this time, the tool can read the individual register values or save the entire context using the PIN_GetContextReg, PIN_GetContextRegval, and PIN_SaveContext functions. The PIN_ExecuteAt function can be called from an analysis routine to change the control flow of the thread and start execution from the specified context. The PIN_SetContextReg and PIN_SetContextRegval functions can be used from callbacks to change the thread's register state.
|
Architectural state of the processor. |
|
enums for queries on the supported state: PIN_SupportsProcessorState and PIN_ContextContainsState |
|
Query if the specified CONTEXT contains the specified PROCESSOR_STATE.
|
|
A tool can call this API to abandon the current analysis function and resume execution of the calling thread at a new application register state. Note that this API does not return back to the caller's analysis function. This API can be called from an analysis function or a replacement routine, but not from a callback.
|
|
Get the floating point state of the specified context.
|
|
Get the value of the integer register or fp status/control register in the specified context. Note that fp registers such as fp-stack regs, xmm regs, ymm regs (when running with Intel(R) AVX support), can only be read using PIN_GetContextRegval.
|
|
Get the value of the requested register from the context. This function is applicable for all context registers (integer, fp etc).
|
|
Copy the CONTEXT structure.
|
|
Set the given floating point state in the specified context.
|
|
Set the given value for the integer register or fp status/control register in the specified context. Note that fp registers such as fp-stack regs, xmm regs, ymm regs (when running with Intel(R) AVX support), can only be set using PIN_SetContextRegval.
|
|
Set the given value for the requested register in the context. This function is applicable for all context registers (integer, fp etc.). When this function is used from within a callback, e.g. THREAD_START_CALLBACK, the new context will take effect when the application continues. If this function is called from within an analysis routine, in order for the new context to take effect when the application continues one must do one of the following: Either use IARG_PARTIAL_CONTEXT and specify the registers which should be modified in the "out" REGSET. Or, use the IARG_CONTEXT and call PIN_ExecuteAt (don't forget to set REG_INST_PTR appropriately).
|
|
Query if Pin supports the specified PROCESSOR_STATE.
|