1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 package x86
32
33 import (
34 "cmd/internal/obj"
35 "fmt"
36 )
37
38 var Register = []string{
39 "AL",
40 "CL",
41 "DL",
42 "BL",
43 "SPB",
44 "BPB",
45 "SIB",
46 "DIB",
47 "R8B",
48 "R9B",
49 "R10B",
50 "R11B",
51 "R12B",
52 "R13B",
53 "R14B",
54 "R15B",
55 "AX",
56 "CX",
57 "DX",
58 "BX",
59 "SP",
60 "BP",
61 "SI",
62 "DI",
63 "R8",
64 "R9",
65 "R10",
66 "R11",
67 "R12",
68 "R13",
69 "R14",
70 "R15",
71 "AH",
72 "CH",
73 "DH",
74 "BH",
75 "F0",
76 "F1",
77 "F2",
78 "F3",
79 "F4",
80 "F5",
81 "F6",
82 "F7",
83 "M0",
84 "M1",
85 "M2",
86 "M3",
87 "M4",
88 "M5",
89 "M6",
90 "M7",
91 "K0",
92 "K1",
93 "K2",
94 "K3",
95 "K4",
96 "K5",
97 "K6",
98 "K7",
99 "X0",
100 "X1",
101 "X2",
102 "X3",
103 "X4",
104 "X5",
105 "X6",
106 "X7",
107 "X8",
108 "X9",
109 "X10",
110 "X11",
111 "X12",
112 "X13",
113 "X14",
114 "X15",
115 "X16",
116 "X17",
117 "X18",
118 "X19",
119 "X20",
120 "X21",
121 "X22",
122 "X23",
123 "X24",
124 "X25",
125 "X26",
126 "X27",
127 "X28",
128 "X29",
129 "X30",
130 "X31",
131 "Y0",
132 "Y1",
133 "Y2",
134 "Y3",
135 "Y4",
136 "Y5",
137 "Y6",
138 "Y7",
139 "Y8",
140 "Y9",
141 "Y10",
142 "Y11",
143 "Y12",
144 "Y13",
145 "Y14",
146 "Y15",
147 "Y16",
148 "Y17",
149 "Y18",
150 "Y19",
151 "Y20",
152 "Y21",
153 "Y22",
154 "Y23",
155 "Y24",
156 "Y25",
157 "Y26",
158 "Y27",
159 "Y28",
160 "Y29",
161 "Y30",
162 "Y31",
163 "Z0",
164 "Z1",
165 "Z2",
166 "Z3",
167 "Z4",
168 "Z5",
169 "Z6",
170 "Z7",
171 "Z8",
172 "Z9",
173 "Z10",
174 "Z11",
175 "Z12",
176 "Z13",
177 "Z14",
178 "Z15",
179 "Z16",
180 "Z17",
181 "Z18",
182 "Z19",
183 "Z20",
184 "Z21",
185 "Z22",
186 "Z23",
187 "Z24",
188 "Z25",
189 "Z26",
190 "Z27",
191 "Z28",
192 "Z29",
193 "Z30",
194 "Z31",
195 "CS",
196 "SS",
197 "DS",
198 "ES",
199 "FS",
200 "GS",
201 "GDTR",
202 "IDTR",
203 "LDTR",
204 "MSW",
205 "TASK",
206 "CR0",
207 "CR1",
208 "CR2",
209 "CR3",
210 "CR4",
211 "CR5",
212 "CR6",
213 "CR7",
214 "CR8",
215 "CR9",
216 "CR10",
217 "CR11",
218 "CR12",
219 "CR13",
220 "CR14",
221 "CR15",
222 "DR0",
223 "DR1",
224 "DR2",
225 "DR3",
226 "DR4",
227 "DR5",
228 "DR6",
229 "DR7",
230 "TR0",
231 "TR1",
232 "TR2",
233 "TR3",
234 "TR4",
235 "TR5",
236 "TR6",
237 "TR7",
238 "TLS",
239 "MAXREG",
240 }
241
242 func init() {
243 obj.RegisterRegister(REG_AL, REG_AL+len(Register), rconv)
244 obj.RegisterOpcode(obj.ABaseAMD64, Anames)
245 obj.RegisterRegisterList(obj.RegListX86Lo, obj.RegListX86Hi, rlconv)
246 obj.RegisterOpSuffix("386", opSuffixString)
247 obj.RegisterOpSuffix("amd64", opSuffixString)
248 }
249
250 func rconv(r int) string {
251 if REG_AL <= r && r-REG_AL < len(Register) {
252 return Register[r-REG_AL]
253 }
254 return fmt.Sprintf("Rgok(%d)", r-obj.RBaseAMD64)
255 }
256
257 func rlconv(bits int64) string {
258 reg0, reg1 := decodeRegisterRange(bits)
259 return fmt.Sprintf("[%s-%s]", rconv(reg0), rconv(reg1))
260 }
261
262 func opSuffixString(s uint8) string {
263 return "." + opSuffix(s).String()
264 }
265
View as plain text