VirtualBox

source: vbox/trunk/include/VBox/disopcode.h@ 60562

Last change on this file since 60562 was 55111, checked in by vboxsync, 10 years ago

Disassembler: added AMD-V vmmcall.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 21.1 KB
Line 
1/** @file
2 * Disassembler - Opcodes
3 */
4
5/*
6 * Copyright (C) 2006-2015 Oracle Corporation
7 *
8 * This file is part of VirtualBox Open Source Edition (OSE), as
9 * available from http://www.virtualbox.org. This file is free software;
10 * you can redistribute it and/or modify it under the terms of the GNU
11 * General Public License (GPL) as published by the Free Software
12 * Foundation, in version 2 as it comes in the "COPYING" file of the
13 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
15 *
16 * The contents of this file may alternatively be used under the terms
17 * of the Common Development and Distribution License Version 1.0
18 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
19 * VirtualBox OSE distribution, in which case the provisions of the
20 * CDDL are applicable instead of those of the GPL.
21 *
22 * You may elect to license modified versions of this file under the
23 * terms and conditions of either the GPL or the CDDL or both.
24 */
25
26#ifndef ___VBox_disopcode_h
27#define ___VBox_disopcode_h
28
29#define MODRM_MOD(a) (a>>6)
30#define MODRM_REG(a) ((a>>3)&0x7)
31#define MODRM_RM(a) (a&0x7)
32#define MAKE_MODRM(mod, reg, rm) (((mod&3) << 6) | ((reg&7) << 3) | (rm&7))
33
34#define SIB_SCALE(a) (a>>6)
35#define SIB_INDEX(a) ((a>>3)&0x7)
36#define SIB_BASE(a) (a&0x7)
37
38
39/** @defgroup grp_dis_opcodes Opcodes (DISOPCODE::uOpCode)
40 * @ingroup grp_dis
41 * @{
42 */
43enum OPCODES
44{
45/** @name Full Intel X86 opcode list
46 * @{ */
47 OP_INVALID = 0,
48 OP_OPSIZE,
49 OP_ADDRSIZE,
50 OP_SEG,
51 OP_REPNE,
52 OP_REPE,
53 OP_REX,
54 OP_LOCK,
55 OP_LAST_PREFIX = OP_LOCK, /**< Last prefix for disassembler. */
56 OP_AND,
57 OP_OR,
58 OP_DAA,
59 OP_SUB,
60 OP_DAS,
61 OP_XOR,
62 OP_AAA,
63 OP_CMP,
64 OP_IMM_GRP1,
65 OP_AAS,
66 OP_INC,
67 OP_DEC,
68 OP_PUSHA,
69 OP_POPA,
70 OP_BOUND,
71 OP_ARPL,
72 OP_PUSH,
73 OP_POP,
74 OP_IMUL,
75 OP_INSB,
76 OP_INSWD,
77 OP_OUTSB,
78 OP_OUTSWD,
79 OP_JO,
80 OP_JNO,
81 OP_JC,
82 OP_JNC,
83 OP_JE,
84 OP_JNE,
85 OP_JBE,
86 OP_JNBE,
87 OP_JS,
88 OP_JNS,
89 OP_JP,
90 OP_JNP,
91 OP_JL,
92 OP_JNL,
93 OP_JLE,
94 OP_JNLE,
95 OP_ADD,
96 OP_TEST,
97 OP_XCHG,
98 OP_MOV,
99 OP_LEA,
100 OP_NOP,
101 OP_CBW,
102 OP_CWD,
103 OP_CALL,
104 OP_WAIT,
105 OP_PUSHF,
106 OP_POPF,
107 OP_SAHF,
108 OP_LAHF,
109 OP_MOVSB,
110 OP_MOVSWD,
111 OP_CMPSB,
112 OP_CMPWD,
113 OP_STOSB,
114 OP_STOSWD,
115 OP_LODSB,
116 OP_LODSWD,
117 OP_SCASB,
118 OP_SCASWD,
119 OP_SHIFT_GRP2,
120 OP_RETN,
121 OP_LES,
122 OP_LDS,
123 OP_ENTER,
124 OP_LEAVE,
125 OP_RETF,
126 OP_INT3,
127 OP_INT,
128 OP_INTO,
129 OP_IRET,
130 OP_AAM,
131 OP_AAD,
132 OP_XLAT,
133 OP_ESCF0,
134 OP_ESCF1,
135 OP_ESCF2,
136 OP_ESCF3,
137 OP_ESCF4,
138 OP_ESCF5,
139 OP_ESCF6,
140 OP_ESCF7,
141 OP_LOOPNE,
142 OP_LOOPE,
143 OP_LOOP,
144 OP_JECXZ,
145 OP_IN,
146 OP_OUT,
147 OP_JMP,
148 OP_2B_ESC,
149 OP_ADC,
150 OP_SBB,
151 OP_HLT,
152 OP_CMC,
153 OP_UNARY_GRP3,
154 OP_CLC,
155 OP_STC,
156 OP_CLI,
157 OP_STI,
158 OP_CLD,
159 OP_STD,
160 OP_INC_GRP4,
161 OP_IND_GRP5,
162 OP_GRP6,
163 OP_GRP7,
164 OP_LAR,
165 OP_LSL,
166 OP_SYSCALL,
167 OP_CLTS,
168 OP_SYSRET,
169 OP_INVD,
170 OP_WBINVD,
171 OP_ILLUD2,
172 OP_FEMMS,
173 OP_3DNOW,
174 OP_MOVUPS,
175 OP_MOVLPS,
176 OP_UNPCKLPS,
177 OP_MOVHPS,
178 OP_UNPCKHPS,
179 OP_PREFETCH_GRP16,
180 OP_MOV_CR,
181 OP_MOVAPS,
182 OP_CVTPI2PS,
183 OP_MOVNTPS,
184 OP_CVTTPS2PI,
185 OP_CVTPS2PI,
186 OP_UCOMISS,
187 OP_COMISS,
188 OP_WRMSR,
189 OP_RDTSC,
190 OP_RDMSR,
191 OP_RDPMC,
192 OP_SYSENTER,
193 OP_SYSEXIT,
194 OP_GETSEC,
195 OP_PAUSE,
196 OP_CMOVO,
197 OP_CMOVNO,
198 OP_CMOVC,
199 OP_CMOVNC,
200 OP_CMOVZ,
201 OP_CMOVNZ,
202 OP_CMOVBE,
203 OP_CMOVNBE,
204 OP_CMOVS,
205 OP_CMOVNS,
206 OP_CMOVP,
207 OP_CMOVNP,
208 OP_CMOVL,
209 OP_CMOVNL,
210 OP_CMOVLE,
211 OP_CMOVNLE,
212 OP_MOVMSKPS,
213 OP_SQRTPS,
214 OP_RSQRTPS,
215 OP_RCPPS,
216 OP_ANDPS,
217 OP_ANDNPS,
218 OP_ORPS,
219 OP_XORPS,
220 OP_ADDPS,
221 OP_MULPS,
222 OP_CVTPS2PD,
223 OP_CVTDQ2PS,
224 OP_SUBPS,
225 OP_MINPS,
226 OP_DIVPS,
227 OP_MAXPS,
228 OP_PUNPCKLBW,
229 OP_PUNPCKLWD,
230 OP_PUNPCKLDQ,
231 OP_PACKSSWB,
232 OP_PCMPGTB,
233 OP_PCMPGTW,
234 OP_PCMPGTD,
235 OP_PCMPGTQ,
236 OP_PACKUSWB,
237 OP_PUNPCKHBW,
238 OP_PUNPCKHWD,
239 OP_PUNPCKHDQ,
240 OP_PACKSSDW,
241 OP_MOVD,
242 OP_MOVQ,
243 OP_PSHUFW,
244 OP_3B_ESC4,
245 OP_3B_ESC5,
246 OP_PCMPEQB,
247 OP_PCMPEQW,
248 OP_PCMPEQD,
249 OP_PCMPEQQ,
250 OP_SETO,
251 OP_SETNO,
252 OP_SETC,
253 OP_SETNC,
254 OP_SETE,
255 OP_SETNE,
256 OP_SETBE,
257 OP_SETNBE,
258 OP_SETS,
259 OP_SETNS,
260 OP_SETP,
261 OP_SETNP,
262 OP_SETL,
263 OP_SETNL,
264 OP_SETLE,
265 OP_SETNLE,
266 OP_CPUID,
267 OP_BT,
268 OP_SHLD,
269 OP_RSM,
270 OP_BTS,
271 OP_SHRD,
272 OP_GRP15,
273 OP_CMPXCHG,
274 OP_LSS,
275 OP_BTR,
276 OP_LFS,
277 OP_LGS,
278 OP_MOVZX,
279 OP_GRP10_INV,
280 OP_GRP8,
281 OP_BTC,
282 OP_BSF,
283 OP_BSR,
284 OP_MOVSX,
285 OP_XADD,
286 OP_CMPPS,
287 OP_MOVNTI,
288 OP_PINSRW,
289 OP_PEXTRW,
290 OP_SHUFPS,
291 OP_GRP9,
292 OP_BSWAP,
293 OP_ADDSUBPS,
294 OP_ADDSUBPD,
295 OP_PSRLW,
296 OP_PSRLD,
297 OP_PSRLQ,
298 OP_PADDQ,
299 OP_PMULLW,
300 OP_PMOVMSKB,
301 OP_PSUBUSB,
302 OP_PSUBUSW,
303 OP_PMINUB,
304 OP_PAND,
305 OP_PADDUSB,
306 OP_PADDUSW,
307 OP_PMAXUB,
308 OP_PANDN,
309 OP_PAVGB,
310 OP_PSRAW,
311 OP_PSRAD,
312 OP_PAVGW,
313 OP_PMULHUW,
314 OP_PMULHW,
315 OP_MOVNTQ,
316 OP_PSUBSB,
317 OP_PSUBSW,
318 OP_PMINSW,
319 OP_POR,
320 OP_PADDSB,
321 OP_PADDSW,
322 OP_PMAXSW,
323 OP_PXOR,
324 OP_LDDQU,
325 OP_PSLLW,
326 OP_PSLLD,
327 OP_PSSQ,
328 OP_PMULUDQ,
329 OP_PMADDWD,
330 OP_PSADBW,
331 OP_MASKMOVQ,
332 OP_PSUBB,
333 OP_PSUBW,
334 OP_PSUBD,
335 OP_PSUBQ,
336 OP_PADDB,
337 OP_PADDW,
338 OP_PADDD,
339 OP_MOVUPD,
340 OP_MOVLPD,
341 OP_UNPCKLPD,
342 OP_UNPCKHPD,
343 OP_MOVHPD,
344 OP_MOVAPD,
345 OP_CVTPI2PD,
346 OP_MOVNTPD,
347 OP_CVTTPD2PI,
348 OP_CVTPD2PI,
349 OP_UCOMISD,
350 OP_COMISD,
351 OP_MOVMSKPD,
352 OP_SQRTPD,
353 OP_ANDPD,
354 OP_ANDNPD,
355 OP_ORPD,
356 OP_XORPD,
357 OP_ADDPD,
358 OP_MULPD,
359 OP_CVTPD2PS,
360 OP_CVTPS2DQ,
361 OP_SUBPD,
362 OP_MINPD,
363 OP_DIVPD,
364 OP_MAXPD,
365 OP_GRP12,
366 OP_GRP13,
367 OP_GRP14,
368 OP_EMMS,
369 OP_MMX_UD78,
370 OP_MMX_UD79,
371 OP_MMX_UD7A,
372 OP_MMX_UD7B,
373 OP_MMX_UD7C,
374 OP_MMX_UD7D,
375 OP_PUNPCKLQDQ,
376 OP_PUNPCKHQDQ,
377 OP_MOVDQA,
378 OP_PSHUFD,
379 OP_CMPPD,
380 OP_SHUFPD,
381 OP_CVTTPD2DQ,
382 OP_MOVNTDQ,
383 OP_MOVNTDQA,
384 OP_PACKUSDW,
385 OP_PSHUFB,
386 OP_PHADDW,
387 OP_PHADDD,
388 OP_PHADDSW,
389 OP_HADDPS,
390 OP_HADDPD,
391 OP_PMADDUBSW,
392 OP_PHSUBW,
393 OP_PHSUBD,
394 OP_PHSUBSW,
395 OP_HSUBPS,
396 OP_HSUBPD,
397 OP_PSIGNB,
398 OP_PSIGNW,
399 OP_PSIGND,
400 OP_PMULHRSW,
401 OP_PERMILPS,
402 OP_PERMILPD,
403 OP_TESTPS,
404 OP_TESTPD,
405 OP_PBLENDVB,
406 OP_CVTPH2PS,
407 OP_BLENDVPS,
408 OP_BLENDVPD,
409 OP_PERMPS,
410 OP_PERMD,
411 OP_PTEST,
412 OP_BROADCASTSS,
413 OP_BROADCASTSD,
414 OP_BROADCASTF128,
415 OP_PABSB,
416 OP_PABSW,
417 OP_PABSD,
418 OP_PMOVSX,
419 OP_PMOVZX,
420 OP_PMULDQ,
421 OP_PMINSB,
422 OP_PMINSD,
423 OP_PMINUW,
424 OP_PMINUD,
425 OP_PMAXSB,
426 OP_PMAXSD,
427 OP_PMAXUW,
428 OP_PMAXUD,
429 OP_PMULLD,
430 OP_PHMINPOSUW,
431 OP_PSRLVD,
432 OP_PSRAVD,
433 OP_PSLLVD,
434 OP_PBROADCASTD,
435 OP_PBROADCASTQ,
436 OP_PBROADCASTI128,
437 OP_PBROADCASTB,
438 OP_PBROADCASTW,
439 OP_PMASKMOVD,
440 OP_GATHER,
441 OP_FMADDSUB132PS,
442 OP_FMSUBADD132PS,
443 OP_FMADD132PS,
444 OP_FMADD132SS,
445 OP_FMSUB132PS,
446 OP_FMSUB132SS,
447 OP_FNMADD132PS,
448 OP_FNMADD132SS,
449 OP_FNMSUB132PS,
450 OP_FNMSUB132SS,
451 OP_FMADDSUB213PS,
452 OP_FMSUBADD213PS,
453 OP_FMADD213PS,
454 OP_FMADD213SS,
455 OP_FMSUB213PS,
456 OP_FMSUB213SS,
457 OP_FNMADD213PS,
458 OP_FNMADD213SS,
459 OP_FNMSUB213PS,
460 OP_FNMSUB213SS,
461 OP_FMADDSUB231PS,
462 OP_FMSUBADD231PS,
463 OP_FMADD231PS,
464 OP_FMADD231SS,
465 OP_FMSUB231PS,
466 OP_FMSUB231SS,
467 OP_FNMADD231PS,
468 OP_FNMADD231SS,
469 OP_FNMSUB231PS,
470 OP_FNMSUB231SS,
471 OP_AESIMC,
472 OP_AESENC,
473 OP_AESENCLAST,
474 OP_AESDEC,
475 OP_AESDECLAST,
476 OP_MOVBEGM,
477 OP_MOVBEMG,
478 OP_CRC32GDEB,
479 OP_CRC32GDEY,
480 OP_POPCNT,
481 OP_TZCNT,
482 OP_LZCNT,
483 OP_ADCX,
484 OP_ADOX,
485 OP_ANDN,
486 OP_BZHI,
487 OP_BEXTR,
488 OP_PEXT,
489 OP_SARX,
490 OP_PDEP,
491 OP_SHRX,
492 OP_MULX,
493 OP_MASKMOVDQU,
494 OP_MASKMOVPS,
495 OP_MASKMOVPD,
496 OP_MOVSD,
497 OP_CVTSI2SD,
498 OP_CVTTSD2SI,
499 OP_CVTSD2SI,
500 OP_SQRTSD,
501 OP_ADDSD,
502 OP_MULSD,
503 OP_CVTSD2SS,
504 OP_SUBSD,
505 OP_MINSD,
506 OP_DIVSD,
507 OP_MAXSD,
508 OP_PSHUFLW,
509 OP_CMPSD,
510 OP_MOVDQ2Q,
511 OP_CVTPD2DQ,
512 OP_MOVSS,
513 OP_MOVSLDUP,
514 OP_MOVDDUP,
515 OP_MOVSHDUP,
516 OP_CVTSI2SS,
517 OP_CVTTSS2SI,
518 OP_CVTSS2SI,
519 OP_CVTSS2SD,
520 OP_SQRTSS,
521 OP_RSQRTSS,
522 OP_RCPSS,
523 OP_ADDSS,
524 OP_MULSS,
525 OP_CVTTPS2DQ,
526 OP_SUBSS,
527 OP_MINSS,
528 OP_DIVSS,
529 OP_MAXSS,
530 OP_MOVDQU,
531 OP_PSHUFHW,
532 OP_CMPSS,
533 OP_MOVQ2DQ,
534 OP_CVTDQ2PD,
535 OP_PERMQ,
536 OP_PERMPD,
537 OP_PBLENDD,
538 OP_PERM2F128,
539 OP_ROUNDPS,
540 OP_ROUNDPD,
541 OP_ROUNDSS,
542 OP_ROUNDSD,
543 OP_BLENDPS,
544 OP_BLENDPD,
545 OP_PBLENDW,
546 OP_PALIGNR,
547 OP_PEXTRB,
548 OP_PEXTRD,
549 OP_EXTRACTPS,
550 OP_INSERTF128,
551 OP_EXTRACTF128,
552 OP_CVTPS2PH,
553 OP_PINSRB,
554 OP_PINSRD,
555 OP_INSERTPS,
556 OP_INSERTI128,
557 OP_EXTRACTI128,
558 OP_DPPS,
559 OP_DPPD,
560 OP_MPSADBW,
561 OP_PCLMULQDQ,
562 OP_PERM2I128,
563 OP_PCMPESTRM,
564 OP_PCMPESTRI,
565 OP_PCMPISTRM,
566 OP_PCMPISTRI,
567 OP_AESKEYGEN,
568 OP_RORX,
569 OP_VEX3B,
570 OP_VEX2B,
571/** @} */
572
573/** @name Floating point ops
574 * @{ */
575 OP_FADD,
576 OP_FMUL,
577 OP_FCOM,
578 OP_FCOMP,
579 OP_FSUB,
580 OP_FSUBR,
581 OP_FDIV,
582 OP_FDIVR,
583 OP_FLD,
584 OP_FST,
585 OP_FSTP,
586 OP_FLDENV,
587 OP_FSTENV,
588 OP_FSTCW,
589 OP_FXCH,
590 OP_FNOP,
591 OP_FCHS,
592 OP_FABS,
593 OP_FLD1,
594 OP_FLDL2T,
595 OP_FLDL2E,
596 OP_FLDPI,
597 OP_FLDLG2,
598 OP_FLDLN2,
599 OP_FLDZ,
600 OP_F2XM1,
601 OP_FYL2X,
602 OP_FPTAN,
603 OP_FPATAN,
604 OP_FXTRACT,
605 OP_FREM1,
606 OP_FDECSTP,
607 OP_FINCSTP,
608 OP_FPREM,
609 OP_FYL2XP1,
610 OP_FSQRT,
611 OP_FSINCOS,
612 OP_FRNDINT,
613 OP_FSCALE,
614 OP_FSIN,
615 OP_FCOS,
616 OP_FIADD,
617 OP_FIMUL,
618 OP_FISUB,
619 OP_FISUBR,
620 OP_FIDIV,
621 OP_FIDIVR,
622 OP_FCMOVB,
623 OP_FCMOVE,
624 OP_FCMOVBE,
625 OP_FCMOVU,
626 OP_FUCOMPP,
627 OP_FILD,
628 OP_FIST,
629 OP_FISTP,
630 OP_FCMOVNB,
631 OP_FCMOVNE,
632 OP_FCMOVNBE,
633 OP_FCMOVNU,
634 OP_FCLEX,
635 OP_FINIT,
636 OP_FUCOMI,
637 OP_FCOMI,
638 OP_FRSTOR,
639 OP_FSAVE,
640 OP_FNSTSW,
641 OP_FFREE,
642 OP_FUCOM,
643 OP_FUCOMP,
644 OP_FICOM,
645 OP_FICOMP,
646 OP_FADDP,
647 OP_FMULP,
648 OP_FCOMPP,
649 OP_FSUBRP,
650 OP_FSUBP,
651 OP_FDIVRP,
652 OP_FDIVP,
653 OP_FBLD,
654 OP_FBSTP,
655 OP_FCOMIP,
656 OP_FUCOMIP,
657/** @} */
658
659/** @name 3DNow!
660 * @{ */
661 OP_PI2FW,
662 OP_PI2FD,
663 OP_PF2IW,
664 OP_PF2ID,
665 OP_PFPNACC,
666 OP_PFCMPGE,
667 OP_PFMIN,
668 OP_PFRCP,
669 OP_PFRSQRT,
670 OP_PFSUB,
671 OP_PFADD,
672 OP_PFCMPGT,
673 OP_PFMAX,
674 OP_PFRCPIT1,
675 OP_PFRSQRTIT1,
676 OP_PFSUBR,
677 OP_PFACC,
678 OP_PFCMPEQ,
679 OP_PFMUL,
680 OP_PFRCPIT2,
681 OP_PFMULHRW,
682 OP_PFSWAPD,
683 OP_PAVGUSB,
684 OP_PFNACC,
685 OP_ROL,
686 OP_ROR,
687 OP_RCL,
688 OP_RCR,
689 OP_SHL,
690 OP_SHR,
691 OP_SAR,
692 OP_NOT,
693 OP_NEG,
694 OP_MUL,
695 OP_DIV,
696 OP_IDIV,
697 OP_SLDT,
698 OP_STR,
699 OP_LLDT,
700 OP_LTR,
701 OP_VERR,
702 OP_VERW,
703 OP_SGDT,
704 OP_LGDT,
705 OP_SIDT,
706 OP_LIDT,
707 OP_SMSW,
708 OP_LMSW,
709 OP_INVLPG,
710 OP_CMPXCHG8B,
711 OP_PSLLQ,
712 OP_PSRLDQ,
713 OP_PSLLDQ,
714 OP_FXSAVE,
715 OP_FXRSTOR,
716 OP_LDMXCSR,
717 OP_STMXCSR,
718 OP_LFENCE,
719 OP_MFENCE,
720 OP_SFENCE,
721 OP_PREFETCH,
722 OP_MONITOR,
723 OP_MWAIT,
724 OP_CLFLUSH,
725 OP_MOV_DR,
726 OP_MOV_TR,
727 OP_SWAPGS,
728/** @} */
729/** @name VT-x instructions
730* @{ */
731 OP_VMREAD,
732 OP_VMWRITE,
733 OP_VMCALL,
734 OP_VMXON,
735 OP_VMXOFF,
736 OP_VMCLEAR,
737 OP_VMLAUNCH,
738 OP_VMRESUME,
739 OP_VMPTRLD,
740 OP_VMPTRST,
741 OP_INVEPT,
742 OP_INVVPID,
743 OP_INVPCID,
744 OP_VMFUNC,
745/** @} */
746/** @name AMD-V instructions
747 * @{ */
748 OP_VMMCALL,
749 OP_VMRUN,
750 OP_VMLOAD,
751 OP_VMSAVE,
752 OP_CLGI,
753 OP_STGI,
754 OP_INVLPGA,
755 OP_SKINIT,
756/** @} */
757/** @name 64 bits instruction
758 * @{ */
759 OP_MOVSXD
760/** @} */
761};
762/** @} */
763
764
765/** @defgroup grp_dis_opparam Opcode parameters (DISOPCODE::fParam1,
766 * DISOPCODE::fParam2, DISOPCODE::fParam3)
767 * @ingroup grp_dis
768 * @{
769 */
770
771/**
772 * @remarks Register order is important for translations!!
773 */
774enum OP_PARM
775{
776 OP_PARM_NONE,
777
778 OP_PARM_REG_EAX,
779 OP_PARM_REG_GEN32_START = OP_PARM_REG_EAX,
780 OP_PARM_REG_ECX,
781 OP_PARM_REG_EDX,
782 OP_PARM_REG_EBX,
783 OP_PARM_REG_ESP,
784 OP_PARM_REG_EBP,
785 OP_PARM_REG_ESI,
786 OP_PARM_REG_EDI,
787 OP_PARM_REG_GEN32_END = OP_PARM_REG_EDI,
788
789 OP_PARM_REG_ES,
790 OP_PARM_REG_SEG_START = OP_PARM_REG_ES,
791 OP_PARM_REG_CS,
792 OP_PARM_REG_SS,
793 OP_PARM_REG_DS,
794 OP_PARM_REG_FS,
795 OP_PARM_REG_GS,
796 OP_PARM_REG_SEG_END = OP_PARM_REG_GS,
797
798 OP_PARM_REG_AX,
799 OP_PARM_REG_GEN16_START = OP_PARM_REG_AX,
800 OP_PARM_REG_CX,
801 OP_PARM_REG_DX,
802 OP_PARM_REG_BX,
803 OP_PARM_REG_SP,
804 OP_PARM_REG_BP,
805 OP_PARM_REG_SI,
806 OP_PARM_REG_DI,
807 OP_PARM_REG_GEN16_END = OP_PARM_REG_DI,
808
809 OP_PARM_REG_AL,
810 OP_PARM_REG_GEN8_START = OP_PARM_REG_AL,
811 OP_PARM_REG_CL,
812 OP_PARM_REG_DL,
813 OP_PARM_REG_BL,
814 OP_PARM_REG_AH,
815 OP_PARM_REG_CH,
816 OP_PARM_REG_DH,
817 OP_PARM_REG_BH,
818 OP_PARM_REG_GEN8_END = OP_PARM_REG_BH,
819
820 OP_PARM_REGFP_0,
821 OP_PARM_REG_FP_START = OP_PARM_REGFP_0,
822 OP_PARM_REGFP_1,
823 OP_PARM_REGFP_2,
824 OP_PARM_REGFP_3,
825 OP_PARM_REGFP_4,
826 OP_PARM_REGFP_5,
827 OP_PARM_REGFP_6,
828 OP_PARM_REGFP_7,
829 OP_PARM_REG_FP_END = OP_PARM_REGFP_7,
830
831 OP_PARM_NTA,
832 OP_PARM_T0,
833 OP_PARM_T1,
834 OP_PARM_T2,
835 OP_PARM_1,
836
837 OP_PARM_REX,
838 OP_PARM_REX_START = OP_PARM_REX,
839 OP_PARM_REX_B,
840 OP_PARM_REX_X,
841 OP_PARM_REX_XB,
842 OP_PARM_REX_R,
843 OP_PARM_REX_RB,
844 OP_PARM_REX_RX,
845 OP_PARM_REX_RXB,
846 OP_PARM_REX_W,
847 OP_PARM_REX_WB,
848 OP_PARM_REX_WX,
849 OP_PARM_REX_WXB,
850 OP_PARM_REX_WR,
851 OP_PARM_REX_WRB,
852 OP_PARM_REX_WRX,
853 OP_PARM_REX_WRXB,
854
855 OP_PARM_REG_RAX,
856 OP_PARM_REG_GEN64_START = OP_PARM_REG_RAX,
857 OP_PARM_REG_RCX,
858 OP_PARM_REG_RDX,
859 OP_PARM_REG_RBX,
860 OP_PARM_REG_RSP,
861 OP_PARM_REG_RBP,
862 OP_PARM_REG_RSI,
863 OP_PARM_REG_RDI,
864 OP_PARM_REG_R8,
865 OP_PARM_REG_R9,
866 OP_PARM_REG_R10,
867 OP_PARM_REG_R11,
868 OP_PARM_REG_R12,
869 OP_PARM_REG_R13,
870 OP_PARM_REG_R14,
871 OP_PARM_REG_R15,
872 OP_PARM_REG_GEN64_END = OP_PARM_REG_R15
873};
874
875#define OP_PARM_VTYPE(a) ((unsigned)a & 0xFE0)
876#define OP_PARM_VSUBTYPE(a) ((unsigned)a & 0x01F)
877
878#define OP_PARM_A 0x100
879#define OP_PARM_VARIABLE OP_PARM_A
880#define OP_PARM_E 0x120
881#define OP_PARM_F 0x140
882#define OP_PARM_G 0x160
883#define OP_PARM_I 0x180
884#define OP_PARM_J 0x1A0
885#define OP_PARM_M 0x1C0
886#define OP_PARM_O 0x1E0
887#define OP_PARM_R 0x200
888#define OP_PARM_X 0x220
889#define OP_PARM_Y 0x240
890
891/* Grouped rare parameters for optimization purposes */
892#define IS_OP_PARM_RARE(a) ((a & 0xF00) >= 0x300)
893#define OP_PARM_C 0x300 /* control register */
894#define OP_PARM_D 0x320 /* debug register */
895#define OP_PARM_S 0x340 /* segment register */
896#define OP_PARM_T 0x360 /* test register */
897#define OP_PARM_Q 0x380
898#define OP_PARM_P 0x3A0 /* mmx register */
899#define OP_PARM_W 0x3C0 /* xmm register */
900#define OP_PARM_V 0x3E0
901#define OP_PARM_U 0x400 /* The R/M field of the ModR/M byte selects XMM/YMM register. */
902#define OP_PARM_B 0x420 /* VEX.vvvv field select general purpose register. */
903#define OP_PARM_H 0x440
904#define OP_PARM_L 0x460
905
906#define OP_PARM_NONE 0
907#define OP_PARM_a 0x1
908#define OP_PARM_b 0x2
909#define OP_PARM_d 0x3
910#define OP_PARM_dq 0x4
911#define OP_PARM_p 0x5
912#define OP_PARM_pd 0x6
913#define OP_PARM_pi 0x7
914#define OP_PARM_ps 0x8
915#define OP_PARM_pq 0x9
916#define OP_PARM_q 0xA
917#define OP_PARM_s 0xB
918#define OP_PARM_sd 0xC
919#define OP_PARM_ss 0xD
920#define OP_PARM_v 0xE
921#define OP_PARM_w 0xF
922#define OP_PARM_x 0x10
923#define OP_PARM_y 0x11
924#define OP_PARM_z 0x12
925#define OP_PARM_qq 0x13
926
927
928#define OP_PARM_Ap (OP_PARM_A+OP_PARM_p)
929#define OP_PARM_By (OP_PARM_B+OP_PARM_y)
930#define OP_PARM_Cd (OP_PARM_C+OP_PARM_d)
931#define OP_PARM_Dd (OP_PARM_D+OP_PARM_d)
932#define OP_PARM_Eb (OP_PARM_E+OP_PARM_b)
933#define OP_PARM_Ed (OP_PARM_E+OP_PARM_d)
934#define OP_PARM_Ep (OP_PARM_E+OP_PARM_p)
935#define OP_PARM_Ev (OP_PARM_E+OP_PARM_v)
936#define OP_PARM_Ew (OP_PARM_E+OP_PARM_w)
937#define OP_PARM_Ey (OP_PARM_E+OP_PARM_y)
938#define OP_PARM_Fv (OP_PARM_F+OP_PARM_v)
939#define OP_PARM_Gb (OP_PARM_G+OP_PARM_b)
940#define OP_PARM_Gd (OP_PARM_G+OP_PARM_d)
941#define OP_PARM_Gv (OP_PARM_G+OP_PARM_v)
942#define OP_PARM_Gw (OP_PARM_G+OP_PARM_w)
943#define OP_PARM_Gy (OP_PARM_G+OP_PARM_y)
944#define OP_PARM_Hq (OP_PARM_H+OP_PARM_q)
945#define OP_PARM_Hps (OP_PARM_H+OP_PARM_ps)
946#define OP_PARM_Hpd (OP_PARM_H+OP_PARM_pd)
947#define OP_PARM_Hdq (OP_PARM_H+OP_PARM_dq)
948#define OP_PARM_Hqq (OP_PARM_H+OP_PARM_qq)
949#define OP_PARM_Hsd (OP_PARM_H+OP_PARM_sd)
950#define OP_PARM_Hss (OP_PARM_H+OP_PARM_ss)
951#define OP_PARM_Hx (OP_PARM_H+OP_PARM_x)
952#define OP_PARM_Ib (OP_PARM_I+OP_PARM_b)
953#define OP_PARM_Id (OP_PARM_I+OP_PARM_d)
954#define OP_PARM_Iq (OP_PARM_I+OP_PARM_q)
955#define OP_PARM_Iw (OP_PARM_I+OP_PARM_w)
956#define OP_PARM_Iv (OP_PARM_I+OP_PARM_v)
957#define OP_PARM_Iz (OP_PARM_I+OP_PARM_z)
958#define OP_PARM_Jb (OP_PARM_J+OP_PARM_b)
959#define OP_PARM_Jv (OP_PARM_J+OP_PARM_v)
960#define OP_PARM_Ma (OP_PARM_M+OP_PARM_a)
961#define OP_PARM_Mb (OP_PARM_M+OP_PARM_b)
962#define OP_PARM_Mw (OP_PARM_M+OP_PARM_w)
963#define OP_PARM_Md (OP_PARM_M+OP_PARM_d)
964#define OP_PARM_Mp (OP_PARM_M+OP_PARM_p)
965#define OP_PARM_Mq (OP_PARM_M+OP_PARM_q)
966#define OP_PARM_Mdq (OP_PARM_M+OP_PARM_dq)
967#define OP_PARM_Ms (OP_PARM_M+OP_PARM_s)
968#define OP_PARM_Mx (OP_PARM_M+OP_PARM_x)
969#define OP_PARM_My (OP_PARM_M+OP_PARM_y)
970#define OP_PARM_Mps (OP_PARM_M+OP_PARM_ps)
971#define OP_PARM_Mpd (OP_PARM_M+OP_PARM_pd)
972#define OP_PARM_Ob (OP_PARM_O+OP_PARM_b)
973#define OP_PARM_Ov (OP_PARM_O+OP_PARM_v)
974#define OP_PARM_Pq (OP_PARM_P+OP_PARM_q)
975#define OP_PARM_Pd (OP_PARM_P+OP_PARM_d)
976#define OP_PARM_Qd (OP_PARM_Q+OP_PARM_d)
977#define OP_PARM_Qq (OP_PARM_Q+OP_PARM_q)
978#define OP_PARM_Rd (OP_PARM_R+OP_PARM_d)
979#define OP_PARM_Rw (OP_PARM_R+OP_PARM_w)
980#define OP_PARM_Ry (OP_PARM_R+OP_PARM_y)
981#define OP_PARM_Sw (OP_PARM_S+OP_PARM_w)
982#define OP_PARM_Td (OP_PARM_T+OP_PARM_d)
983#define OP_PARM_Ux (OP_PARM_U+OP_PARM_x)
984#define OP_PARM_Vq (OP_PARM_V+OP_PARM_q)
985#define OP_PARM_Vx (OP_PARM_V+OP_PARM_x)
986#define OP_PARM_Vy (OP_PARM_V+OP_PARM_y)
987#define OP_PARM_Wq (OP_PARM_W+OP_PARM_q)
988#define OP_PARM_Ws (OP_PARM_W+OP_PARM_s)
989#define OP_PARM_Wx (OP_PARM_W+OP_PARM_x)
990#define OP_PARM_Xb (OP_PARM_X+OP_PARM_b)
991#define OP_PARM_Xv (OP_PARM_X+OP_PARM_v)
992#define OP_PARM_Yb (OP_PARM_Y+OP_PARM_b)
993#define OP_PARM_Yv (OP_PARM_Y+OP_PARM_v)
994
995#define OP_PARM_Vps (OP_PARM_V+OP_PARM_ps)
996#define OP_PARM_Vss (OP_PARM_V+OP_PARM_ss)
997#define OP_PARM_Vpd (OP_PARM_V+OP_PARM_pd)
998#define OP_PARM_Vdq (OP_PARM_V+OP_PARM_dq)
999#define OP_PARM_Wps (OP_PARM_W+OP_PARM_ps)
1000#define OP_PARM_Wpd (OP_PARM_W+OP_PARM_pd)
1001#define OP_PARM_Wss (OP_PARM_W+OP_PARM_ss)
1002#define OP_PARM_Ww (OP_PARM_W+OP_PARM_w)
1003#define OP_PARM_Wd (OP_PARM_W+OP_PARM_d)
1004#define OP_PARM_Wq (OP_PARM_W+OP_PARM_q)
1005#define OP_PARM_Wdq (OP_PARM_W+OP_PARM_dq)
1006#define OP_PARM_Wqq (OP_PARM_W+OP_PARM_qq)
1007#define OP_PARM_Ppi (OP_PARM_P+OP_PARM_pi)
1008#define OP_PARM_Qpi (OP_PARM_Q+OP_PARM_pi)
1009#define OP_PARM_Qdq (OP_PARM_Q+OP_PARM_dq)
1010#define OP_PARM_Vsd (OP_PARM_V+OP_PARM_sd)
1011#define OP_PARM_Wsd (OP_PARM_W+OP_PARM_sd)
1012#define OP_PARM_Vpq (OP_PARM_V+OP_PARM_pq)
1013#define OP_PARM_Vqq (OP_PARM_V+OP_PARM_qq)
1014#define OP_PARM_Pdq (OP_PARM_P+OP_PARM_dq)
1015#define OP_PARM_Ups (OP_PARM_U+OP_PARM_ps)
1016#define OP_PARM_Upd (OP_PARM_U+OP_PARM_pd)
1017#define OP_PARM_Udq (OP_PARM_U+OP_PARM_dq)
1018#define OP_PARM_Lx (OP_PARM_L+OP_PARM_x)
1019
1020/** @} */
1021
1022#endif
1023
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette