Share via


CV_HREG_e

Specifies a target register.

Note

Because the CV_HREG_e enumeration is too large to duplicate in its entirety here, an abbreviated version is provided as a reference. Missing entries are notated in italics. The complete enumeration is available in the cvconst.h header file.

enum CV_HREG_e { 
   // Register subset shared by all processor types 
   CV_ALLREG_ERR    = 30000,
   CV_ALLREG_TEB    = 30001,
   CV_ALLREG_TIMER  = 30002,
   CV_ALLREG_EFAD1  = 30003,
   CV_ALLREG_EFAD2  = 30004,
   CV_ALLREG_EFAD3  = 30005,
   CV_ALLREG_VFRAME = 30006,
   CV_ALLREG_HANDLE = 30007,
   CV_ALLREG_PARAMS = 30008,
   CV_ALLREG_LOCALS = 30009,
   CV_ALLREG_TID    = 30010,
   CV_ALLREG_ENV    = 30011,
   CV_ALLREG_CMDLN  = 30012,

   //** Register set for Intel 80x86 and ix86 processor series **//
   CV_REG_NONE   = 0,
   CV_REG_AL     = 1,
   CV_REG_CL     = 2,
   CV_REG_DL     = 3,
   CV_REG_BL     = 4,
   CV_REG_AH     = 5,
   CV_REG_CH     = 6,
   CV_REG_DH     = 7,
   CV_REG_BH     = 8,
   CV_REG_AX     = 9,
   CV_REG_CX     = 10,
   CV_REG_DX     = 11,
   CV_REG_BX     = 12,
   CV_REG_SP     = 13,
   CV_REG_BP     = 14,
   CV_REG_SI     = 15,
   CV_REG_DI     = 16,
   CV_REG_EAX    = 17,
   CV_REG_ECX    = 18,
   CV_REG_EDX    = 19,
   CV_REG_EBX    = 20,
   CV_REG_ESP    = 21,
   CV_REG_EBP    = 22,
   CV_REG_ESI    = 23,
   CV_REG_EDI    = 24,
   CV_REG_ES     = 25,
   CV_REG_CS     = 26,
   CV_REG_SS     = 27,
   CV_REG_DS     = 28,
   CV_REG_FS     = 29,
   CV_REG_GS     = 30,
   CV_REG_IP     = 31,
   CV_REG_FLAGS  = 32,
   CV_REG_EIP    = 33,
   CV_REG_EFLAGS = 34,
   CV_REG_TEMP   = 40,     // PCODE Temp
   CV_REG_TEMPH  = 41,     // PCODE TempH
   CV_REG_QUOTE  = 42,     // PCODE Quote
   CV_REG_PCDR3  = 43,     // PCODE reserved
   // CV_REG_PCDR4 through CV_REG_PCDR7 defined
   CV_REG_CR0    = 80,     // CR0 -- control registers
   // CV_REG_CR1 through CV_REG_CR4 defined
   CV_REG_DR0    = 90,     // Debug register
   // CV_REG_DR1 through CV_REG_DR7 defined

   CV_REG_GDTR   = 110,
   CV_REG_GDTL   = 111,
   CV_REG_IDTR   = 112,
   CV_REG_IDTL   = 113,
   CV_REG_LDTR   = 114,
   CV_REG_TR     = 115,

   CV_REG_PSEUDO1 = 116,
   // CV_REG_PSEUDO2 through CV_REG_PSEUDO9 defined

   CV_REG_ST0   = 128,
   // CV_REG_ST1 through CV_REG_ST7 defined
   CV_REG_CTRL  = 136,
   CV_REG_STAT  = 137,
   CV_REG_TAG   = 138,
   CV_REG_FPIP  = 139,
   CV_REG_FPCS  = 140,
   CV_REG_FPDO  = 141,
   CV_REG_FPDS  = 142,
   CV_REG_ISEM  = 143,
   CV_REG_FPEIP = 144,
   CV_REG_FPEDO = 145,
   CV_REG_MM0   = 146,
   // CV_REG_MM1 through CV_REG_MM7 defined

   CV_REG_XMM0  = 154,  // KATMAI registers
   // CV_REG_XMM1 through CV_REG_XMM7 defined
   CV_REG_XMM00 = 162, // KATMAI sub-registers
   // CV_REG_XMM01, 02, and 03 defined
   // CV_REG_XMM10, 11, 12, and 13 defined
   // CV_REG_XMM20, 21, 22, and 23 defined
   // CV_REG_XMM30, 31, 32, and 33 defined
   // CV_REG_XMM40, 41, 42, and 43 defined
   // CV_REG_XMM50, 51, 52, and 53 defined
   // CV_REG_XMM60, 61, 62, and 63 defined
   // CV_REG_XMM70, 71, 72, and 73 defined

   CV_REG_XMM0L  = 194,
   // CV_REG_XMM1L through CV_REG_XMM7L defined
   CV_REG_XMM0H  = 202,
   // CV_REG_XMM1H through CV_REG_XMM7H defined
   CV_REG_MXCSR  = 211, // XMM status register
   CV_REG_EDXEAX = 212, // EDX:EAX pair

   CV_REG_EMM0L  = 220, // XMM sub-registers (WNI integer)
   // CV_REG_EMM1L through CV_REG_EMM7L defined
   CV_REG_EMM0H  = 228,
   // CV_REG_EMM1H through CV_REG_EMM7H defined

   CV_REG_MM00 = 236,
   CV_REG_MM01 = 237,
   CV_REG_MM10 = 238,
   CV_REG_MM11 = 239,
   CV_REG_MM20 = 240,
   CV_REG_MM21 = 241,
   CV_REG_MM30 = 242,
   CV_REG_MM31 = 243,
   CV_REG_MM40 = 244,
   CV_REG_MM41 = 245,
   CV_REG_MM50 = 246,
   CV_REG_MM51 = 247,
   CV_REG_MM60 = 248,
   CV_REG_MM61 = 249,
   CV_REG_MM70 = 250,
   CV_REG_MM71 = 251,

   //** Register set for the 68K processors **//
   CV_R68_D0    = 0,
   // CV_R68_D1 through CV_R68_D7 defined
   CV_R68_A0    = 8,
   // CV_R68_A1 through CV_R68_A7 defined
   CV_R68_CCR   = 16,
   CV_R68_SR    = 17,
   CV_R68_USP   = 18,
   CV_R68_MSP   = 19,
   CV_R68_SFC   = 20,
   CV_R68_DFC   = 21,
   CV_R68_CACR  = 22,
   CV_R68_VBR   = 23,
   CV_R68_CAAR  = 24,
   CV_R68_ISP   = 25,
   CV_R68_PC    = 26,
   //reserved 27
   CV_R68_FPCR  = 28,
   CV_R68_FPSR  = 29,
   CV_R68_FPIAR = 30,
   //reserved 31
   CV_R68_FP0   = 32,
   // CV_R68_FP1 through CV_R68_FP7 defined
   //reserved 40
   CV_R68_MMUSR030 = 41,
   CV_R68_MMUSR    = 42,
   CV_R68_URP      = 43,
   CV_R68_DTT0     = 44,
   CV_R68_DTT1     = 45,
   CV_R68_ITT0     = 46,
   CV_R68_ITT1     = 47,
   //reserved 50
   CV_R68_PSR      = 51,
   CV_R68_PCSR     = 52,
   CV_R68_VAL      = 53,
   CV_R68_CRP      = 54,
   CV_R68_SRP      = 55,
   CV_R68_DRP      = 56,
   CV_R68_TC       = 57,
   CV_R68_AC       = 58,
   CV_R68_SCC      = 59,
   CV_R68_CAL      = 60,
   CV_R68_TT0      = 61,
   CV_R68_TT1      = 62,
   //reserved 63
   CV_R68_BAD0     = 64,
   // CV_R68_BAD1 through CV_R68_BAD7 defined
   CV_R68_BAC0     = 72,
   // CV_R68_BAC1 through CV_R68_BAC7 defined

   //** Register set for the MIPS 4000 **//
   CV_M4_NOREG   = CV_REG_NONE,
   CV_M4_IntZERO = 10, // CPU register
   CV_M4_IntAT   = 11,
   CV_M4_IntV0   = 12,
   CV_M4_IntV1   = 13,
   CV_M4_IntA0   = 14,
   // CV_M4_IntA1, A2, and A3 defined
   CV_M4_IntT0   = 18,
   // CV_M4_IntT1 through CV_M4_IntT7 defined
   CV_M4_IntS0   = 26,
   // CV_M4_IntS1 through CV_M4_IntS7 defined
   CV_M4_IntT8   = 34,
   CV_M4_IntT9   = 35,
   CV_M4_IntKT0  = 36,
   CV_M4_IntKT1  = 37,
   CV_M4_IntGP   = 38,
   CV_M4_IntSP   = 39,
   CV_M4_IntS8   = 40,
   CV_M4_IntRA   = 41,
   CV_M4_IntLO   = 42,
   CV_M4_IntHI   = 43,

   CV_M4_Fir     = 50,
   CV_M4_Psr     = 51,

   CV_M4_FltF0   = 60, // Floating point registers
   // CV_M4_FltF1 through CV_M4_FltF31 defined
   CV_M4_FltFsr  = 92,

   //** Register set for the ALPHA AXP **//
   CV_ALPHA_NOREG    = CV_REG_NONE,
   CV_ALPHA_FltF0    = 10, // Floating point registers
   // CV_ALPHA_FltF1 through CV_ALPHA_FltF31 defined

   CV_ALPHA_IntV0    = 42, // Integer registers
   CV_ALPHA_IntT0    = 43,
   // CV_ALPHA_IntT1 through CV_ALPHA_IntT7 defined
   CV_ALPHA_IntS0    = 51,
   // CV_ALPHA_IntS1 through CV_ALPHA_IntS5 defined
   CV_ALPHA_IntFP    = 57,
   CV_ALPHA_IntA0    = 58,
   // CV_ALPHA_IntA1 through CV_ALPHA_IntA5 defined
   CV_ALPHA_IntT8    = 64,
   CV_ALPHA_IntT9    = 65,
   CV_ALPHA_IntT10   = 66,
   CV_ALPHA_IntT11   = 67,
   CV_ALPHA_IntRA    = 68,
   CV_ALPHA_IntT12   = 69,
   CV_ALPHA_IntAT    = 70,
   CV_ALPHA_IntGP    = 71,
   CV_ALPHA_IntSP    = 72,
   CV_ALPHA_IntZERO  = 73,

   CV_ALPHA_Fpcr     = 74, // Control registers
   CV_ALPHA_Fir      = 75,
   CV_ALPHA_Psr      = 76,
   CV_ALPHA_FltFsr   = 77,
   CV_ALPHA_SoftFpcr = 78,

   //** Register set for Motorola/IBM PowerPC **//
   CV_PPC_GPR0  = 1, // PowerPC general registers (User Level)
   // CV_PPC_GPR1 through CV_PPC_GPR31 defined

   CV_PPC_CR    = 33, // PowerPC condition register (User Level)
   CV_PPC_CR0   = 34,
   // CV_PPC_CR1 through CV_PPC_CR7 defined

   CV_PPC_FPR0  = 42, // PowerPC floating point registers (User Level)
   // CV_PPC_FPR1 through CV_PPC_FPR31 defined

   CV_PPC_FPSCR = 74, // PowerPC floating point status and control register (User Level)
   CV_PPC_MSR   = 75, // PowerPC machine state register (Supervisor Level)
   CV_PPC_SR0   = 76, // PowerPC segment registers (Supervisor Level)
   // CV_PPC_SR1 through CV_PPC_SR15 defined

   //** ADDITIONAL PowerPC REGISTERS DEFINED IN cvconst.h **//

   //** Register set for the Hitachi SH3 **//
   CV_SH3_NOREG = CV_REG_NONE,
   CV_SH3_IntR0 = 10, // CPU register
   // CV_SH3_IntR1 through CV_SH3_IntR13 defined
   CV_SH3_IntFp = 24,
   CV_SH3_IntSp = 25,
   CV_SH3_Gbr   = 38,
   CV_SH3_Pr    = 39,
   CV_SH3_Mach  = 40,
   CV_SH3_Macl  = 41,
   CV_SH3_Pc    = 50,
   CV_SH3_Sr    = 51,
   CV_SH3_BarA  = 60,
   CV_SH3_BasrA = 61,
   CV_SH3_BamrA = 62,
   CV_SH3_BbrA  = 63,
   CV_SH3_BarB  = 64,
   CV_SH3_BasrB = 65,
   CV_SH3_BamrB = 66,
   CV_SH3_BbrB  = 67,
   CV_SH3_BdrB  = 68,
   CV_SH3_BdmrB = 69,
   CV_SH3_Brcr  = 70,

   // Additional registers for Hitachi SH processors
   CV_SH_Fpscr  = 75, // Floating point status/control register
   CV_SH_Fpul   = 76, // Floating point communication register
   CV_SH_FpR0   = 80, // Floating point registers
   // CV_SH_FpR1 through CV_SH_FpR15 defined
   CV_SH_XFpR0  = 96,
   // CV_SH_XFpR1 through CV_SH_XFpR15 defined

   //** Register set for the ARM processor **//
   CV_ARM_NOREG = CV_REG_NONE,
   CV_ARM_R0    = 10,
   // CV_ARM_R1 through CV_ARM_R12 defined
   CV_ARM_SP    = 23, // Stack pointer
   CV_ARM_LR    = 24, // Link register
   CV_ARM_PC    = 25, // Program counter
   CV_ARM_CPSR  = 26, // Current program status register

   //** Register set for Intel IA64 **//
   CV_IA64_NOREG = CV_REG_NONE,
   CV_IA64_Br0   = 512, // Branch registers
   // CV_IA64_Br1 through CV_IA64_Br7 defined
   CV_IA64_P0    = 704, // Predicate registers
   // CV_IA64_P1 through CV_IA64_P63 defined
   CV_IA64_Preds = 768,
   CV_IA64_IntH0 = 832, // Banked general registers
   // CV_IA64_IntH1 through CV_IA64_IntH15 defined
   CV_IA64_Ip    = 1016, // Special registers
   CV_IA64_Umask = 1017,
   CV_IA64_Cfm   = 1018,
   CV_IA64_Psr   = 1019,
   CV_IA64_Nats  = 1020, // Banked general registers
   CV_IA64_Nats2 = 1021,
   CV_IA64_Nats3 = 1022,
   CV_IA64_IntR0 = 1024, // Integer registers
   // CV_IA64_IntR1 through CV_IA64_IntR127 defined
   CV_IA64_FltF0 = 2048, // Low floating point registers
   // CV_IA64_FltF1 through CV_IA64_FltF127 defined

   //** ADDITIONAL Intel IA64 REGISTERS DEFINED IN cvconst.h **//

   //** Register set for the TriCore processor **//
   CV_TRI_NOREG = CV_REG_NONE,
   CV_TRI_D0    = 10, // General purpose data registers
   // CV_TRI_D1 through CV_TRI_D15 defined
   CV_TRI_A0    = 26, // General purpose address registers
   // CV_TRI_A1 through CV_TRI_A15 defined
   CV_TRI_E0    = 42, // Extended (64-bit) data registers
   CV_TRI_E2    = 43,
   CV_TRI_E4    = 44,
   CV_TRI_E6    = 45,
   CV_TRI_E8    = 46,
   CV_TRI_E10   = 47,
   CV_TRI_E12   = 48,
   CV_TRI_E14   = 49,
   CV_TRI_EA0   = 50, // Extended (64-bit) address registers
   CV_TRI_EA2   = 51,
   CV_TRI_EA4   = 52,
   CV_TRI_EA6   = 53,
   CV_TRI_EA8   = 54,
   CV_TRI_EA10  = 55,
   CV_TRI_EA12  = 56,
   CV_TRI_EA14  = 57,

   //** ADDITIONAL TriCore REGISTERS DEFINED IN cvconst.h **//

   //** Register set for the AM33 and related processors **//
   CV_AM33_NOREG = CV_REG_NONE,
   // "Extended" (general purpose integer) registers
   CV_AM33_E0    = 10,
   // CV_AM33_E1 through CV_AM33_E7 defined
   CV_AM33_A0    = 20, // Address registers
   // CV_AM33_A1 through CV_AM33_A3 defined
   CV_AM33_D0    = 30, // Integer data registers
   // CV_AM33_D1 CV_AM33_D3 defined
   CV_AM33_FS0   = 40, // (Single-precision) floating-point registers
   // CV_AM33_FS1 through CV_AM33_FS31 defined

   //** ADDITIONAL AM33 REGISTERS DEFINED IN cvconst.h **//

   //** Register set for the Mitsubishi M32R **//
   CV_M32R_NOREG = CV_REG_NONE,
   CV_M32R_R0    = 10,
   // CV_M32R_R1 through CV_M32R_R11 defined
   CV_M32R_R12   = 22, // Global pointer, if used
   CV_M32R_R13   = 23, // Frame pointer, if allocated
   CV_M32R_R14   = 24, // Link register
   CV_M32R_R15   = 25, // Stack pointer
   CV_M32R_PSW   = 26, // Preprocessor status register
   CV_M32R_CBR   = 27, // Condition bit register
   CV_M32R_SPI   = 28, // Interrupt stack pointer
   CV_M32R_SPU   = 29, // User stack pointer
   CV_M32R_SPO   = 30, // OS stack pointer
   CV_M32R_BPC   = 31, // Backup program counter
   CV_M32R_ACHI  = 32, // Accumulator high
   CV_M32R_ACLO  = 33, // Accumulator low
   CV_M32R_PC    = 34, // Program counter

} CV_HREG_e;

Elements

  • CV_REG_*
    Registers used by Intel 80x86 and ix86 processors, and p-code.

  • CV_R68_*
    Registers used by 68K processor.

  • CV_M4_*
    Registers used by MIPS 4000 series processor.

  • CV_ALPHA_*
    Registers used by Digital Equipment Corporation Alpha AXP series processor.

  • CV_PPC_*
    Registers used by Motorola/IBM PowerPC processor.

  • CV_SH3_* and CV_SH_*
    Registers used by Hitachi SH3 and Hitachi SH series processor.

  • CV_ARM_*
    Registers used by Advanced RISC Machine (ARM) processors.

  • CV_IA64_*
    Registers used by Intel IA64 series processors.

  • CV_TRI_*
    Registers used by Infineon Technologies TriCore processor.

  • CV_AM33_*
    Registers used by Matsushita/Panasonic AM33 and related processors.

  • CV_M32R_*
    Registers used by Mitsubishi M32R processor.

Remarks

Each processor type uses its own unique set of registers.

The values in this enumeration are passed to the following methods:

Requirements:

Header: cvconst.h

See Also

Reference

IDiaStackWalkFrame::get_registerValue

IDiaStackWalkFrame::put_registerValue

IDiaStackWalkHelper::get_registerValue

IDiaStackWalkHelper::put_registerValue

IDiaStackFrame::get_registerValue

Other Resources

Enumerations and Structures