Update copyright to LGPL on all files
[dyninst.git] / dynutil / h / dyn_regs.h
1 /*
2  * Copyright (c) 1996-2009 Barton P. Miller
3  * 
4  * We provide the Paradyn Parallel Performance Tools (below
5  * described as "Paradyn") on an AS IS basis, and do not warrant its
6  * validity or performance.  We reserve the right to update, modify,
7  * or discontinue this software at any time.  We shall have no
8  * obligation to supply such updates or modifications or any other
9  * form of support to you.
10  * 
11  * By your use of Paradyn, you understand and agree that we (or any
12  * other person or entity with proprietary rights in Paradyn) are
13  * under no obligation to provide either maintenance services,
14  * update services, notices of latent defects, or correction of
15  * defects for Paradyn.
16  * 
17  * This library is free software; you can redistribute it and/or
18  * modify it under the terms of the GNU Lesser General Public
19  * License as published by the Free Software Foundation; either
20  * version 2.1 of the License, or (at your option) any later version.
21  * 
22  * This library is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
25  * Lesser General Public License for more details.
26  * 
27  * You should have received a copy of the GNU Lesser General Public
28  * License along with this library; if not, write to the Free Software
29  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
30  */
31 namespace Dyninst
32 {
33    typedef signed int MachRegister;        //Values below
34    const signed int MachRegInvalid = -1;
35    const signed int MachRegReturn = -2;    //Virtual register on some systems
36    const signed int MachRegFrameBase = -3; //Virtual register on some systems
37    const signed int MachRegPC = -4;
38    const signed int MachRegStackBase = -5; //Virtual register on some systems
39    
40    namespace x86
41    {
42       const signed int L_REG = 0x10; //8-bit, first byte
43       const signed int H_REG = 0x20; //8-bit, second byte
44       const signed int W_REG = (H_REG | L_REG); //16-bit, first word
45
46       const signed int EAX = 0x0;
47       const signed int ECX = 0x1;
48       const signed int EDX = 0x2;
49       const signed int EBX = 0x3;
50       const signed int ESP = 0x4;
51       const signed int EBP = 0x5;
52       const signed int ESI = 0x6;
53       const signed int EDI = 0x7;
54       const signed int AH  = (H_REG | EAX);
55       const signed int AL  = (L_REG | EAX);
56       const signed int AX  = (W_REG | EAX);
57       const signed int CH  = (H_REG | ECX);
58       const signed int CL  = (L_REG | ECX);
59       const signed int CX  = (W_REG | ECX);
60       const signed int DH  = (H_REG | EDX);
61       const signed int DL  = (L_REG | EDX);
62       const signed int DX  = (W_REG | EDX);
63       const signed int BH  = (H_REG | EBX);
64       const signed int BL  = (L_REG | EBX);
65       const signed int BX  = (W_REG | EBX);
66    }
67    namespace x86_64
68    {
69       const signed int L_REG = 0x10;  //8-bit, first byte
70       const signed int H_REG = 0x20;  //8-bit, second byte
71       const signed int W_REG = (H_REG | L_REG); //16 bit, first work
72       const signed int D_REG = 0x40; //32 bit, first double word
73
74       const signed int RAX = 0x0;
75       const signed int RCX = 0x1;
76       const signed int RDX = 0x2;
77       const signed int RBX = 0x3;
78       const signed int RSP = 0x4;
79       const signed int RBP = 0x5;
80       const signed int RSI = 0x6;
81       const signed int RDI = 0x7;
82       const signed int R8  = 0x8;
83       const signed int R9  = 0x9;
84       const signed int R10 = 0xa;
85       const signed int R11 = 0xb;
86       const signed int R12 = 0xc;
87       const signed int R13 = 0xd;
88       const signed int R14 = 0xe;
89       const signed int R15 = 0xf;
90       const signed int AH  = (H_REG | RAX);
91       const signed int AL  = (L_REG | RAX);
92       const signed int AX  = (W_REG | RAX);
93       const signed int EAX = (D_REG | RAX);
94       const signed int CH  = (H_REG | RCX);
95       const signed int CL  = (L_REG | RCX);
96       const signed int CX  = (W_REG | RCX);
97       const signed int ECX = (D_REG | RCX);
98       const signed int DH  = (H_REG | RDX);
99       const signed int DL  = (L_REG | RDX);
100       const signed int DX  = (W_REG | RDX);
101       const signed int EDX = (D_REG | RDX);
102       const signed int BH  = (H_REG | RBX);
103       const signed int BL  = (L_REG | RBX);
104       const signed int BX  = (W_REG | RBX);
105       const signed int EBX = (D_REG | RBX);
106       const signed int SPL = (L_REG | RSP);
107       const signed int SP  = (W_REG | RSP);
108       const signed int ESP = (D_REG | RSP);
109       const signed int BPL = (L_REG | RBP);
110       const signed int BP  = (W_REG | RBP);
111       const signed int EBP = (D_REG | RBP);
112       const signed int DIL = (L_REG | RDI);
113       const signed int DI  = (W_REG | RDI);
114       const signed int SIL = (L_REG | RSI);
115       const signed int SI  = (W_REG | RSI);
116       const signed int R8B = (L_REG | R8);
117       const signed int R8W = (W_REG | R8);
118       const signed int R8D = (D_REG | R8);
119       const signed int R9B = (L_REG | R9);
120       const signed int R9W = (W_REG | R9);
121       const signed int R9D = (D_REG | R9);
122       const signed int R10B = (L_REG | R10);
123       const signed int R10W = (W_REG | R10);
124       const signed int R10D = (D_REG | R10);
125       const signed int R11B = (L_REG | R11);
126       const signed int R11W = (W_REG | R11);
127       const signed int R11D = (D_REG | R11);
128       const signed int R12B = (L_REG | R12);
129       const signed int R12W = (W_REG | R12);
130       const signed int R12D = (D_REG | R12);
131       const signed int R13B = (L_REG | R13);
132       const signed int R13W = (W_REG | R13);
133       const signed int R13D = (D_REG | R13);
134       const signed int R14B = (L_REG | R14);
135       const signed int R14W = (W_REG | R14);
136       const signed int R14D = (D_REG | R14);
137       const signed int R15B = (L_REG | R15);
138       const signed int R15W = (W_REG | R15);
139       const signed int R15D = (D_REG | R15);
140          
141    }
142    typedef unsigned long MachRegisterVal;
143
144 }