1 // i386 register table.
3 // Free Software Foundation, Inc.
5 // This file is part of the GNU opcodes library.
7 // This library is free software; you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by
9 // the Free Software Foundation; either version 3, or (at your option)
12 // It is distributed in the hope that it will be useful, but WITHOUT
13 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 // License for more details.
17 // You should have received a copy of the GNU General Public License
18 // along with GAS; see the file COPYING. If not, write to the Free
19 // Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
22 // Make %st first as we test for it.
23 st, FloatReg|FloatAcc, 0, 0
26 cl, Reg8|ShiftCount, 0, 1
33 axl, Reg8|Acc, RegRex64, 0
34 cxl, Reg8, RegRex64, 1
35 dxl, Reg8, RegRex64, 2
36 bxl, Reg8, RegRex64, 3
37 spl, Reg8, RegRex64, 4
38 bpl, Reg8, RegRex64, 5
39 sil, Reg8, RegRex64, 6
40 dil, Reg8, RegRex64, 7
41 r8b, Reg8, RegRex|RegRex64, 0
42 r9b, Reg8, RegRex|RegRex64, 1
43 r10b, Reg8, RegRex|RegRex64, 2
44 r11b, Reg8, RegRex|RegRex64, 3
45 r12b, Reg8, RegRex|RegRex64, 4
46 r13b, Reg8, RegRex|RegRex64, 5
47 r14b, Reg8, RegRex|RegRex64, 6
48 r15b, Reg8, RegRex|RegRex64, 7
52 dx, Reg16|InOutPortReg, 0, 2
53 bx, Reg16|BaseIndex, 0, 3
55 bp, Reg16|BaseIndex, 0, 5
56 si, Reg16|BaseIndex, 0, 6
57 di, Reg16|BaseIndex, 0, 7
60 r10w, Reg16, RegRex, 2
61 r11w, Reg16, RegRex, 3
62 r12w, Reg16, RegRex, 4
63 r13w, Reg16, RegRex, 5
64 r14w, Reg16, RegRex, 6
65 r15w, Reg16, RegRex, 7
67 eax, Reg32|BaseIndex|Acc, 0, 0
68 ecx, Reg32|BaseIndex, 0, 1
69 edx, Reg32|BaseIndex, 0, 2
70 ebx, Reg32|BaseIndex, 0, 3
72 ebp, Reg32|BaseIndex, 0, 5
73 esi, Reg32|BaseIndex, 0, 6
74 edi, Reg32|BaseIndex, 0, 7
75 r8d, Reg32|BaseIndex, RegRex, 0
76 r9d, Reg32|BaseIndex, RegRex, 1
77 r10d, Reg32|BaseIndex, RegRex, 2
78 r11d, Reg32|BaseIndex, RegRex, 3
79 r12d, Reg32|BaseIndex, RegRex, 4
80 r13d, Reg32|BaseIndex, RegRex, 5
81 r14d, Reg32|BaseIndex, RegRex, 6
82 r15d, Reg32|BaseIndex, RegRex, 7
83 rax, Reg64|BaseIndex|Acc, 0, 0
84 rcx, Reg64|BaseIndex, 0, 1
85 rdx, Reg64|BaseIndex, 0, 2
86 rbx, Reg64|BaseIndex, 0, 3
88 rbp, Reg64|BaseIndex, 0, 5
89 rsi, Reg64|BaseIndex, 0, 6
90 rdi, Reg64|BaseIndex, 0, 7
91 r8, Reg64|BaseIndex, RegRex, 0
92 r9, Reg64|BaseIndex, RegRex, 1
93 r10, Reg64|BaseIndex, RegRex, 2
94 r11, Reg64|BaseIndex, RegRex, 3
95 r12, Reg64|BaseIndex, RegRex, 4
96 r13, Reg64|BaseIndex, RegRex, 5
97 r14, Reg64|BaseIndex, RegRex, 6
98 r15, Reg64|BaseIndex, RegRex, 7
106 // Control registers.
115 cr8, Control, RegRex, 0
116 cr9, Control, RegRex, 1
117 cr10, Control, RegRex, 2
118 cr11, Control, RegRex, 3
119 cr12, Control, RegRex, 4
120 cr13, Control, RegRex, 5
121 cr14, Control, RegRex, 6
122 cr15, Control, RegRex, 7
132 db8, Debug, RegRex, 0
133 db9, Debug, RegRex, 1
134 db10, Debug, RegRex, 2
135 db11, Debug, RegRex, 3
136 db12, Debug, RegRex, 4
137 db13, Debug, RegRex, 5
138 db14, Debug, RegRex, 6
139 db15, Debug, RegRex, 7
148 dr8, Debug, RegRex, 0
149 dr9, Debug, RegRex, 1
150 dr10, Debug, RegRex, 2
151 dr11, Debug, RegRex, 3
152 dr12, Debug, RegRex, 4
153 dr13, Debug, RegRex, 5
154 dr14, Debug, RegRex, 6
155 dr15, Debug, RegRex, 7
165 // MMX and simd registers.
182 xmm8, RegXMM, RegRex, 0
183 xmm9, RegXMM, RegRex, 1
184 xmm10, RegXMM, RegRex, 2
185 xmm11, RegXMM, RegRex, 3
186 xmm12, RegXMM, RegRex, 4
187 xmm13, RegXMM, RegRex, 5
188 xmm14, RegXMM, RegRex, 6
189 xmm15, RegXMM, RegRex, 7
190 // No type will make this register rejected for all purposes except
191 // for addressing. This saves creating one extra type for RIP.
194 st(0), FloatReg|FloatAcc, 0, 0
195 st(1), FloatReg, 0, 1
196 st(2), FloatReg, 0, 2
197 st(3), FloatReg, 0, 3
198 st(4), FloatReg, 0, 4
199 st(5), FloatReg, 0, 5
200 st(6), FloatReg, 0, 6
201 st(7), FloatReg, 0, 7