Pin
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
Macros | Enumerations | Functions | Variables
ins_inits_api_xed_ia32.cpp File Reference
#include "level_base_with_ia32_ins.H"
#include "level_core_with_ia32_ins.H"

Macros

#define PREDICATE_TABLE_ENTRY(op)   { XED_ICLASS_CMOV##op, XED_ICLASS_SET##op }
 

Enumerations

enum  XED_OPERAND_FLAGS { XED_OPERAND_FLAGS_LOCK = 1 }
 
enum  XED_OPERAND_NUMBER {
  XED_OPERAND_NUMBER_0 = 0,
  XED_OPERAND_NUMBER_1 = 1,
  XED_OPERAND_NUMBER_2 = 2
}
 

Functions

LOCALFUN REGWIDTH LEVEL_CORE::GetRegWidthOfEaWidth (INT32 ea_width)
 
LOCALFUN UINT LEVEL_CORE::GetBitSizeOfRegWidth (REGWIDTH reg_width)
 
LOCALFUN INT32 LEVEL_CORE::GetEffectiveAddressBitWidth (REG base, REG index)
 
VOID LEVEL_CORE::validate_displacement (INT32 signed_displacement, UINT32 bytes, UINT8 legal_displacement_bytewidths_bitmap)
 
LOCALFUN VOID LEVEL_CORE::INS_ChangeImmediate (INS ins, UINT64 immed)
 
UINT LEVEL_CORE::INS_VerifyScale (UINT scale)
 
LOCALFUN VOID LEVEL_CORE::XED_modify_legal_bytewidths_bitmap (xed_reg_enum_t dummy_base, UINT8 &legal_bytewidths_bitmap)
 
LOCALFUN UINT LEVEL_CORE::INS_compute_memop_width (UINT opwidth, REGWIDTH reg_width, UINT membytes=0)
 
LOCALFUN UINT8 LEVEL_CORE::ComputeNumBytesNeededForSignedImmediate (UINT64 immed, UINT32 legal_immed_bytewidths_bitmap, UINT32 extendedSize=8 *sizeof(ADDRINT), UINT32 destination_bit_size=0)
 
LOCALFUN xed_encoder_operand_t LEVEL_CORE::GetShortestWidthSignedImmediate (UINT64 immed, UINT32 legal_immed_bytewidths_bitmap, UINT32 extendedSize=8 *sizeof(ADDRINT), UINT32 destination_bit_size=0)
 
LOCALFUN VOID LEVEL_CORE::ClearOperand (xed_encoder_request_t *xed_enc, UINT32 operandIndex)
 
LOCALFUN VOID LEVEL_CORE::UpdateRegs (BOOL read, INS origIns, INS newIns, UINT32 origNum, UINT32 newNum)
 
LOCALFUN UINT32 LEVEL_CORE::MaxImmediate (INS ins)
 
LOCALFUN UINT8 LEVEL_CORE::INS_GetMemoryDisplacementLengthBits (INS ins)
 
LOCALFUN UINT8 LEVEL_CORE::GetLegalByteWidthsBitmapForEaWidth (INT32 ea_width)
 
LOCALINLINE xed_iclass_enum_t LEVEL_CORE::INS_Iclass (const INS ins)
 
LOCALFUN VOID LEVEL_CORE::VerifySameEncoding (INS checkIns, INS insOrig, int fromWhere)
 
LOCALFUN BOOL LEVEL_CORE::INS_CompareReadAndWriteRegs (INS ins1, INS ins2)
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitNoRegOpStat ("pin","insts","inssNoRegOp_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitRegOpStat ("pin","insts","inssRegOp_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitRegRegOpStat ("pin","insts","inssRegRegOp_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitYmmRegRegRegOp ("pin","insts","inssYmmRegRegRegOp_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitRegWordRegByteOp ("pin","insts","inssegWordRegByteOp_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitRegWidthRegOp ("pin","insts","inssRegWidthRegOp_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitRegImmOp ("pin","insts","inssRegImmOp_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitImmOp ("pin","insts","inssImmOp_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitWidthRegImmOp ("pin","insts","inssWidthRegImmOp_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitFarDirectOp ("pin","insts","inssFarDirectOp_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitSDispOp ("pin","insts","inssSDispOp_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitMemImmOp ("pin","insts","inssMemImmOp_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitMMRegRegOp ("pin","insts","inssMMRegRegOp_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitMMLoad ("pin","insts","inssMMLoad_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitMMStore ("pin","insts","inssMMStore_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitYMMInsertOp ("pin","insts","inssYMMInsertOp_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitLoadMemop ("pin","insts","inssLoadMemop_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitStoreMemop ("pin","insts","inssStoreMemop_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitRetImm ("pin","insts","inssRetImm_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitSizedNop ("pin","insts","inssSizedNop_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitYMMRegOp ("pin","insts","inssYMMRegOp_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::INSInitChangeOperandToImmediate ("pin","insts","ChangeOpToImm_via_xed","")
 
LOCALVAR STAT_UINT64 LEVEL_CORE::PinReusedInssStat ("pin","insts","generated_inss_via_reuse","")
 
LOCALVAR STAT_NORM LEVEL_CORE::TimerINS_Init ("pin","time","INS_Init","",&TimerCompile)
 
LOCALFUN VOID LEVEL_CORE::INS_XedProcessInstAndUpdateStripe (INS ins, xed_encoder_instruction_t *xed_inst, int flags, int ea_width)
 
LOCALFUN VOID LEVEL_CORE::INS_XedInst0 (INS ins, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width=0, int flags=0, int ea_width=0)
 
LOCALFUN VOID LEVEL_CORE::INS_XedInst1 (INS ins, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width, const xed_encoder_operand_t &op0, int flags=0, int ea_width=0)
 
LOCALFUN VOID LEVEL_CORE::INS_XedInst2 (INS ins, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width, const xed_encoder_operand_t &op0, const xed_encoder_operand_t &op1, int flags=0, int ea_width=0)
 
LOCALFUN VOID LEVEL_CORE::INS_XedInst3 (INS ins, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width, const xed_encoder_operand_t &op0, const xed_encoder_operand_t &op1, const xed_encoder_operand_t &op2, int flags=0, int ea_width=0)
 
LOCALFUN VOID LEVEL_CORE::INS_XedInst4 (INS ins, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width, const xed_encoder_operand_t &op0, const xed_encoder_operand_t &op1, const xed_encoder_operand_t &op2, const xed_encoder_operand_t &op3, int flags=0, int ea_width=0)
 
LOCALFUN VOID LEVEL_CORE::INS_InitSizedNopOriginal (INS ins, UINT requested_length_bytes)
 
VOID LEVEL_CORE::INS_InitSizedNop (INS ins, UINT requested_length_bytes)
 
LOCALFUN VOID LEVEL_CORE::INS_InitNoRegOpOriginal (INS ins, xed_iclass_enum_t iclass)
 
LOCALFUN VOID LEVEL_CORE::INS_InitNoRegOp (INS ins, xed_iclass_enum_t iclass)
 
LOCALINLINE xed_reg_enum_t LEVEL_CORE::get_dummy_reg_native (UINT i)
 
LOCALINLINE xed_reg_enum_t LEVEL_CORE::get_dummy_reg (UINT i, REGWIDTH reg_width)
 
LOCALINLINE xed_reg_enum_t LEVEL_CORE::get_dummy_index_reg (UINT i, REGWIDTH reg_width)
 
LOCALINLINE xed_reg_enum_t LEVEL_CORE::get_dummy_base_reg (UINT i, REGWIDTH reg_width)
 
LOCALINLINE VOID LEVEL_CORE::INS_InitRegOpGetDummyRegs (REG reg, xed_reg_enum_t *dummy_reg, REGWIDTH regWidth)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRegOpReplaceDummyRegs (INS ins, xed_reg_enum_t dummy_reg, REG reg)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRegOpOriginal (INS ins, REG reg, xed_iclass_enum_t iclass, REGWIDTH regWidth, BOOL replaceXedRegs)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRegOp (INS ins, REG reg, xed_iclass_enum_t iclass, REGWIDTH regWidth)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRegRegOpGetDummyRegsAndWidths (REG dst, xed_reg_enum_t *dummy_dst, xed_reg_enum_t *dummy_src, unsigned int *op_width, REGWIDTH *reg_width)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRegRegOpReplaceDummyRegs (INS ins, xed_reg_enum_t dummy_dst, REG dst, xed_reg_enum_t dummy_src, REG src)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRegRegOpOriginal (INS ins, REG src_reg, REG dst_reg, xed_iclass_enum_t iclass, BOOL replaceXedRegs, xed_reg_enum_t dummy_src=XED_REG_ECX, xed_reg_enum_t dummy_dst=XED_REG_EDX, unsigned int op_width=32)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRegRegOp (INS ins, REG src, REG dst, xed_iclass_enum_t iclass, xed_reg_enum_t dummy_src=XED_REG_ECX, xed_reg_enum_t dummy_dst=XED_REG_EDX, unsigned int op_width=32)
 
LOCALFUN VOID LEVEL_CORE::INS_InitYmmRegRegRegOpReplaceDummyRegs (INS ins, REG dest, xed_reg_enum_t dummy_dest, REG src1, xed_reg_enum_t dummy_src1, REG src2, xed_reg_enum_t dummy_src2)
 
LOCALFUN VOID LEVEL_CORE::INS_InitYmmRegRegRegOpOriginal (INS ins, REG src2, REG src1, REG dest, xed_iclass_enum_t iclass, BOOL replaceXedRegs, xed_reg_enum_t dummy_src2=XED_REG_YMM0, xed_reg_enum_t dummy_src1=XED_REG_YMM0, xed_reg_enum_t dummy_dest=XED_REG_YMM0)
 
LOCALFUN VOID LEVEL_CORE::INS_InitYmmRegRegRegOp (INS ins, REG src2, REG src1, REG dest, xed_iclass_enum_t iclass, xed_reg_enum_t dummy_src2=XED_REG_YMM0, xed_reg_enum_t dummy_src1=XED_REG_YMM0, xed_reg_enum_t dummy_dest=XED_REG_YMM0)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRegWordRegByteOpOriginal (INS ins, REG srcByte, REG dstWord, xed_iclass_enum_t iclass, BOOL replaceXedRegs, xed_reg_enum_t dummy_src=XED_REG_CL, xed_reg_enum_t dummy_dst=XED_REG_DX, unsigned int op_width=16)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRegWordRegByteOpReplaceDummyRegs (INS ins, REG dstWord, xed_reg_enum_t dummy_dst, REG srcByte, xed_reg_enum_t dummy_src)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRegWordRegByteOp (INS ins, REG srcByte, REG dstWord, xed_iclass_enum_t iclass, xed_reg_enum_t dummy_src=XED_REG_CL, xed_reg_enum_t dummy_dst=XED_REG_DX, unsigned int op_width=16)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRegWidthRegOpOriginal (INS ins, REG src, REG dst, xed_iclass_enum_t iclass, REGWIDTH regWidth, BOOL replaceXedRegs, unsigned int op_width=32)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRegWidthRegOpGetDummyRegs (xed_reg_enum_t *dummy_dst, xed_reg_enum_t *dummy_src, REGWIDTH regWidth)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRegWidthRegOpReplaceDummyRegs (INS ins, REG dst, xed_reg_enum_t dummy_dst, REG src, xed_reg_enum_t dummy_src)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRegWidthRegOp (INS ins, REG src, REG dst, xed_iclass_enum_t iclass, REGWIDTH regWidth, unsigned int op_width=32)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRegImmOpReplaceDummyRegs (INS ins, xed_reg_enum_t dummy_reg, REG reg)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRegImmOpOriginal (INS ins, REG reg, UINT64 immed, xed_iclass_enum_t iclass, UINT8 legal_immed_bytewidths_bitmap, BOOL replaceXedRegs)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRegImmOp (INS ins, REG reg, UINT64 immed, xed_iclass_enum_t iclass, UINT8 legal_immed_bytewidths_bitmap)
 
LOCALFUN VOID LEVEL_CORE::INS_InitImmOpOriginal (INS ins, UINT64 immed, xed_iclass_enum_t iclass, UINT8 legal_immed_bytewidths_bitmap=7)
 
LOCALFUN VOID LEVEL_CORE::INS_InitImmOp (INS ins, UINT64 immed, xed_iclass_enum_t iclass, UINT8 legal_immed_bytewidths_bitmap=7)
 
LOCALFUN VOID LEVEL_CORE::INS_InitWidthRegImmOpOriginal (INS ins, REG reg, UINT64 immed, xed_iclass_enum_t iclass, UINT8 legal_immed_bytewidths_bitmap, REGWIDTH regWidth, BOOL replaceXedRegs)
 
LOCALFUN VOID LEVEL_CORE::INS_InitWidthRegImmOp (INS ins, REG reg, UINT64 immed, xed_iclass_enum_t iclass, UINT8 legal_immed_bytewidths_bitmap, REGWIDTH regWidth)
 
LOCALFUN VOID LEVEL_CORE::INS_InitSDispOpOriginal (INS ins, INT64 disp, xed_iclass_enum_t iclass, INT32 ea_width, INS orig)
 
LOCALFUN VOID LEVEL_CORE::INS_InitSDispOp (INS ins, INT64 disp, xed_iclass_enum_t iclass, INT32 ea_width=sizeof(VOID *)*8, INS orig=INS_INVALID())
 
LOCALFUN VOID LEVEL_CORE::INS_InitXbeginOriginal (INS ins)
 
VOID LEVEL_CORE::INS_InitXbegin (INS ins)
 
LOCALFUN VOID LEVEL_CORE::INS_InitMemImmOpGetDummyRegs (REG base, xed_reg_enum_t *dummy_base, REG index, xed_reg_enum_t *dummy_index, INT32 ea_width, BOOL exactCopy, BOOL *ins_encoded_with_corresponding_app_reg)
 
LOCALFUN VOID LEVEL_CORE::INS_InitMemImmOpReplaceDummyRegs (INS ins, REG base, xed_reg_enum_t dummy_base, REG index, xed_reg_enum_t dummy_index)
 
LOCALFUN VOID LEVEL_CORE::INS_InitMemImmOpOriginal (INS ins, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, OPCODE op, UINT64 immed, UINT8 legal_immed_bytewidths_bitmap, REGWIDTH reg_width, BOOL replaceXedRegs, BOOL exactCopy)
 
VOID LEVEL_CORE::INS_InitMemImmOp (INS ins, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, OPCODE op, UINT64 immed, UINT8 legal_immed_bytewidths_bitmap, REGWIDTH reg_width, BOOL exactCopy)
 
LOCALFUN VOID LEVEL_CORE::INS_InitMMRegRegOpOriginal (INS ins, REG mmdst, REG mmsrc, xed_iclass_enum_t iclass, BOOL replaceXedRegs, xed_reg_enum_t dummy_dst, xed_reg_enum_t dummy_src, REGWIDTH regWidth=REGWIDTH_NATIVE)
 
LOCALFUN VOID LEVEL_CORE::INS_InitMMRegRegOpReplaceDummyRegs (INS ins, REG mmsrc, xed_reg_enum_t dummy_src, REG mmdst, xed_reg_enum_t dummy_dst)
 
LOCALFUN VOID LEVEL_CORE::INS_InitMMRegRegOp (INS ins, REG mmdst, REG mmsrc, xed_iclass_enum_t iclass, xed_reg_enum_t dummy_dst, xed_reg_enum_t dummy_src, REGWIDTH regWidth=REGWIDTH_NATIVE)
 
LOCALFUN VOID LEVEL_CORE::INS_InitMMLoadGetDummyRegs (REG base, xed_reg_enum_t *dummy_base, REG index, xed_reg_enum_t *dummy_index, REG mm_dst, xed_reg_enum_t *dummy_mm_dst, xed_reg_enum_t dummy_dst_param, REG maskReg, xed_reg_enum_t *dummy_mask, xed_reg_enum_t dummy_mask_param, INT32 ea_width, BOOL exactCopy)
 
LOCALFUN VOID LEVEL_CORE::INS_InitMMLoadReplaceDummyRegs (INS ins, REG mmdst, xed_reg_enum_t dummy_dst, REG maskReg, xed_reg_enum_t dummy_mask, REG base, xed_reg_enum_t dummy_base, REG index, xed_reg_enum_t dummy_index)
 
LOCALFUN VOID LEVEL_CORE::INS_InitMMLoadOriginal (INS ins, REG mmdst, REG maskReg, REG base, INT32 displacement, REG index, UINT scale, REG pinseg, xed_iclass_enum_t iclass, UINT32 memop_byte_length, xed_reg_enum_t dummy_dst_param, xed_reg_enum_t dummy_mask_param, BOOL replaceXedRegs, BOOL exactCopy)
 
LOCALFUN VOID LEVEL_CORE::INS_InitMMLoad (INS ins, REG mmdst, REG maskReg, REG base, INT32 displacement, REG index, UINT scale, REG pinseg, xed_iclass_enum_t iclass, UINT32 memop_byte_length, xed_reg_enum_t dummy_dst_param, xed_reg_enum_t dummy_mask_param, BOOL exactCopy)
 
LOCALFUN VOID LEVEL_CORE::INS_InitMMStoreGetDummyRegs (REG base, xed_reg_enum_t *dummy_base, REG index, xed_reg_enum_t *dummy_index, REG mmsrc, xed_reg_enum_t *dummy_mmsrc, xed_reg_enum_t dummy_mmsrc_param, REG maskReg, xed_reg_enum_t *dummy_mask, xed_reg_enum_t dummy_mask_param, INT32 ea_width, BOOL exactCopy)
 
LOCALFUN VOID LEVEL_CORE::INS_InitMMStoreReplaceDummyRegs (INS ins, REG base, xed_reg_enum_t dummy_base, REG index, xed_reg_enum_t dummy_index, REG mmsrc, xed_reg_enum_t dummy_src, REG maskReg, xed_reg_enum_t dummy_mask, xed_operand_enum_t xedreg_op, xed_operand_enum_t maskreg_op, const UINT memop_pos, const UINT regop_pos, const UINT maskop_pos)
 
LOCALFUN VOID LEVEL_CORE::INS_InitMMStoreOriginal (INS ins, REG mmsrc, REG maskReg, REG base, INT32 displacement, REG index, UINT scale, REG pinseg, xed_iclass_enum_t iclass, UINT32 memop_byte_length, xed_reg_enum_t dummy_src_param, xed_reg_enum_t dummy_mask_param, BOOL replaceXedRegs, BOOL exactCopy)
 
LOCALFUN VOID LEVEL_CORE::INS_InitMMStore (INS ins, REG mmsrc, REG maskReg, REG base, INT32 displacement, REG index, UINT scale, REG pinseg, xed_iclass_enum_t iclass, UINT32 memop_byte_length, xed_reg_enum_t dummy_src_param, xed_reg_enum_t dummy_mask_param, BOOL exactCopy)
 
LOCALFUN VOID LEVEL_CORE::INS_InitYMMInsertOpGetDummyRegs (REG base, xed_reg_enum_t *dummy_base, REG index, xed_reg_enum_t *dummy_index, REG ymm_src, xed_reg_enum_t *dummy_ymmsrc, REG ymm_dst, xed_reg_enum_t *dummy_ymmdst, BOOL exactCopy)
 
LOCALFUN VOID LEVEL_CORE::INS_InitYMMInsertOpReplaceDummyRegs (INS ins, REG base, xed_reg_enum_t dummy_base, REG index, xed_reg_enum_t dummy_index, REG ymmsrc, xed_reg_enum_t dummy_src, REG ymmdst, xed_reg_enum_t dummy_dst, const UINT memop_pos, const UINT regop_src_pos, const UINT regop_dst_pos)
 
LOCALFUN VOID LEVEL_CORE::INS_InitYMMInsertOpOriginal (INS ins, REG ymmDest, REG ymmSrc, REG base, INT32 displacement, REG index, UINT scale, REG seg, UINT32 imm8, xed_iclass_enum_t iclass, BOOL replaceXedRegs)
 
LOCALFUN VOID LEVEL_CORE::INS_InitYMMInsertOp (INS ins, REG ymmDest, REG ymmSrc, REG base, INT32 displacement, REG index, UINT scale, REG seg, UINT32 imm8, xed_iclass_enum_t iclass)
 
LOCALFUN VOID LEVEL_CORE::INS_InitLoadMemopGetDummyRegs (REG dst, xed_reg_enum_t *dummy_dst, REG index, xed_reg_enum_t *dummy_index, REG base, xed_reg_enum_t *dummy_base, INT32 ea_width, REGWIDTH reg_width, BOOL exactCopy)
 
LOCALFUN VOID LEVEL_CORE::INS_InitLoadmemopReplaceDummyRegs (INS ins, REG dst, xed_reg_enum_t dummy_dst, REG base, xed_reg_enum_t dummy_base, REG index, xed_reg_enum_t dummy_index, UINT memop_pos)
 
LOCALFUN VOID LEVEL_CORE::INS_InitLoadMemopOriginal (INS ins, REG dst, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, xed_iclass_enum_t iclass, BOOL replaceXedRegs, BOOL exactCopy, xed_operand_enum_t xed_op=XED_OPERAND_MEM0, UINT8 legal_displacement_bytewidths_bitmap=5, REGWIDTH reg_width=REGWIDTH_NATIVE, INT32 ea_width=sizeof(VOID *)*8, UINT load_bytes=0)
 
LOCALFUN VOID LEVEL_CORE::INS_InitLoadMemop (INS ins, REG dst, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, xed_iclass_enum_t iclass, BOOL exactCopy, xed_operand_enum_t xed_op=XED_OPERAND_MEM0, UINT8 legal_displacement_bytewidths_bitmap=5, REGWIDTH reg_width=REGWIDTH_NATIVE, INT32 ea_width=sizeof(VOID *)*8, UINT load_bytes=0)
 
LOCALFUN VOID LEVEL_CORE::INS_InitStoreMemopGetDummyRegs (REG src, xed_reg_enum_t *dummy_src, REG base, xed_reg_enum_t *dummy_base, REG index, xed_reg_enum_t *dummy_index, REGWIDTH reg_width, INT32 ea_width, BOOL exactCopy, xed_iclass_enum_t iclass)
 
LOCALFUN VOID LEVEL_CORE::INS_InitStoreMemopReplaceDummyRegs (INS ins, REG src, xed_reg_enum_t dummy_src, REG base, xed_reg_enum_t dummy_base, REG index, xed_reg_enum_t dummy_index)
 
LOCALFUN VOID LEVEL_CORE::INS_InitStoreMemopOriginal (INS ins, REG src, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, xed_iclass_enum_t iclass, BOOL replaceXedRegs, BOOL exactCopy, UINT8 legal_displacement_bytewidths_bitmap=5, REGWIDTH reg_width=REGWIDTH_NATIVE, BOOL lock=false, UINT store_bytes=0)
 
LOCALFUN VOID LEVEL_CORE::INS_InitStoreMemop (INS ins, REG src, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, xed_iclass_enum_t iclass, BOOL exactCopy, REGWIDTH reg_width=REGWIDTH_NATIVE, BOOL lock=false, UINT store_bytes=0)
 
LOCALFUN VOID LEVEL_CORE::INS_InitRetImmOriginal (INS ins, UINT64 imm)
 
VOID LEVEL_CORE::INS_InitRetImm (INS ins, UINT64 imm)
 
VOID LEVEL_CORE::INS_ReplaceMemop (INS ins, unsigned int operand_index, REG base, ADDRDELTA displacement, REG index, ADDRINT scale, REG pinseg, REGWIDTH ea_width)
 
LOCALFUN VOID LEVEL_CORE::INS_ChangeOperandToImmediateReplaceDummyRegs (INS ins, INS origIns)
 
LOCALFUN VOID LEVEL_CORE::INS_ChangeOperandToImmediateOriginal (INS ins, UINT32 operandIndex, UINT64 immediate, BOOL replaceXedRegs)
 
VOID LEVEL_CORE::INS_ChangeOperandToImmediate (INS ins, UINT32 operandIndex, UINT64 immediate)
 
LOCALFUN VOID LEVEL_CORE::INS_InitFarDirectOp (INS ins, UINT32 displacement, UINT16 segment_selector, xed_iclass_enum_t iclass)
 
VOID LEVEL_CORE::INS_GenRegRegOp (INS ins, REG src_reg, REG dst_reg, OPCODE opcode)
 
VOID LEVEL_CORE::INS_GenRegRegWordOp (INS ins, REG src_reg, REG dst_reg, OPCODE opcode)
 
VOID LEVEL_CORE::INS_GenRegRegDwordOp (INS ins, REG src_reg, REG dst_reg, OPCODE opcode)
 
VOID LEVEL_CORE::INS_GenRegRegByteOp (INS ins, REG src_reg, REG dst_reg, OPCODE opcode)
 
VOID LEVEL_CORE::INS_GenRegImmOp (INS ins, REG reg, UINT64 immed, OPCODE opcode)
 
VOID LEVEL_CORE::INS_GenRegImmByteOp (INS ins, REG reg, UINT64 immed, OPCODE opcode)
 
VOID LEVEL_CORE::INS_GenRegImmWordOp (INS ins, REG reg, UINT64 immed, OPCODE opcode)
 
VOID LEVEL_CORE::INS_GenRegImmDwordOp (INS ins, REG reg, UINT64 immed, OPCODE opcode)
 
VOID LEVEL_CORE::INS_InitHalt (INS ins)
 
VOID LEVEL_CORE::INS_InitMovMemImmOp (INS ins, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, UINT64 immed, UINT8 legal_immed_bytewidths_bitmap, BOOL exactCopy)
 
VOID LEVEL_CORE::INS_InitMovMemImmOpWidth (INS ins, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, UINT64 immed, UINT8 legal_immed_bytewidths_bitmap, REGWIDTH reg_width)
 
VOID LEVEL_CORE::INS_InitKmov (INS ins, REG src, REG dest)
 
VOID LEVEL_CORE::INS_InitKorTest (INS ins, REG src, REG dest)
 
VOID LEVEL_CORE::INS_GenMemImmOpWidth (INS ins, REG base, ADDRINT displacement, REG index, ADDRINT scale, UINT64 immed, OPCODE opcode, UINT8 legal_immed_bytewidths_bitmap, REGWIDTH reg_width)
 
VOID LEVEL_CORE::INS_GenSizedNop (INS ins, UINT requested_length_bytes)
 
VOID LEVEL_CORE::INS_InitUnalignedStoreXMM (INS ins, REG src, REG base, INT32 displacement, REG index, UINT scale, REG seg, BOOL exactCopy)
 
VOID LEVEL_CORE::INS_InitUnalignedStoreXMMUsingAvx (INS ins, REG src, REG base, INT32 displacement, REG index, UINT scale, REG seg, BOOL exactCopy)
 
VOID LEVEL_CORE::INS_InitUnalignedStoreYMM (INS ins, REG src, REG base, INT32 displacement, REG index, UINT scale, REG seg, BOOL exactCopy)
 
VOID LEVEL_CORE::INS_InitAlignedStoreXMM (INS ins, REG src, REG base, INT32 displacement, REG index, UINT scale, REG seg)
 
VOID LEVEL_CORE::INS_InitAlignedStoreZMM (INS ins, REG src, REG mask, REG base, INT32 displacement, REG index, UINT scale, REG seg, BOOL exactCopy)
 
VOID LEVEL_CORE::INS_InitUnalignedLoadXMM (INS ins, REG dst, REG base, INT32 displacement, REG index, UINT scale, REG seg, BOOL exactCopy)
 
VOID LEVEL_CORE::INS_InitUnalignedLoadYMM (INS ins, REG dst, REG base, INT32 displacement, REG index, UINT scale, REG seg, BOOL exactCopy)
 
VOID LEVEL_CORE::INS_InitAlignedLoadXMM (INS ins, REG dst, REG base, INT32 displacement, REG index, UINT scale, REG seg)
 
VOID LEVEL_CORE::INS_InitAlignedLoadZMM (INS ins, REG dst, REG mask, REG base, INT32 displacement, REG index, UINT scale, REG seg, BOOL exactCopy)
 
LOCALFUN VOID LEVEL_CORE::INS_InitXMMLoadOp (INS ins, REG dst, REG base, INT32 displacement, REG index, UINT scale, REG seg, xed_iclass_enum_t iclass)
 
LOCALFUN VOID LEVEL_CORE::INS_InitXMMRegRegOp (INS ins, REG dst, REG src, xed_iclass_enum_t iclass)
 
LOCALFUN VOID LEVEL_CORE::INS_InitGPR32XMMOp (INS ins, REG dst, REG src, xed_iclass_enum_t iclass)
 
VOID LEVEL_CORE::INS_InitMOVDQARegMem (INS ins, REG dst, REG base, INT32 displacement, REG index, UINT scale, REG seg)
 
VOID LEVEL_CORE::INS_InitVxorpd (INS ins, REG ymmDest, REG ymmSrc1, REG ymmSrc2)
 
VOID LEVEL_CORE::INS_Vinsertf128FromMem (INS ins, REG ymmDest, REG ymmSrc1, REG base, INT32 displacement, REG index, UINT scale, REG seg, UINT8 imm8)
 
VOID LEVEL_CORE::INS_InitPCMPEQBRegMem (INS ins, REG dst, REG base, INT32 displacement, REG index, UINT scale, REG seg)
 
VOID LEVEL_CORE::INS_InitPCMPEQDRegMem (INS ins, REG dst, REG base, INT32 displacement, REG index, UINT scale, REG seg)
 
VOID LEVEL_CORE::INS_InitPORRegMem (INS ins, REG dst, REG base, INT32 displacement, REG index, UINT scale, REG seg)
 
VOID LEVEL_CORE::INS_InitMOVDQARegReg (INS ins, REG dst, REG src)
 
VOID LEVEL_CORE::INS_InitPANDRegReg (INS ins, REG dst, REG src)
 
VOID LEVEL_CORE::INS_InitPMOVMSKB (INS ins, REG dst, REG src)
 
VOID LEVEL_CORE::INS_InitLoadMMX (INS ins, REG dst, REG base, INT32 displacement, REG index, UINT scale, REG seg)
 
VOID LEVEL_CORE::INS_InitStoreMMX (INS ins, REG src, REG base, INT32 displacement, REG index, UINT scale, REG seg)
 
VOID LEVEL_CORE::INS_InitLoad (INS ins, REG dst, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG seg, BOOL exactCopy)
 
VOID LEVEL_CORE::INS_InitLoadWidth (INS ins, REG dst, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG seg, REGWIDTH reg_width)
 
VOID LEVEL_CORE::INS_InitLoadEaWidth (INS ins, REG dst, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG seg, INT32 ea_width)
 
VOID LEVEL_CORE::INS_InitStore (INS ins, REG src, REG base, ADDRINT displacement, REG index, UINT32 scale, REG seg, BOOL exactCopy)
 
VOID LEVEL_CORE::INS_InitStore (INS ins, REG src, REG base, ADDRINT displacement, REG index, UINT32 scale, BOOL exactCopy)
 
VOID LEVEL_CORE::INS_InitStoreWidth (INS ins, REG src, REG base, ADDRINT displacement, REG index, UINT32 scale, REG seg, REGWIDTH reg_width, BOOL exactCopy)
 
VOID LEVEL_CORE::INS_InitStoreNTIWidth (INS ins, REG src, REG base, ADDRINT displacement, REG index, UINT32 scale, REG seg, REGWIDTH reg_width)
 
VOID LEVEL_CORE::INS_InitLea (INS ins, REG dst, REG base, ADDRINT displacement, REG index, UINT32 scale)
 
VOID LEVEL_CORE::INS_InitLea (INS ins, REG dst, REG base, REG seg)
 
VOID LEVEL_CORE::INS_InitLeaEaWidth (INS ins, REG dst, REG base, ADDRINT displacement, REG index, UINT32 scale, INT32 ea_width)
 
VOID LEVEL_CORE::INS_InitLeaEaWidth (INS ins, REG dst, REG base, ADDRINT displacement, REG index, UINT32 scale, INT32 ea_width, REGWIDTH reg_width)
 
VOID LEVEL_CORE::INS_InitStoreMxcsr (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale, BOOL useAvxVersion)
 
VOID LEVEL_CORE::INS_InitLoadMxcsr (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale, BOOL useAvxVersion)
 
VOID LEVEL_CORE::INS_InitFxsave (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale)
 
VOID LEVEL_CORE::INS_InitXsave (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale)
 
VOID LEVEL_CORE::INS_InitFxrstor (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale)
 
VOID LEVEL_CORE::INS_InitXrstor (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale)
 
VOID LEVEL_CORE::INS_InitPush (INS ins, REG reg)
 
LOCALFUN VOID LEVEL_CORE::INS_InitVZeroUpperOriginal (INS ins)
 
VOID LEVEL_CORE::INS_InitVZeroUpper (INS ins)
 
VOID LEVEL_CORE::INS_InitPop (INS ins, REG reg)
 
VOID LEVEL_CORE::INS_InitPushF (INS ins)
 
VOID LEVEL_CORE::INS_InitLods (INS ins)
 
VOID LEVEL_CORE::INS_InitStos (INS ins)
 
VOID LEVEL_CORE::INS_InitPopF (INS ins)
 
VOID LEVEL_CORE::INS_InitSAHF (INS ins)
 
VOID LEVEL_CORE::INS_InitLAHF (INS ins)
 
VOID LEVEL_CORE::INS_InitPushAL (INS ins)
 
VOID LEVEL_CORE::INS_InitPopAL (INS ins)
 
VOID LEVEL_CORE::INS_InitPush (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale, REG seg)
 
VOID LEVEL_CORE::INS_InitPushWidth (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale, REG seg, REGWIDTH reg_width)
 
VOID LEVEL_CORE::INS_InitPop (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale)
 
VOID LEVEL_CORE::INS_InitFarDirectJmp (INS ins, UINT32 displacement, UINT16 segment_selector)
 
VOID LEVEL_CORE::INS_InitFarDirectCall (INS ins, UINT32 displacement, UINT16 segment_selector)
 
VOID LEVEL_CORE::INS_InitIntx86 (INS ins, UINT64 num)
 
VOID LEVEL_CORE::INS_InitAndI (INS ins, REG reg, UINT64 imm)
 
VOID LEVEL_CORE::INS_InitOrI (INS ins, REG reg, UINT64 imm)
 
VOID LEVEL_CORE::INS_InitShlI (INS ins, REG reg, UINT64 imm)
 
VOID LEVEL_CORE::INS_InitShrI (INS ins, REG reg, UINT64 imm)
 
VOID LEVEL_CORE::INS_InitAddI (INS ins, REG reg, UINT64 imm)
 
VOID LEVEL_CORE::INS_InitAddCI (INS ins, REG reg, UINT64 imm)
 
VOID LEVEL_CORE::INS_InitSubI (INS ins, REG reg, UINT64 imm)
 
VOID LEVEL_CORE::INS_InitNeg (INS ins, REG reg)
 
VOID LEVEL_CORE::INS_InitNot (INS ins, REG reg)
 
VOID LEVEL_CORE::INS_InitCld (INS ins)
 
VOID LEVEL_CORE::INS_InitStd (INS ins)
 
VOID LEVEL_CORE::INS_InitPushI (INS ins, UINT64 imm)
 
VOID LEVEL_CORE::INS_InitJmpL (INS ins, UINT64 imm)
 
VOID LEVEL_CORE::INS_InitJmpR (INS ins, REG src)
 
VOID LEVEL_CORE::INS_InitJxMemoryFromOtherIns (INS ins, INS other, REG base, ADDRINT displacement, REG index, UINT32 scale)
 
VOID LEVEL_CORE::INS_InitJmpM (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale, REG segreg)
 
VOID LEVEL_CORE::INS_InitJxBLFromOtherIns (INS ins, INS other, UINT64 imm)
 
VOID LEVEL_CORE::INS_InitJNZ (INS ins, INT32 imm)
 
VOID LEVEL_CORE::INS_InitJZ (INS ins, INT32 imm)
 
VOID LEVEL_CORE::INS_InitJMP (INS ins, INT32 imm)
 
VOID LEVEL_CORE::INS_InitJCXZ (INS ins, UINT64 imm, REG countReg)
 
VOID LEVEL_CORE::INS_GenRetImm (INS ins, UINT64 imm)
 
VOID LEVEL_CORE::INS_InitCall (INS ins, UINT64 imm)
 
VOID LEVEL_CORE::INS_InitCallIndirectMemory (INS ins, REG segment, REG base, ADDRINT displacement, REG index, UINT32 scale)
 
VOID LEVEL_CORE::INS_InitCallIndirectRegister (INS ins, REG target)
 
VOID LEVEL_CORE::INS_InitRet (INS ins)
 
VOID LEVEL_CORE::INS_InitInt (INS ins, UINT8 imm)
 
VOID LEVEL_CORE::INS_InitInt3 (INS ins)
 
VOID LEVEL_CORE::INS_InitUD2 (INS ins)
 
VOID LEVEL_CORE::INS_InitTest (INS ins, REG src, REG dst)
 
VOID LEVEL_CORE::INS_InitTestI (INS ins, REG reg, UINT64 imm)
 
VOID LEVEL_CORE::INS_InitTestMI (INS ins, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, UINT64 immed)
 
VOID LEVEL_CORE::INS_InitAndMI (INS ins, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, UINT64 immed)
 
VOID LEVEL_CORE::INS_InitOrMI (INS ins, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, UINT64 immed)
 
VOID LEVEL_CORE::INS_InitXor (INS ins, REG src, REG dst)
 
VOID LEVEL_CORE::INS_InitNop (INS ins)
 
VOID LEVEL_CORE::INS_InitMov (INS ins, REG src, REG dst)
 
VOID LEVEL_CORE::INS_InitMov32 (INS ins, REG src, REG dst)
 
VOID LEVEL_CORE::INS_InitMov16 (INS ins, REG src, REG dst)
 
VOID LEVEL_CORE::INS_InitMov8 (INS ins, REG src, REG dst)
 
VOID LEVEL_CORE::INS_InitMovzx (INS ins, REG src, REG dst)
 
VOID LEVEL_CORE::INS_InitMovsx (INS ins, REG src, REG dst)
 
VOID LEVEL_CORE::INS_InitMovsxMemop (INS ins, REG dst, REG base, ADDRINT displacement, REG index, UINT32 scale, REG seg, UINT32 memWidth)
 
VOID LEVEL_CORE::INS_InitMovSW (INS ins)
 
VOID LEVEL_CORE::INS_InitMovRegMem (INS ins, REG src, REG base, ADDRINT displacement, REG index, UINT32 scale)
 
VOID LEVEL_CORE::INS_InitMovMemReg (INS ins, REG segment, REG base, ADDRINT displacement, REG index, UINT32 scale, REG dst)
 
VOID LEVEL_CORE::INS_InitMovI (INS ins, UINT64 imm, REG dst)
 
VOID LEVEL_CORE::INS_InitMovAddrint (INS ins, ADDRINT imm, REG dst)
 
VOID LEVEL_CORE::INS_InitCmpI (INS ins, REG reg, UINT64 imm)
 
VOID LEVEL_CORE::INS_InitCmpBI (INS ins, REG reg, UINT64 imm)
 
VOID LEVEL_CORE::INS_InitCmpWI (INS ins, REG reg, UINT64 imm)
 
VOID LEVEL_CORE::INS_InitCmp (INS ins, REG src_reg, REG dst_reg)
 
VOID LEVEL_CORE::INS_InitXchg (INS ins, REG src_reg, REG dst_reg)
 
VOID LEVEL_CORE::INS_InitSubR (INS ins, REG src, REG dst)
 
VOID LEVEL_CORE::INS_InitAddR (INS ins, REG src, REG dst)
 
VOID LEVEL_CORE::INS_InitAddCR (INS ins, REG src, REG dst)
 
VOID LEVEL_CORE::INS_InitCmpMR (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale, REG reg)
 
VOID LEVEL_CORE::INS_InitRdtsc (INS ins)
 
VOID LEVEL_CORE::INS_GenRegMemOpWidth (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale, REG reg, OPCODE opcode, UINT8 legal_displacement_bytewidths_bitmap, REGWIDTH reg_width)
 
VOID LEVEL_CORE::INS_GenMemRegOpWidth (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale, REG src, OPCODE opcode, REGWIDTH reg_width, UINT store_bytes)
 
VOID LEVEL_CORE::INS_InitCmovccFromJcc (INS ins, INS jcc, REG src, REG dst)
 
VOID LEVEL_CORE::INS_InitCmov (INS ins, REG src, REG dst, PREDICATE_IA32 cond)
 
VOID LEVEL_CORE::INS_InitSetCC (INS ins, REG reg, PREDICATE_IA32 cond)
 
VOID LEVEL_CORE::INS_InitAAA (INS ins)
 
VOID LEVEL_CORE::INS_InitSeto (INS ins, REG reg)
 
VOID LEVEL_CORE::INS_InvertBr (INS ins)
 
VOID LEVEL_CORE::INS_InitIncMem (INS ins, REG base, ADDRINT disp, BOOL lock)
 
VOID LEVEL_CORE::INS_EmbedValue (INS ins, VOID *valuePtr, UINT32 valueSize)
 
VOID LEVEL_CORE::INS_MakeBaseAddress (INS ins, REG base)
 

Variables

LOCALCONST INT32 LEVEL_CORE::DEFAULT_EA_WIDTH = sizeof(VOID*) * 8
 
LOCALCONST xed_state_t LEVEL_CORE::DSTATE
 
LOCALCONST UINT LEVEL_CORE::NATIVE_REG_WIDTH_IN_BITS = GetBitSizeOfRegWidth(REGWIDTH_NATIVE)
 
LOCALCONST UINT LEVEL_CORE::MAX_DUMMY_REGS = 3
 
LOCALCONST UINT LEVEL_CORE::MAX_DUMMY_REG_WIDTHS = 4
 
LOCALCONST REGWIDTH LEVEL_CORE::MAX_DUMMY_REGWIDTH = REGWIDTH_64
 
LOCALVAR const xed_reg_enum_t LEVEL_CORE::dummy_regs_native_table [MAX_DUMMY_REGS]
 
LOCALVAR const xed_reg_enum_t LEVEL_CORE::dummy_regs_width_table [MAX_DUMMY_REGS][MAX_DUMMY_REG_WIDTHS]
 
struct {
   xed_iclass_enum_t   cmovOp
 
   xed_iclass_enum_t   setOp
 
LEVEL_CORE::predicateToOp []
 

Detailed Description

This file contains the basic INS_Init* functions used thruout Pin to generate INSs, and the functions that use them. The basic INS_Init* functions are LOCALFUNS, so they do not expose the XED types thruout Pin. The GLOBALFUNs wrap them.