VirtualBox

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

Last change on this file since 17911 was 13241, checked in by vboxsync, 16 years ago

Added support for three byte opcodes (not complete; just to test invept & invvpid)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 24.9 KB
Line 
1/** @file
2 * Disassembler - opcode.h.
3 */
4
5/*
6 * Copyright (C) 2006-2007 Sun Microsystems, Inc.
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 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
26 * Clara, CA 95054 USA or visit http://www.sun.com if you need
27 * additional information or have any questions.
28 */
29
30#ifndef ___VBox_opcode_h
31#define ___VBox_opcode_h
32
33#define MODRM_MOD(a) (a>>6)
34#define MODRM_REG(a) ((a>>3)&0x7)
35#define MODRM_RM(a) (a&0x7)
36#define MAKE_MODRM(mod, reg, rm) (((mod&3) << 6) | ((reg&7) << 3) | (rm&7))
37
38#define SIB_SCALE(a) (a>>6)
39#define SIB_INDEX(a) ((a>>3)&0x7)
40#define SIB_BASE(a) (a&0x7)
41
42
43/** Full Intel X86 opcode list
44 * @{
45 */
46#define OP_INVALID 0
47#define OP_OPSIZE 1
48#define OP_ADDRSIZE 2
49#define OP_SEG 3
50#define OP_REPNE 4
51#define OP_REPE 5
52#define OP_REX 6
53#define OP_LOCK 7
54#define OP_LAST_PREFIX OP_LOCK /* disassembler assumes this is the last prefix byte value!!!! */
55#define OP_AND 8
56#define OP_OR 9
57#define OP_DAA 10
58#define OP_SUB 11
59#define OP_DAS 12
60#define OP_XOR 13
61#define OP_AAA 14
62#define OP_CMP 15
63#define OP_IMM_GRP1 16
64#define OP_AAS 17
65#define OP_INC 18
66#define OP_DEC 19
67#define OP_PUSHA 20
68#define OP_POPA 21
69#define OP_BOUND 22
70#define OP_ARPL 23
71#define OP_PUSH 24
72#define OP_POP 25
73#define OP_IMUL 26
74#define OP_INSB 27
75#define OP_INSWD 28
76#define OP_OUTSB 29
77#define OP_OUTSWD 30
78#define OP_JO 31
79#define OP_JNO 32
80#define OP_JC 33
81#define OP_JNC 34
82#define OP_JE 35
83#define OP_JNE 36
84#define OP_JBE 37
85#define OP_JNBE 38
86#define OP_JS 39
87#define OP_JNS 40
88#define OP_JP 41
89#define OP_JNP 42
90#define OP_JL 43
91#define OP_JNL 44
92#define OP_JLE 45
93#define OP_JNLE 46
94#define OP_ADD 47
95#define OP_TEST 48
96#define OP_XCHG 49
97#define OP_MOV 50
98#define OP_LEA 51
99#define OP_NOP 52
100#define OP_CBW 53
101#define OP_CWD 54
102#define OP_CALL 55
103#define OP_WAIT 56
104#define OP_PUSHF 57
105#define OP_POPF 58
106#define OP_SAHF 59
107#define OP_LAHF 60
108#define OP_MOVSB 61
109#define OP_MOVSWD 62
110#define OP_CMPSB 63
111#define OP_CMPWD 64
112#define OP_STOSB 65
113#define OP_STOSWD 66
114#define OP_LODSB 67
115#define OP_LODSWD 68
116#define OP_SCASB 69
117#define OP_SCASWD 70
118#define OP_SHIFT_GRP2 71
119#define OP_RETN 72
120#define OP_LES 73
121#define OP_LDS 74
122#define OP_ENTER 75
123#define OP_LEAVE 76
124#define OP_RETF 77
125#define OP_INT3 78
126#define OP_INT 79
127#define OP_INTO 80
128#define OP_IRET 81
129#define OP_AAM 82
130#define OP_AAD 83
131#define OP_XLAT 84
132#define OP_ESCF0 85
133#define OP_ESCF1 86
134#define OP_ESCF2 87
135#define OP_ESCF3 88
136#define OP_ESCF4 89
137#define OP_ESCF5 90
138#define OP_ESCF6 91
139#define OP_ESCF7 92
140#define OP_LOOPNE 93
141#define OP_LOOPE 94
142#define OP_LOOP 95
143#define OP_JECXZ 96
144#define OP_IN 97
145#define OP_OUT 98
146#define OP_JMP 99
147#define OP_2B_ESC 100
148#define OP_ADC 101
149#define OP_SBB 102
150#define OP_HLT 103
151#define OP_CMC 104
152#define OP_UNARY_GRP3 105
153#define OP_CLC 106
154#define OP_STC 107
155#define OP_CLI 108
156#define OP_STI 109
157#define OP_CLD 110
158#define OP_STD 111
159#define OP_INC_GRP4 112
160#define OP_IND_GRP5 113
161#define OP_GRP6 114
162#define OP_GRP7 115
163#define OP_LAR 116
164#define OP_LSL 117
165#define OP_SYSCALL 118
166#define OP_CLTS 119
167#define OP_SYSRET 120
168#define OP_INVD 121
169#define OP_WBINVD 122
170#define OP_ILLUD2 123
171#define OP_FEMMS 124
172#define OP_3DNOW 125
173#define OP_MOVUPS 126
174#define OP_MOVLPS 127
175#define OP_UNPCKLPS 128
176#define OP_MOVHPS 129
177#define OP_UNPCKHPS 130
178#define OP_PREFETCH_GRP16 131
179#define OP_MOV_CR 132
180#define OP_MOVAPS 133
181#define OP_CVTPI2PS 134
182#define OP_MOVNTPS 135
183#define OP_CVTTPS2PI 136
184#define OP_CVTPS2PI 137
185#define OP_UCOMISS 138
186#define OP_COMISS 139
187#define OP_WRMSR 140
188#define OP_RDTSC 141
189#define OP_RDMSR 142
190#define OP_RPPMC 143
191#define OP_SYSENTER 144
192#define OP_SYSEXIT 145
193#define OP_PAUSE 146
194#define OP_CMOVO 147
195#define OP_CMOVNO 148
196#define OP_CMOVC 149
197#define OP_CMOVNC 150
198#define OP_CMOVZ 151
199#define OP_CMOVNZ 152
200#define OP_CMOVBE 153
201#define OP_CMOVNBE 154
202#define OP_CMOVS 155
203#define OP_CMOVNS 156
204#define OP_CMOVP 157
205#define OP_CMOVNP 158
206#define OP_CMOVL 159
207#define OP_CMOVNL 160
208#define OP_CMOVLE 161
209#define OP_CMOVNLE 162
210#define OP_MOVMSKPS 163
211#define OP_SQRTPS 164
212#define OP_RSQRTPS 165
213#define OP_RCPPS 166
214#define OP_ANDPS 167
215#define OP_ANDNPS 168
216#define OP_ORPS 169
217#define OP_XORPS 170
218#define OP_ADDPS 171
219#define OP_MULPS 172
220#define OP_CVTPS2PD 173
221#define OP_CVTDQ2PS 174
222#define OP_SUBPS 175
223#define OP_MINPS 176
224#define OP_DIVPS 177
225#define OP_MAXPS 178
226#define OP_PUNPCKLBW 179
227#define OP_PUNPCKLWD 180
228#define OP_PUNPCKLDQ 181
229#define OP_PACKSSWB 182
230#define OP_PCMPGTB 183
231#define OP_PCMPGTW 184
232#define OP_PCMPGTD 185
233#define OP_PACKUSWB 186
234#define OP_PUNPCKHBW 187
235#define OP_PUNPCKHWD 188
236#define OP_PUNPCKHDQ 189
237#define OP_PACKSSDW 190
238#define OP_MOVD 191
239#define OP_MOVQ 192
240#define OP_PSHUFW 193
241#define OP_3B_ESC4 194
242#define OP_3B_ESC5 195
243
244#define OP_PCMPEQB 196
245#define OP_PCMPEQW 197
246#define OP_PCMPEQD 198
247#define OP_SETO 199
248#define OP_SETNO 200
249#define OP_SETC 201
250#define OP_SETNC 202
251#define OP_SETE 203
252#define OP_SETNE 204
253#define OP_SETBE 205
254#define OP_SETNBE 206
255#define OP_SETS 207
256#define OP_SETNS 208
257#define OP_SETP 209
258#define OP_SETNP 210
259#define OP_SETL 211
260#define OP_SETNL 212
261#define OP_SETLE 213
262#define OP_SETNLE 214
263#define OP_CPUID 215
264#define OP_BT 216
265#define OP_SHLD 217
266#define OP_RSM 218
267#define OP_BTS 219
268#define OP_SHRD 220
269#define OP_GRP15 221
270#define OP_CMPXCHG 222
271#define OP_LSS 223
272#define OP_BTR 224
273#define OP_LFS 225
274#define OP_LGS 226
275#define OP_MOVZX 227
276#define OP_GRP10_INV 228
277#define OP_GRP8 229
278#define OP_BTC 230
279#define OP_BSF 231
280#define OP_BSR 232
281#define OP_MOVSX 233
282#define OP_XADD 234
283#define OP_CMPPS 235
284#define OP_MOVNTI 236
285#define OP_PINSRW 237
286#define OP_PEXTRW 238
287#define OP_SHUFPS 239
288#define OP_GRP9 240
289#define OP_BSWAP 241
290#define OP_PSRLW 242
291#define OP_PSRLD 243
292#define OP_PSRLQ 244
293#define OP_PADDQ 245
294#define OP_PMULLW 246
295#define OP_PMOVSKB 247
296#define OP_PSUBUSB 248
297#define OP_PSUBUSW 249
298#define OP_PMINUB 250
299#define OP_PAND 251
300#define OP_PADDUSB 252
301#define OP_PADDUSW 253
302#define OP_PMAXUB 254
303#define OP_PANDN 255
304#define OP_PAVGN 256
305#define OP_PSRAW 257
306#define OP_PSRAD 258
307#define OP_PAVGW 259
308#define OP_PMULHUW 260
309#define OP_PMULHW 261
310#define OP_MOVNTQ 262
311#define OP_PSUBSB 263
312#define OP_PSUBSW 264
313#define OP_PMINSW 265
314#define OP_POR 266
315#define OP_PADDSB 267
316#define OP_PADDSW 268
317#define OP_PMAXSW 269
318#define OP_PXOR 270
319#define OP_PSLLW 271
320#define OP_PSLLD 272
321#define OP_PSSQ 273
322#define OP_PMULUDQ 274
323#define OP_PADDWD 275
324#define OP_PADBW 276
325#define OP_PMASKMOVQ 277
326#define OP_PSUBB 278
327#define OP_PSUBW 279
328
329#define OP_PSUBD 281
330#define OP_PADDB 282
331#define OP_PADDW 283
332#define OP_PADDD 284
333#define OP_MOVUPD 285
334#define OP_MOVLPD 286
335#define OP_UNPCKLPD 287
336#define OP_UNPCKHPD 288
337#define OP_MOVHPD 289
338
339#define OP_MOVAPD 291
340#define OP_CVTPI2PD 292
341#define OP_MOVNTPD 293
342#define OP_CVTTPD2PI 294
343#define OP_CVTPD2PI 295
344#define OP_UCOMISD 296
345#define OP_COMISD 297
346#define OP_MOVMSKPD 298
347#define OP_SQRTPD 299
348#define OP_ANDPD 301
349#define OP_ANDNPD 302
350#define OP_ORPD 303
351#define OP_XORPD 304
352#define OP_ADDPD 305
353#define OP_MULPD 306
354#define OP_CVTPD2PS 307
355#define OP_CVTPS2DQ 308
356#define OP_SUBPD 309
357#define OP_MINPD 310
358#define OP_DIVPD 311
359#define OP_MAXPD 312
360
361#define OP_GRP12 313
362#define OP_GRP13 314
363#define OP_GRP14 315
364#define OP_EMMS 316
365#define OP_MMX_UD78 317
366#define OP_MMX_UD79 318
367#define OP_MMX_UD7A 319
368#define OP_MMX_UD7B 320
369#define OP_MMX_UD7C 321
370#define OP_MMX_UD7D 322
371
372
373#define OP_PUNPCKLQDQ 325
374#define OP_PUNPCKHQD 326
375
376#define OP_MOVDQA 328
377#define OP_PSHUFD 329
378
379
380
381#define OP_CMPPD 334
382#define OP_SHUFPD 337
383
384
385#define OP_CVTTPD2DQ 353
386#define OP_MOVNTDQ 354
387
388#define OP_PSHUFB 355
389#define OP_PHADDW 356
390#define OP_PHADDD 357
391#define OP_PHADDSW 358
392#define OP_PMADDUBSW 359
393#define OP_PHSUBW 360
394#define OP_PHSUBD 361
395#define OP_PHSUBSW 362
396#define OP_PSIGNB 363
397#define OP_PSIGNW 364
398#define OP_PSIGND 365
399#define OP_PMULHRSW 366
400#define OP_PBLENDVB 367
401#define OP_BLENDVPS 368
402#define OP_BLENDVPD 369
403#define OP_PTEST 370
404#define OP_PABSB 371
405#define OP_PABSW 372
406#define OP_PABSD 373
407
408#define OP_PMASKMOVDQU 376
409#define OP_MOVSD 377
410#define OP_CVTSI2SD 378
411#define OP_CVTTSD2SI 379
412#define OP_CVTSD2SI 380
413#define OP_SQRTSD 381
414#define OP_ADDSD 382
415#define OP_MULSD 383
416#define OP_CVTSD2SS 384
417#define OP_SUBSD 385
418#define OP_MINSD 386
419#define OP_DIVSD 387
420#define OP_MAXSD 388
421#define OP_PSHUFLW 389
422#define OP_CMPSD 390
423#define OP_MOVDQ2Q 391
424#define OP_CVTPD2DQ 392
425#define OP_MOVSS 393
426#define OP_CVTSI2SS 394
427#define OP_CVTTSS2SI 395
428#define OP_CVTSS2SI 396
429#define OP_SQRTSS 397
430#define OP_RSQRTSS 398
431#define OP_ADDSS 399
432#define OP_MULSS 401
433#define OP_CVTTPS2DQ 403
434#define OP_SUBSS 404
435#define OP_MINSS 405
436#define OP_DIVSS 406
437#define OP_MAXSS 407
438#define OP_MOVDQU 408
439#define OP_PSHUFHW 409
440#define OP_CMPSS 410
441#define OP_MOVQ2DQ 411
442#define OP_CVTDQ2PD 412
443/** @} */
444
445/** Floating point ops
446 * @{
447 */
448#define OP_FADD 413
449#define OP_FMUL 414
450#define OP_FCOM 415
451#define OP_FCOMP 416
452#define OP_FSUB 417
453#define OP_FSUBR 418
454#define OP_FDIV 419
455#define OP_FDIVR 420
456#define OP_FLD 421
457#define OP_FST 422
458#define OP_FSTP 423
459#define OP_FLDENV 424
460
461#define OP_FSTENV 426
462#define OP_FSTCW 427
463#define OP_FXCH 428
464#define OP_FNOP 429
465#define OP_FCHS 430
466#define OP_FABS 431
467
468#define OP_FLD1 433
469#define OP_FLDL2T 434
470#define OP_FLDL2E 435
471#define OP_FLDPI 436
472#define OP_FLDLG2 437
473#define OP_FLDLN2 438
474#define OP_FLDZ 439
475#define OP_F2XM1 440
476#define OP_FYL2X 441
477#define OP_FPTAN 442
478#define OP_FPATAN 443
479#define OP_FXTRACT 444
480#define OP_FREM1 445
481#define OP_FDECSTP 446
482#define OP_FINCSTP 447
483#define OP_FPREM 448
484#define OP_FYL2XP1 449
485#define OP_FSQRT 450
486#define OP_FSINCOS 451
487#define OP_FRNDINT 452
488#define OP_FSCALE 453
489#define OP_FSIN 454
490#define OP_FCOS 455
491#define OP_FIADD 456
492#define OP_FIMUL 457
493#define OP_FISUB 460
494#define OP_FISUBR 461
495#define OP_FIDIV 462
496#define OP_FIDIVR 463
497#define OP_FCMOVB 464
498#define OP_FCMOVE 465
499#define OP_FCMOVBE 466
500#define OP_FCMOVU 467
501#define OP_FUCOMPP 468
502#define OP_FILD 469
503#define OP_FIST 470
504#define OP_FISTP 471
505#define OP_FCMOVNB 474
506#define OP_FCMOVNE 475
507#define OP_FCMOVNBE 476
508#define OP_FCMOVNU 477
509#define OP_FCLEX 478
510#define OP_FINIT 479
511#define OP_FUCOMI 480
512#define OP_FCOMI 481
513#define OP_FRSTOR 482
514#define OP_FSAVE 483
515#define OP_FNSTSW 484
516#define OP_FFREE 485
517#define OP_FUCOM 486
518#define OP_FUCOMP 487
519#define OP_FICOM 490
520#define OP_FICOMP 491
521#define OP_FADDP 496
522#define OP_FMULP 497
523#define OP_FCOMPP 498
524#define OP_FSUBRP 499
525#define OP_FSUBP 500
526#define OP_FDIVRP 501
527#define OP_FDIVP 502
528#define OP_FBLD 503
529#define OP_FBSTP 504
530#define OP_FCOMIP 506
531#define OP_FUCOMIP 507
532/** @} */
533
534/** 3DNow!
535 * @{
536 */
537#define OP_PI2FW 508
538#define OP_PI2FD 509
539#define OP_PF2IW 510
540#define OP_PF2ID 511
541#define OP_PFPNACC 512
542#define OP_PFCMPGE 513
543#define OP_PFMIN 514
544#define OP_PFRCP 515
545#define OP_PFRSQRT 516
546#define OP_PFSUB 517
547#define OP_PFADD 518
548#define OP_PFCMPGT 519
549#define OP_PFMAX 520
550#define OP_PFRCPIT1 521
551#define OP_PFRSQRTIT1 522
552#define OP_PFSUBR 523
553#define OP_PFACC 524
554#define OP_PFCMPEQ 525
555#define OP_PFMUL 526
556#define OP_PFRCPIT2 527
557#define OP_PFMULHRW 528
558#define OP_PFSWAPD 529
559#define OP_PAVGUSB 530
560#define OP_PFNACC 531
561#define OP_ROL 532
562#define OP_ROR 533
563#define OP_RCL 534
564#define OP_RCR 535
565#define OP_SHL 536
566#define OP_SHR 537
567#define OP_SAR 538
568#define OP_NOT 539
569#define OP_NEG 540
570#define OP_MUL 541
571#define OP_DIV 542
572#define OP_IDIV 543
573#define OP_SLDT 544
574#define OP_STR 545
575#define OP_LLDT 546
576#define OP_LTR 547
577#define OP_VERR 548
578#define OP_VERW 549
579#define OP_SGDT 550
580#define OP_LGDT 551
581#define OP_SIDT 552
582#define OP_LIDT 553
583#define OP_SMSW 554
584#define OP_LMSW 555
585#define OP_INVLPG 556
586#define OP_CMPXCHG8B 557
587#define OP_PSLLQ 558
588#define OP_PSRLDQ 559
589#define OP_PSLLDQ 560
590#define OP_FXSAVE 561
591#define OP_FXRSTOR 562
592#define OP_LDMXCSR 563
593#define OP_STMXCSR 564
594#define OP_LFENCE 565
595#define OP_MFENCE 566
596#define OP_SFENCE 567
597#define OP_PREFETCH 568
598#define OP_MONITOR 569
599#define OP_MWAIT 570
600#define OP_CLFLUSH 571
601
602#define OP_MOV_DR 600
603#define OP_MOV_TR 601
604
605#define OP_SWAPGS 610
606
607/* VT-x instructions */
608#define OP_VMREAD 650
609#define OP_VMWRITE 651
610#define OP_VMCALL 652
611#define OP_VMXON 653
612#define OP_VMXOFF 654
613#define OP_VMCLEAR 655
614#define OP_VMLAUNCH 656
615#define OP_VMRESUME 657
616#define OP_VMPTRLD 658
617#define OP_VMPTRST 659
618#define OP_INVEPT 660
619#define OP_INVVPID 661
620
621/* 64 bits instruction */
622#define OP_MOVSXD 700
623
624/** @} */
625
626
627/** Opcode parameters
628 * @{
629 */
630/* NOTE: Register order is important for translations!! */
631#define OP_PARM_NONE 0
632#define OP_PARM_REG_EAX 1
633#define OP_PARM_REG_GEN32_START OP_PARM_REG_EAX
634#define OP_PARM_REG_ECX 2
635#define OP_PARM_REG_EDX 3
636#define OP_PARM_REG_EBX 4
637#define OP_PARM_REG_ESP 5
638#define OP_PARM_REG_EBP 6
639#define OP_PARM_REG_ESI 7
640#define OP_PARM_REG_EDI 8
641#define OP_PARM_REG_GEN32_END OP_PARM_REG_EDI
642
643#define OP_PARM_REG_ES 9
644#define OP_PARM_REG_SEG_START OP_PARM_REG_ES
645#define OP_PARM_REG_CS 10
646#define OP_PARM_REG_SS 11
647#define OP_PARM_REG_DS 12
648#define OP_PARM_REG_FS 13
649#define OP_PARM_REG_GS 14
650#define OP_PARM_REG_SEG_END OP_PARM_REG_GS
651
652#define OP_PARM_REG_AX 15
653#define OP_PARM_REG_GEN16_START OP_PARM_REG_AX
654#define OP_PARM_REG_CX 16
655#define OP_PARM_REG_DX 17
656#define OP_PARM_REG_BX 18
657#define OP_PARM_REG_SP 19
658#define OP_PARM_REG_BP 20
659#define OP_PARM_REG_SI 21
660#define OP_PARM_REG_DI 22
661#define OP_PARM_REG_GEN16_END OP_PARM_REG_DI
662
663#define OP_PARM_REG_AL 23
664#define OP_PARM_REG_GEN8_START OP_PARM_REG_AL
665#define OP_PARM_REG_CL 24
666#define OP_PARM_REG_DL 25
667#define OP_PARM_REG_BL 26
668#define OP_PARM_REG_AH 27
669#define OP_PARM_REG_CH 28
670#define OP_PARM_REG_DH 29
671#define OP_PARM_REG_BH 30
672#define OP_PARM_REG_GEN8_END OP_PARM_REG_BH
673
674#define OP_PARM_REGFP_0 31
675#define OP_PARM_REG_FP_START OP_PARM_REGFP_0
676#define OP_PARM_REGFP_1 32
677#define OP_PARM_REGFP_2 33
678#define OP_PARM_REGFP_3 34
679#define OP_PARM_REGFP_4 35
680#define OP_PARM_REGFP_5 36
681#define OP_PARM_REGFP_6 37
682#define OP_PARM_REGFP_7 38
683#define OP_PARM_REG_FP_END OP_PARM_REGFP_7
684
685#define OP_PARM_NTA 39
686#define OP_PARM_T0 40
687#define OP_PARM_T1 41
688#define OP_PARM_T2 42
689
690#define OP_PARM_1 43
691
692#define OP_PARM_REX 50
693#define OP_PARM_REX_START OP_PARM_REX
694#define OP_PARM_REX_B 51
695#define OP_PARM_REX_X 52
696#define OP_PARM_REX_XB 53
697#define OP_PARM_REX_R 54
698#define OP_PARM_REX_RB 55
699#define OP_PARM_REX_RX 56
700#define OP_PARM_REX_RXB 57
701#define OP_PARM_REX_W 58
702#define OP_PARM_REX_WB 59
703#define OP_PARM_REX_WX 60
704#define OP_PARM_REX_WXB 61
705#define OP_PARM_REX_WR 62
706#define OP_PARM_REX_WRB 63
707#define OP_PARM_REX_WRX 64
708#define OP_PARM_REX_WRXB 65
709
710#define OP_PARM_REG_RAX 100
711#define OP_PARM_REG_GEN64_START OP_PARM_REG_RAX
712#define OP_PARM_REG_RCX 101
713#define OP_PARM_REG_RDX 102
714#define OP_PARM_REG_RBX 103
715#define OP_PARM_REG_RSP 104
716#define OP_PARM_REG_RBP 105
717#define OP_PARM_REG_RSI 106
718#define OP_PARM_REG_RDI 107
719#define OP_PARM_REG_R8 108
720#define OP_PARM_REG_R9 109
721#define OP_PARM_REG_R10 110
722#define OP_PARM_REG_R11 111
723#define OP_PARM_REG_R12 112
724#define OP_PARM_REG_R13 113
725#define OP_PARM_REG_R14 114
726#define OP_PARM_REG_R15 115
727#define OP_PARM_REG_GEN64_END OP_PARM_REG_R15
728
729
730#define OP_PARM_VTYPE(a) ((int)a & 0xFE0)
731#define OP_PARM_VSUBTYPE(a) ((int)a & 0x01F)
732
733#define OP_PARM_A 0x100
734#define OP_PARM_VARIABLE OP_PARM_A
735#define OP_PARM_E 0x120
736#define OP_PARM_F 0x140
737#define OP_PARM_G 0x160
738#define OP_PARM_I 0x180
739#define OP_PARM_J 0x1A0
740#define OP_PARM_M 0x1C0
741#define OP_PARM_O 0x1E0
742#define OP_PARM_Q 0x200
743#define OP_PARM_R 0x220
744#define OP_PARM_X 0x240
745#define OP_PARM_Y 0x260
746
747/* Grouped rare parameters for optimization purposes */
748#define IS_OP_PARM_RARE(a) ((a & 0xF00) == 0x300)
749#define OP_PARM_C 0x300 /* control register */
750#define OP_PARM_D 0x320 /* debug register */
751#define OP_PARM_S 0x340 /* segment register */
752#define OP_PARM_T 0x360 /* test register */
753#define OP_PARM_P 0x380 /* mmx register */
754#define OP_PARM_W 0x3A0 /* xmm register */
755#define OP_PARM_V 0x3C0
756
757#define OP_PARM_NONE 0
758#define OP_PARM_a 0x1
759#define OP_PARM_b 0x2
760#define OP_PARM_d 0x3
761#define OP_PARM_dq 0x4
762#define OP_PARM_p 0x5
763#define OP_PARM_pd 0x6
764#define OP_PARM_pi 0x7
765#define OP_PARM_ps 0x8
766#define OP_PARM_pq 0x9
767#define OP_PARM_q 0xA
768#define OP_PARM_s 0xB
769#define OP_PARM_sd 0xC
770#define OP_PARM_ss 0xD
771#define OP_PARM_v 0xE
772#define OP_PARM_w 0xF
773#define OP_PARM_z 0x10
774
775
776#define OP_PARM_Ap (OP_PARM_A+OP_PARM_p)
777#define OP_PARM_Cd (OP_PARM_C+OP_PARM_d)
778#define OP_PARM_Dd (OP_PARM_D+OP_PARM_d)
779#define OP_PARM_Eb (OP_PARM_E+OP_PARM_b)
780#define OP_PARM_Ed (OP_PARM_E+OP_PARM_d)
781#define OP_PARM_Ep (OP_PARM_E+OP_PARM_p)
782#define OP_PARM_Ev (OP_PARM_E+OP_PARM_v)
783#define OP_PARM_Ew (OP_PARM_E+OP_PARM_w)
784#define OP_PARM_Fv (OP_PARM_F+OP_PARM_v)
785#define OP_PARM_Gb (OP_PARM_G+OP_PARM_b)
786#define OP_PARM_Gd (OP_PARM_G+OP_PARM_d)
787#define OP_PARM_Gv (OP_PARM_G+OP_PARM_v)
788#define OP_PARM_Gw (OP_PARM_G+OP_PARM_w)
789#define OP_PARM_Ib (OP_PARM_I+OP_PARM_b)
790#define OP_PARM_Id (OP_PARM_I+OP_PARM_d)
791#define OP_PARM_Iq (OP_PARM_I+OP_PARM_q)
792#define OP_PARM_Iw (OP_PARM_I+OP_PARM_w)
793#define OP_PARM_Iv (OP_PARM_I+OP_PARM_v)
794#define OP_PARM_Iz (OP_PARM_I+OP_PARM_z)
795#define OP_PARM_Jb (OP_PARM_J+OP_PARM_b)
796#define OP_PARM_Jv (OP_PARM_J+OP_PARM_v)
797#define OP_PARM_Ma (OP_PARM_M+OP_PARM_a)
798#define OP_PARM_Mb (OP_PARM_M+OP_PARM_b)
799#define OP_PARM_Mw (OP_PARM_M+OP_PARM_w)
800#define OP_PARM_Md (OP_PARM_M+OP_PARM_d)
801#define OP_PARM_Mp (OP_PARM_M+OP_PARM_p)
802#define OP_PARM_Mq (OP_PARM_M+OP_PARM_q)
803#define OP_PARM_Mdq (OP_PARM_M+OP_PARM_dq)
804#define OP_PARM_Ms (OP_PARM_M+OP_PARM_s)
805#define OP_PARM_Ob (OP_PARM_O+OP_PARM_b)
806#define OP_PARM_Ov (OP_PARM_O+OP_PARM_v)
807#define OP_PARM_Pq (OP_PARM_P+OP_PARM_q)
808#define OP_PARM_Pd (OP_PARM_P+OP_PARM_d)
809#define OP_PARM_Qd (OP_PARM_Q+OP_PARM_d)
810#define OP_PARM_Qq (OP_PARM_Q+OP_PARM_q)
811#define OP_PARM_Rd (OP_PARM_R+OP_PARM_d)
812#define OP_PARM_Rw (OP_PARM_R+OP_PARM_w)
813#define OP_PARM_Sw (OP_PARM_S+OP_PARM_w)
814#define OP_PARM_Td (OP_PARM_T+OP_PARM_d)
815#define OP_PARM_Vq (OP_PARM_V+OP_PARM_q)
816#define OP_PARM_Wq (OP_PARM_W+OP_PARM_q)
817#define OP_PARM_Ws (OP_PARM_W+OP_PARM_s)
818#define OP_PARM_Xb (OP_PARM_X+OP_PARM_b)
819#define OP_PARM_Xv (OP_PARM_X+OP_PARM_v)
820#define OP_PARM_Yb (OP_PARM_Y+OP_PARM_b)
821#define OP_PARM_Yv (OP_PARM_Y+OP_PARM_v)
822
823#define OP_PARM_Vps (OP_PARM_V+OP_PARM_ps)
824#define OP_PARM_Vss (OP_PARM_V+OP_PARM_ss)
825#define OP_PARM_Vpd (OP_PARM_V+OP_PARM_pd)
826#define OP_PARM_Vdq (OP_PARM_V+OP_PARM_dq)
827#define OP_PARM_Wps (OP_PARM_W+OP_PARM_ps)
828#define OP_PARM_Wpd (OP_PARM_W+OP_PARM_pd)
829#define OP_PARM_Wss (OP_PARM_W+OP_PARM_ss)
830#define OP_PARM_Wdq (OP_PARM_W+OP_PARM_dq)
831#define OP_PARM_Ppi (OP_PARM_P+OP_PARM_pi)
832#define OP_PARM_Qpi (OP_PARM_Q+OP_PARM_pi)
833#define OP_PARM_Qdq (OP_PARM_Q+OP_PARM_dq)
834#define OP_PARM_Vsd (OP_PARM_V+OP_PARM_sd)
835#define OP_PARM_Wsd (OP_PARM_W+OP_PARM_sd)
836#define OP_PARM_Vpq (OP_PARM_V+OP_PARM_pq)
837#define OP_PARM_Pdq (OP_PARM_P+OP_PARM_dq)
838
839/** @} */
840
841#endif
842
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