- Main Page
- Modules
- Classes

- Search for |

# Physical context manipulation API

## Typedefs

typedef PHYSICAL_CONTEXT | PHYSICAL_CONTEXT

## Functions

VOID | LEVEL_PINCLIENT::PIN_SetPhysicalContextReg (PHYSICAL_CONTEXT *pPhysCtxt, REG reg, ADDRINT val)
ADDRINT | LEVEL_PINCLIENT::PIN_GetPhysicalContextReg (const PHYSICAL_CONTEXT *pPhysCtxt, REG reg)
VOID | LEVEL_PINCLIENT::PIN_SetPhysicalContextFPState (PHYSICAL_CONTEXT *pPhysCtxt, const VOID *fpstate)
VOID | LEVEL_PINCLIENT::PIN_GetPhysicalContextFPState (const PHYSICAL_CONTEXT *pPhysCtxt, VOID *fpstate)

## Detailed Description

This API allows the user to read and modify the pin/tool architectural register state of the processor. The registers physical context range (enumerated in REG) is up to REG_PHYSICAL_CONTEXT_END registers and floating point state.

The tool receives physical context in the INTERNAL_EXCEPTION_CALLBACK. At this time, the tool can read and modify individual physical register values and modify floating point state using the PIN_GetPhysicalContextReg(), PIN_SetPhysicalContextReg(), PIN_SetPhysicalContextFPState(), PIN_GetPhysicalContextFPState().

## Typedef Documentation

typedef struct PHYSICAL_CONTEXT PHYSICAL_CONTEXT

| Physical state of the processor. The tool should not read or modify data members of this structure directly, but must treat the structure as logically opaque and use the Physical context manipulation API functions to manage it.

## Function Documentation

VOID LEVEL_PINCLIENT::PIN_GetPhysicalContextFPState | ( | const PHYSICAL_CONTEXT * | pPhysCtxt,
|  | VOID * | fpstate
| ) |

| Get the floating point state of the specified physical context.

Parameters:

  `[in]` | pPhysCtxt | physical context whose floating point state is retrieved
  `[in]` | fpstate | pointer to the buffer that receives floating point state of the context. The size of the buffer must be at least FPSTATE_SIZE bytes. The returned state has fxsave format in IA-32 and Intel(R) 64 architectures.

Availability:
  Mode: JIT
  O/S: Windows
  CPU: IA-32 and Intel(R) 64 architectures

ADDRINT LEVEL_PINCLIENT::PIN_GetPhysicalContextReg | ( | const PHYSICAL_CONTEXT * | pPhysCtxt,
|  | REG | reg
| ) |

| Get the value of the integer register in the specified physical context.

Parameters:

  `[in]` | pPhysCtxt | physical context whose register value is requested
  `[in]` | reg | physical register whose value is requested (up to REG_PHYSICAL_CONTEXT_END)

Returns:
  value of the register in the specified context

Availability:
  Mode: JIT
  O/S: Windows
  CPU: IA-32 and Intel(R) 64 architectures

VOID LEVEL_PINCLIENT::PIN_SetPhysicalContextFPState | ( | PHYSICAL_CONTEXT * | pPhysCtxt,
|  | const VOID * | fpstate
| ) |

| Set the given floating point state in the specified physical context.

Parameters:

  `[in,out]` | pPhysCtxt | physical context whose floating point state is to be set
  `[in]` | fpstate | new floating point state of the context. It must have fxsave format in IA-32 and Intel(R) 64 architectures.

Availability:
  Mode: JIT
  O/S: Windows
  CPU: IA-32 and Intel(R) 64 architectures

VOID LEVEL_PINCLIENT::PIN_SetPhysicalContextReg | ( | PHYSICAL_CONTEXT * | pPhysCtxt,
|  | REG | reg,
|  | ADDRINT | val
| ) |

| Set the given value for the integer register in the specified physical context.

Parameters:

  `[in,out]` | pPhysCtxt | physical context whose register value is to be set
  `[in]` | reg | physical register whose value is to be set (up to REG_PHYSICAL_CONTEXT_END)
  `[in]` | val | new value of the register

Availability:
  Mode: JIT
  O/S: Windows
  CPU: IA-32 and Intel(R) 64 architectures