OLD | NEW |
| (Empty) |
1 # Defines possible kinds of operands an opcode can have. | |
2 # Each line defines a separate operand kind. | |
3 | |
4 Unknown_Operand # Unknown operand. | |
5 | |
6 # Note: The instruction decoder may count on the fact that the A_operand | |
7 # values are contiguous, in the order specifed. | |
8 | |
9 # Models a 48-bit far pointer. | |
10 A_Operand | |
11 | |
12 # Note: The instruction decoder may count on the fact that the E_operand | |
13 # values are contiguous, in the order specified. | |
14 | |
15 # Models a general purpose register or memory operand. | |
16 # Size is defined by the computed operand size. | |
17 E_Operand | |
18 | |
19 # Models an 8-bit general-purpose register or memory | |
20 # operand. Intel's notation is r/m8. | |
21 Eb_Operand | |
22 | |
23 # Models a 16-bit general-purpose register or memory | |
24 # operand. Intel's notation is r/m16 | |
25 Ew_Operand | |
26 | |
27 # Models a 32-bit general-purpose register or memory | |
28 # operand. Intel's notation is r/m32. | |
29 Ev_Operand | |
30 | |
31 # Models a 64-bit general-purpose register or memory | |
32 # operand. Intel's notation is r/m64. | |
33 Eo_Operand | |
34 | |
35 # Models a 128-bit double-quadword register or memory | |
36 # operand. | |
37 Edq_Operand | |
38 | |
39 # Note: The instruction decoder may count on the fact that the G_Operand | |
40 # values are contiguous, in the order specified. | |
41 | |
42 # General purpose register specified by the ModRm reg field. | |
43 G_Operand | |
44 | |
45 # Models an 8-bit general purpose register or memory operand in | |
46 # in the Modrm byte. | |
47 # Intel's notation is r8. | |
48 Gb_Operand | |
49 | |
50 # Models a 16-bit general purpose register operand. | |
51 # Intel's notation is r16. | |
52 Gw_Operand | |
53 | |
54 # Models a 32-bit general-purpose register operand. | |
55 # Intel's notation is r32 | |
56 Gv_Operand | |
57 | |
58 # Models a 64 bit general-purpose register operand. | |
59 # Intel's notation is r64. | |
60 Go_Operand | |
61 | |
62 # Models a 128-bit general purpose register or memory operand. | |
63 Gdq_Operand | |
64 | |
65 # Models a G operand which is combined with a segment register to generate a seg
ment address | |
66 # The segment register used is based on the mnemonic name of the instruction. | |
67 Seg_G_Operand | |
68 | |
69 # Models registers using the difference in the opcode base, from the opcode | |
70 # value. | |
71 G_OpcodeBase | |
72 | |
73 # Note: The instruction decoder may count on the fact that the I_Operand | |
74 # values are contiguous, in the order specified. | |
75 | |
76 # Model an immediate value. Size is defined by the | |
77 # computed operand size. | |
78 I_Operand | |
79 | |
80 # An immediate 8-bit value. Intel's notation is imm8. | |
81 Ib_Operand | |
82 | |
83 # An immediate 16-bit value. Intel's notation is imm16. | |
84 Iw_Operand | |
85 | |
86 # An immediate 32-bit value. Intel's notation is imm32. | |
87 Iv_Operand | |
88 | |
89 # An immediate 64-bit value. Intel's notation is imm64. | |
90 Io_Operand | |
91 | |
92 # Model the 2n'd immediate value. Size defined by the OpcodeHasImmed2_x flag. | |
93 I2_Operand | |
94 | |
95 # Note: The instruction decoder may count on the fact that the J_Operand | |
96 # values are contiguous, in the order specified. | |
97 | |
98 # A relative address to branch to. Size is defined by | |
99 # the computed operand size. | |
100 J_Operand | |
101 | |
102 # A relative address (range 128 before, 127 after) the | |
103 # end of the instruction. Intel's notation is rel8. | |
104 Jb_Operand | |
105 | |
106 # A relative address that is 16 bits long (operand size). | |
107 # Intel's notation is rel16 | |
108 Jw_Operand | |
109 | |
110 # A relative address that is 32 bits long (operand size). | |
111 # Intel's notation is rel32. | |
112 Jv_Operand | |
113 | |
114 # Note: The instruction decoder may count on the fact that the M_Operand | |
115 # values are contiguous, in the order specified. | |
116 | |
117 # A 16, 32, or 64 bit operand in memory. ??? | |
118 # Intel's notation is m. Size is defined by the | |
119 # computed operand size. | |
120 M_Operand | |
121 | |
122 # A 8-bit operand in memory pointerd to by the DS:(E)Si or | |
123 # ES:(E)DI registers. In 64-bit mode, it is pointed to | |
124 # by the RSI or RDI registers. Intel's notation is m8. | |
125 Mb_Operand | |
126 | |
127 # A 16-bit operand in memory pointed to by the DS:(E)SI | |
128 # or ES:(E)DI registers. Intel's notation is m16. | |
129 Mw_Operand | |
130 | |
131 # A 32-bit operand in memory pointed to by the DS:(E)SI | |
132 # or ES:(E)DI registers. Intel's notation is m32. | |
133 Mv_Operand | |
134 | |
135 # A 64-bit operand in memory. Intel's notation is m64. | |
136 Mo_Operand | |
137 | |
138 # A 128-bit operand in memory. Intel's notation is m128. | |
139 # AMD's notation is Mdq. | |
140 # Note: Because the size is the same, Mdq_Operand is a synonym for Mpd_Operand | |
141 # and Mps_Operand. | |
142 Mdq_Operand | |
143 | |
144 # A memory operand containing a far pointer composed of | |
145 # a 16-bit selector and a 16 bit offset. Intel's notation | |
146 # is m16:16. | |
147 Mpw_Operand | |
148 | |
149 # A memory operand containing a far pointer composed of | |
150 # a 16 bit selector and a 32 bit offset. Intel's notation | |
151 # is m16:32. | |
152 Mpv_Operand | |
153 | |
154 # A memory operand containing a far pointer composed of | |
155 # a 16 bit selector and a 64 bit offset. Intel's notation | |
156 # is m16:64. | |
157 Mpo_Operand | |
158 | |
159 # Like E_Operand, but uses MMX registers instead. | |
160 Mmx_E_Operand | |
161 | |
162 # Pseudonym for Mxx_E_Operand that automatically adds | |
163 # OpFlag(ModRmModIs0x3). | |
164 Mmx_N_Operand | |
165 | |
166 # Like G_Operand, but uses MMX registers instead. | |
167 Mmx_G_Operand | |
168 | |
169 # Like Mmx_G_Operand, but size is always 32 bits. | |
170 Mmx_Gd_Operand | |
171 | |
172 # Like E_Operand, but uses XMM registers instead. | |
173 Xmm_E_Operand | |
174 | |
175 # A 64-bit Xmm value, as defined by Xmm_E_Operand | |
176 Xmm_Eo_Operand | |
177 | |
178 # Like G_Operand, but uses XMM registers instead. | |
179 Xmm_G_Operand | |
180 | |
181 # A 64-bit Xmm value, as defined by Xmm_G_operand. | |
182 Xmm_Go_Operand | |
183 | |
184 # Control register specified by the ModRm reg field. | |
185 C_Operand | |
186 | |
187 # Debug register specified by the ModRm reg field. | |
188 D_Operand | |
189 | |
190 # Note: The instruction decoder may count on the fact that the O_Operand | |
191 # values are contiguous, in the order specified. | |
192 | |
193 # A memory offset. Size is defined by the computed operand size. | |
194 O_Operand | |
195 | |
196 # A memory 8-bit offset. Intel's notation is moffs8. | |
197 Ob_Operand | |
198 | |
199 # A memory 16-bit offset. Intel's notation is moffs16. | |
200 Ow_Operand | |
201 | |
202 # A memory 32-bit offset. Intel's notation is moffs32. | |
203 Ov_Operand | |
204 | |
205 # A memory 64-bit offset. Intel's notation is moffs64. | |
206 Oo_Operand | |
207 | |
208 # A segment register. The segment register bit assignments | |
209 # are ES=0, CS=1, SS=2, DS=3, FS=4, GS=5. Intel's notation | |
210 # is Sreg. | |
211 S_Operand | |
212 | |
213 # A Floating point ST register enocoded in opcode byte. | |
214 St_Operand | |
215 | |
216 # Note: The instruction decoder may count on the fact that the list | |
217 # of register values are contiguous, in the order specified. | |
218 | |
219 # Unknown register - Used if actual register can't | |
220 # be determined by the instruction decoder. | |
221 RegUnknown | |
222 RegAL # 8-bit registers in 32-bit and 64-bit modes. | |
223 RegBL | |
224 RegCL | |
225 RegDL | |
226 | |
227 RegAH # Additional 8-bit regisister in 32-bit mode. | |
228 RegBH | |
229 RegCH | |
230 RegDH | |
231 | |
232 RegDIL # Additional 8-bit registers in 64-bit mode. | |
233 RegSIL | |
234 RegBPL | |
235 RegSPL | |
236 # Note: Intel manual claims that r8l..r15l should be used. However, AMD | |
237 # manual and (xed from Intel) uses r8b..r15b. Therefore we will use the | |
238 # latter. | |
239 RegR8B | |
240 RegR9B | |
241 RegR10B | |
242 RegR11B | |
243 RegR12B | |
244 RegR13B | |
245 RegR14B | |
246 RegR15B | |
247 | |
248 RegAX # 16 bit registers in 32-bit and 64-bit modes. | |
249 RegBX | |
250 RegCX | |
251 RegDX | |
252 RegSI | |
253 RegDI | |
254 RegBP | |
255 RegSP | |
256 | |
257 RegR8W # 16 bit registers only in 64-bit mode. | |
258 RegR9W | |
259 RegR10W | |
260 RegR11W | |
261 RegR12W | |
262 RegR13W | |
263 RegR14W | |
264 RegR15W | |
265 | |
266 RegEAX # General 32-bit registers in 32-bit and 64-bit modes. | |
267 RegEBX | |
268 RegECX | |
269 RegEDX | |
270 RegESI | |
271 RegEDI | |
272 RegEBP | |
273 RegESP | |
274 | |
275 RegR8D # Additional 32-bit registers in 64-bit mode. | |
276 RegR9D | |
277 RegR10D | |
278 RegR11D | |
279 RegR12D | |
280 RegR13D | |
281 RegR14D | |
282 RegR15D | |
283 | |
284 RegCS # 16-bit segment registers in 32-bit and 64-bit modes. | |
285 RegDS | |
286 RegSS | |
287 RegES | |
288 RegFS | |
289 RegGS | |
290 | |
291 RegCR0 # Control registers in 32-bit and 64-bit modes. | |
292 RegCR1 | |
293 RegCR2 | |
294 RegCR3 | |
295 RegCR4 | |
296 RegCR5 | |
297 RegCR6 | |
298 RegCR7 | |
299 RegCR8 | |
300 RegCR9 | |
301 RegCR10 | |
302 RegCR11 | |
303 RegCR12 | |
304 RegCR13 | |
305 RegCR14 | |
306 RegCR15 | |
307 | |
308 RegDR0 # Debug registers in 32-bit and 64-bit modes. | |
309 RegDR1 | |
310 RegDR2 | |
311 RegDR3 | |
312 RegDR4 | |
313 RegDR5 | |
314 RegDR6 | |
315 RegDR7 | |
316 RegDR8 | |
317 RegDR9 | |
318 RegDR10 | |
319 RegDR11 | |
320 RegDR12 | |
321 RegDR13 | |
322 RegDR14 | |
323 RegDR15 | |
324 | |
325 RegEFLAGS # Program status and control register in 32-bit mode. | |
326 RegRFLAGS # Program status and control register in 64-bit mode. | |
327 | |
328 RegEIP # Instruction pointer in 32-bit mode. | |
329 RegRIP # Instruction pointer in 64-bit mode. | |
330 | |
331 RegRAX # General purpose 64-bit registers in 64-bit mode. | |
332 RegRBX | |
333 RegRCX | |
334 RegRDX | |
335 RegRSI | |
336 RegRDI | |
337 RegRBP | |
338 RegRSP | |
339 RegR8 | |
340 RegR9 | |
341 RegR10 | |
342 RegR11 | |
343 RegR12 | |
344 RegR13 | |
345 RegR14 | |
346 RegR15 | |
347 | |
348 # Use EIP or RIP, based on address size - EIP in 32-bits, RIP in 64-bits. | |
349 RegREIP | |
350 | |
351 # The following define the choice of register, based on operand size, as in the | |
352 # following table: | |
353 # Entry 16 bits 32 bits 64 bits | |
354 # ------------------------------------- | |
355 # REAX AX EAX RAX | |
356 # REBX BX EBX RBX | |
357 # RECX CX ECX RCX | |
358 # REDX DX EDX RDX | |
359 # RESP SP ESP RSP | |
360 # REBP BP EBP RSP | |
361 # RESI SI ESI RSI | |
362 # REDI DI EDI RDI | |
363 RegREAX | |
364 RegREBX | |
365 RegRECX | |
366 RegREDX | |
367 RegRESP | |
368 RegREBP | |
369 RegRESI | |
370 RegREDI | |
371 | |
372 # The following define the choice of register, based on address size, as in the | |
373 # following table: | |
374 # Entry 16 bits 32 bits 64 bits | |
375 # ------------------------------------- | |
376 # REAXa AX EAX RAX | |
377 RegREAXa | |
378 | |
379 # Use DS:(R,E)SI, like that specified in movsb, movsw, and movsd, and movsq | |
380 # instructions. | |
381 RegDS_ESI | |
382 # Use DS:(R,E)DI, like that specified in maskmovq and maskmovdqu instructions. | |
383 RegDS_EDI | |
384 # Use ES:(R,E)DI, like that specified in the insb, insw, and insd instructions. | |
385 RegES_EDI | |
386 # Use DS:(R,E)BX, like that specified in the xlat instruction. | |
387 RegDS_EBX, | |
388 | |
389 # Floating point stack registers. | |
390 RegST0 | |
391 RegST1 | |
392 RegST2 | |
393 RegST3 | |
394 RegST4 | |
395 RegST5 | |
396 RegST6 | |
397 RegST7 | |
398 | |
399 # MMX registers. | |
400 RegMMX0 | |
401 RegMMX1 | |
402 RegMMX2 | |
403 RegMMX3 | |
404 RegMMX4 | |
405 RegMMX5 | |
406 RegMMX6 | |
407 RegMMX7 | |
408 | |
409 # XMM registers. | |
410 RegXMM0 | |
411 RegXMM1 | |
412 RegXMM2 | |
413 RegXMM3 | |
414 RegXMM4 | |
415 RegXMM5 | |
416 RegXMM6 | |
417 RegXMM7 | |
418 RegXMM8 | |
419 RegXMM9 | |
420 RegXMM10 | |
421 RegXMM11 | |
422 RegXMM12 | |
423 RegXMM13 | |
424 RegXMM14 | |
425 RegXMM15 | |
426 | |
427 # One of the eight general purpose registers, less the stack pointer, based | |
428 # on operand size. | |
429 RegGP7 | |
430 | |
431 # Predefined constants. | |
432 Const_1 | |
OLD | NEW |