Add new register names to dynutil for local variable support in StackwalkerAPI
[dyninst.git] / dynutil / h / dyn_regs.h
1 namespace Dyninst
2 {
3    typedef signed int MachRegister;        //Values below
4    const signed int MachRegInvalid = -1;
5    const signed int MachRegReturn = -2;    //Virtual register on some systems
6    const signed int MachRegFrameBase = -3; //Virtual register on some systems
7    const signed int MachRegPC = -4;
8    const signed int MachRegStackBase = -5; //Virtual register on some systems
9    
10    namespace x86
11    {
12       const signed int L_REG = 0x10; //8-bit, first byte
13       const signed int H_REG = 0x20; //8-bit, second byte
14       const signed int W_REG = (H_REG | L_REG); //16-bit, first word
15
16       const signed int EAX = 0x0;
17       const signed int ECX = 0x1;
18       const signed int EDX = 0x2;
19       const signed int EBX = 0x3;
20       const signed int ESP = 0x4;
21       const signed int EBP = 0x5;
22       const signed int ESI = 0x6;
23       const signed int EDI = 0x7;
24       const signed int AH  = (H_REG | EAX);
25       const signed int AL  = (L_REG | EAX);
26       const signed int AX  = (W_REG | EAX);
27       const signed int CH  = (H_REG | ECX);
28       const signed int CL  = (L_REG | ECX);
29       const signed int CX  = (W_REG | ECX);
30       const signed int DH  = (H_REG | EDX);
31       const signed int DL  = (L_REG | EDX);
32       const signed int DX  = (W_REG | EDX);
33       const signed int BH  = (H_REG | EBX);
34       const signed int BL  = (L_REG | EBX);
35       const signed int BX  = (W_REG | EBX);
36    }
37    namespace x86_64
38    {
39       const signed int L_REG = 0x10;  //8-bit, first byte
40       const signed int H_REG = 0x20;  //8-bit, second byte
41       const signed int W_REG = (H_REG | L_REG); //16 bit, first work
42       const signed int D_REG = 0x40; //32 bit, first double word
43
44       const signed int RAX = 0x0;
45       const signed int RCX = 0x1;
46       const signed int RDX = 0x2;
47       const signed int RBX = 0x3;
48       const signed int RSP = 0x4;
49       const signed int RBP = 0x5;
50       const signed int RSI = 0x6;
51       const signed int RDI = 0x7;
52       const signed int R8  = 0x8;
53       const signed int R9  = 0x9;
54       const signed int R10 = 0xa;
55       const signed int R11 = 0xb;
56       const signed int R12 = 0xc;
57       const signed int R13 = 0xd;
58       const signed int R14 = 0xe;
59       const signed int R15 = 0xf;
60       const signed int AH  = (H_REG | RAX);
61       const signed int AL  = (L_REG | RAX);
62       const signed int AX  = (W_REG | RAX);
63       const signed int EAX = (D_REG | RAX);
64       const signed int CH  = (H_REG | RCX);
65       const signed int CL  = (L_REG | RCX);
66       const signed int CX  = (W_REG | RCX);
67       const signed int ECX = (D_REG | RCX);
68       const signed int DH  = (H_REG | RDX);
69       const signed int DL  = (L_REG | RDX);
70       const signed int DX  = (W_REG | RDX);
71       const signed int EDX = (D_REG | RDX);
72       const signed int BH  = (H_REG | RBX);
73       const signed int BL  = (L_REG | RBX);
74       const signed int BX  = (W_REG | RBX);
75       const signed int EBX = (D_REG | RBX);
76       const signed int SPL = (L_REG | RSP);
77       const signed int SP  = (W_REG | RSP);
78       const signed int ESP = (D_REG | RSP);
79       const signed int BPL = (L_REG | RBP);
80       const signed int BP  = (W_REG | RBP);
81       const signed int EBP = (D_REG | RBP);
82       const signed int DIL = (L_REG | RDI);
83       const signed int DI  = (W_REG | RDI);
84       const signed int SIL = (L_REG | RSI);
85       const signed int SI  = (W_REG | RSI);
86       const signed int R8B = (L_REG | R8);
87       const signed int R8W = (W_REG | R8);
88       const signed int R8D = (D_REG | R8);
89       const signed int R9B = (L_REG | R9);
90       const signed int R9W = (W_REG | R9);
91       const signed int R9D = (D_REG | R9);
92       const signed int R10B = (L_REG | R10);
93       const signed int R10W = (W_REG | R10);
94       const signed int R10D = (D_REG | R10);
95       const signed int R11B = (L_REG | R11);
96       const signed int R11W = (W_REG | R11);
97       const signed int R11D = (D_REG | R11);
98       const signed int R12B = (L_REG | R12);
99       const signed int R12W = (W_REG | R12);
100       const signed int R12D = (D_REG | R12);
101       const signed int R13B = (L_REG | R13);
102       const signed int R13W = (W_REG | R13);
103       const signed int R13D = (D_REG | R13);
104       const signed int R14B = (L_REG | R14);
105       const signed int R14W = (W_REG | R14);
106       const signed int R14D = (D_REG | R14);
107       const signed int R15B = (L_REG | R15);
108       const signed int R15W = (W_REG | R15);
109       const signed int R15D = (D_REG | R15);
110          
111    }
112    typedef unsigned long MachRegisterVal;
113
114 }