1
# This is the file "instr.key", which says what the operand-list keys
4
# Comments are as described in "instr.set".
5
# Additionally, a semi-colon allows comments in data lines.
7
# Keys may be one or two characters.
9
# v1.09: - for D and E: OP_16 changed to OP_1632.
10
# - for S8: OP_IMM8 changed to OP_IMMS8.
11
# - key L isn't used anymore (was used for 32bit LOOPx).
12
# v1.18: - keys rearranged, they are now always 2 hex digits.
15
01 OP_ALL+OP_AX, OP_ALL+OP_IMM ;add,adc,and,or,sub, ...
16
02 OP_ALL+OP_RM, OP_ALL+OP_IMM ;add,adc,and,or,mov,sub, ...
17
03 OP_1632+OP_RM, OP_IMMS8 ;add,adc,and,or,sub, ...
18
04 OP_ALL+OP_RM, OP_ALL+OP_R ;add,adc,and,or,mov,sub, ...
19
05 OP_ALL+OP_R, OP_ALL+OP_RM ;add,adc,and,or,mov,sub, ...
20
06 OP_16+OP_RM, OP_16+OP_R ;arpl
21
07 OP_1632+OP_R, OP_1632+OP_M ;bound, LxS
22
08 OP_1632+OP_R, OP_1632+OP_RM ;cmovxx, bsf, bsr, imul, lar, lsl
23
09 OP_32+OP_R_ADD ;bswap
24
0A OP_1632+OP_RM, OP_1632+OP_R ;bt, btr, bts, btc
25
0B OP_1632+OP_RM, OP_IMM8 ;bt, btr, bts, btc
26
0C OP_REL1632 ;call/jmp near, jxx
27
0D OP_FARIMM ;call/jmp seg:ofs
28
0E OP_FARMEM ;call/jmp far [mem]
29
0F OP_M64 ;cmpxchg8b, fild, fistp
30
10 OP_ALL+OP_RM ;dec, inc, imul, ...
31
11 OP_1632+OP_R_ADD ;dec, inc, pop, push
32
12 OP_16+OP_IMM, OP_IMM8 ;enter
33
13 OP_MFLOAT ;fld, fst, ...
34
14 OP_MDOUBLE ;fld, fst, ...
35
15 OP_ST, OP_STI ;fdiv, fmul, fcmovxx,...
36
16 OP_STI, OP_ST ;fadd, fdiv, ...
37
17 OP_1CHK, OP_STI, OP_ST ;fxxxp
41
1B OP_STI ;fld, fst, ...
42
1C OP_1CHK, OP_STI ;f[u]comx
44
1E OP_MXX ;[l|s][g|i]dt, fsave, frstor, fldenv
46
20 OP_1632+OP_R, OP_1632+OP_RM, OP_IMMS8 ;imul
47
21 OP_1632+OP_R_MOD, OP_1632+OP_R, OP_IMMS8 ;imul
48
22 OP_1632+OP_R, OP_1632+OP_RM, OP_1632+OP_IMM ;imul
49
23 OP_1632+OP_R_MOD, OP_1632+OP_R, OP_1632+OP_IMM ;imul
50
24 OP_ALL+OP_AX, OP_IMM8 ;in al|ax|eax, imm
51
25 OP_ALL+OP_AX, OP_DX ;in al|ax|eax, dx
53
27 OP_IMM8 ;INT xx, AAD xx, AAM xx
54
28 OP_REL8 ;jxx, loopxx, jmp short
55
29 OP_1632+OP_RM ;call|jmp|push [mem]
56
2A OP_16+OP_RM ;ltr, lldt, lmsw, verr, verw, str
57
2B OP_1632+OP_RM, OP_SEGREG ;mov <reg>|[mem], <segr>
58
2C OP_SEGREG, OP_1632+OP_RM ;mov <segr>,<reg>|[mem]
59
2D OP_ALL+OP_AX, OP_ALL+OP_MOFFS ;mov al|ax|eax, [mem]
60
2E OP_ALL+OP_MOFFS, OP_ALL+OP_AX ;mov [mem], al|ax|eax
61
2F OP_8+OP_R_ADD, OP_8+OP_IMM ;mov <reg>, <imm>
62
30 OP_1632+OP_R_ADD, OP_1632+OP_IMM ;mov <reg>, <imm>
63
31 OP_1632+OP_R, OP_SHOSIZ, OP_8+OP_RM ;movzx, movsx
64
32 OP_1632+OP_R, OP_SHOSIZ, OP_16+OP_RM ;movzx, movsx
65
33 OP_IMM8, OP_ALL+OP_AX ;out imm, al|ax|eax
66
34 OP_DX, OP_ALL+OP_AX ;out dx,al|ax|eax
67
35 OP_1632+OP_M ;pop [mem]
68
36 OP_1632+OP_IMM ;push <imm>
69
37 OP_SHOSIZ, OP_IMMS8 ;push byte ptr <imm>
70
38 OP_ALL+OP_RM, OP_1 ;shl, shr, rol, ror, ...
71
39 OP_ALL+OP_RM, OP_CL ;shl, shr, rol, ror, ...
72
3A OP_ALL+OP_RM, OP_IMM8 ;shl, shr, rol, ror, ...
73
3B OP_16+OP_IMM ;ret x, retf x
75
3D OP_1632+OP_RM, OP_1632+OP_R, OP_IMM8 ;shld, shrd
76
3E OP_1632+OP_RM, OP_1632+OP_R, OP_CL ;shld, shrd
77
3F OP_1632+OP_AX, OP_1632+OP_R_ADD ;xchg
78
40 OP_1632+OP_R_ADD, OP_1632+OP_AX ;xchg
79
# The next six must be in machine order.
86
47 OP_32+OP_R_MOD, OP_CR ;mov <reg>, CRx
87
48 OP_CR, OP_32+OP_R_MOD ;mov CRx, <reg>
88
49 OP_32+OP_R_MOD, OP_DR ;mov <reg>,DRx
89
4A OP_DR, OP_32+OP_R_MOD ;mov DRx, <reg>
90
4B OP_32+OP_R_MOD, OP_TR ;mov <reg>,TRx
91
4C OP_TR, OP_32+OP_R_MOD ;mov TRx,<reg>
92
4D OP_MMX, OP_32+OP_RM ;movd
93
4E OP_32+OP_RM, OP_MMX ;movd
94
4F OP_MMX, OP_64+OP_RM ;movq
95
50 OP_64+OP_RM, OP_MMX ;movq