Pin
Functions

Functions

BOOL LEVEL_BASE::REG_is_reg (REG reg)
 
BOOL LEVEL_BASE::REG_is_pseudo (REG reg)
 
BOOL LEVEL_BASE::REG_is_gr (REG reg)
 
BOOL LEVEL_BASE::REG_is_fr (REG reg)
 
BOOL LEVEL_BASE::REG_is_br (REG reg)
 
BOOL LEVEL_BASE::REG_is_gr64 (REG reg)
 
BOOL LEVEL_BASE::REG_is_gr32 (REG reg)
 
BOOL LEVEL_BASE::REG_is_pin_gr32 (REG reg)
 
BOOL LEVEL_BASE::REG_is_gr16 (REG reg)
 
BOOL LEVEL_BASE::REG_is_gr8 (REG reg)
 
BOOL LEVEL_BASE::REG_is_seg (REG reg)
 
BOOL LEVEL_BASE::REG_is_pin_gr (REG reg)
 
BOOL LEVEL_BASE::REG_is_pin_gr_half32 (REG reg)
 
REG LEVEL_BASE::REG_INVALID ()
 
BOOL LEVEL_BASE::REG_valid (REG reg)
 
BOOL LEVEL_BASE::REG_is_pin64 (REG reg)
 
REG LEVEL_BASE::REG_FullRegName (const REG reg)
 
std::string LEVEL_BASE::REG_StringShort (REG reg)
 
REG LEVEL_PINCLIENT::PIN_ClaimToolRegister ()
 

Detailed Description

Availability:
Mode: JIT & Probe
O/S: Linux & Windows
CPU: All

Function Documentation

◆ PIN_ClaimToolRegister()

REG LEVEL_PINCLIENT::PIN_ClaimToolRegister ( )

Claim a PIN scratch register for use by this tool.

By using this function to claim scratch registers tools can avoid contention if a tool is composed from different components each of which uses scratch registers. Using this function is to be preferred to directly using the REG_INST_Gn register enumerations.

Note that although this function is available in probe mode, use of Pin scratch registers is not currently supported in probe mode, so this function is useless there.

Returns
A register to be used, or REG_INVALID() if all of the scratch registers available for tool use have been allocated.
Availability:
Mode: JIT & Probe
O/S: Linux, Windows & macOS*
CPU: All

◆ REG_FullRegName()

REG LEVEL_BASE::REG_FullRegName ( const REG  reg)

If reg is a partial register, return the name of the full register containing it. For example, on IA-32, if reg is REG_AL, the function will return REG_EAX. If reg is a full register, the function returns it unchanged. If reg is not in range of REG enumeration, returns invalid reg.

◆ REG_INVALID()

REG LEVEL_BASE::REG_INVALID ( )

Return the invalid register.

◆ REG_is_br()

BOOL LEVEL_BASE::REG_is_br ( REG  reg)
Returns
true if reg is a branch register

◆ REG_is_fr()

BOOL LEVEL_BASE::REG_is_fr ( REG  reg)
Returns
true if reg is a floating register

◆ REG_is_gr()

BOOL LEVEL_BASE::REG_is_gr ( REG  reg)
Returns
true if reg is a FULL WIDTH general purpose register

◆ REG_is_gr16()

BOOL LEVEL_BASE::REG_is_gr16 ( REG  reg)
Returns
true if reg is a 16-bit general purpose register

◆ REG_is_gr32()

BOOL LEVEL_BASE::REG_is_gr32 ( REG  reg)
Returns
true if reg is a 32-bit general purpose register

◆ REG_is_gr64()

BOOL LEVEL_BASE::REG_is_gr64 ( REG  reg)
Returns
true if reg is a 64-bit general purpose register

◆ REG_is_gr8()

BOOL LEVEL_BASE::REG_is_gr8 ( REG  reg)
Returns
true if reg is a 8-bit general purpose register

◆ REG_is_pin64()

BOOL LEVEL_BASE::REG_is_pin64 ( REG  reg)
Returns
true if reg is a 64-bit pin register

◆ REG_is_pin_gr()

BOOL LEVEL_BASE::REG_is_pin_gr ( REG  reg)
Returns
true if reg is a FULL WIDTH general purpose pin virtual register

◆ REG_is_pin_gr32()

BOOL LEVEL_BASE::REG_is_pin_gr32 ( REG  reg)
Returns
true if reg is a 32-bit pin register

◆ REG_is_pin_gr_half32()

BOOL LEVEL_BASE::REG_is_pin_gr_half32 ( REG  reg)
Returns
true if reg is a FULL WIDTH general purpose pin virtual register

◆ REG_is_pseudo()

BOOL LEVEL_BASE::REG_is_pseudo ( REG  reg)

◆ REG_is_reg()

BOOL LEVEL_BASE::REG_is_reg ( REG  reg)

◆ REG_is_seg()

BOOL LEVEL_BASE::REG_is_seg ( REG  reg)
Returns
true if reg is a segment register

◆ REG_StringShort()

std::string LEVEL_BASE::REG_StringShort ( REG  reg)

convert a REG into a printable string

◆ REG_valid()

BOOL LEVEL_BASE::REG_valid ( REG  reg)

Check if register is valid.