1#pragma warning(disable:4067)
3#if not (defined REG_SPEC || defined REG_SPEC_NO_CAPSTONE)
4#error REG_SPEC have to be specified before including specs
7// REG_SPEC(UPPER_NAME, LOWER_NAME, X86_64_UPPER, X84_84_LOWER, x86_64_PARENT, X86_UPPER, X86_LOWER, X86_PARENT, X86_AVAIL)
11REG_SPEC(RAX, rax, triton::bitsize::qword-1, 0, RAX, 0, 0, RAX, false) // rax
12REG_SPEC(RBX, rbx, triton::bitsize::qword-1, 0, RBX, 0, 0, RBX, false) // rbx
13REG_SPEC(RCX, rcx, triton::bitsize::qword-1, 0, RCX, 0, 0, RCX, false) // rcx
14REG_SPEC(RDX, rdx, triton::bitsize::qword-1, 0, RDX, 0, 0, RDX, false) // rdx
15REG_SPEC(RDI, rdi, triton::bitsize::qword-1, 0, RDI, 0, 0, RDI, false) // rdi
16REG_SPEC(RSI, rsi, triton::bitsize::qword-1, 0, RSI, 0, 0, RSI, false) // rsi
17REG_SPEC(RBP, rbp, triton::bitsize::qword-1, 0, RBP, 0, 0, RBP, false) // rbp
18REG_SPEC(RSP, rsp, triton::bitsize::qword-1, 0, RSP, 0, 0, RSP, false) // rsp
19REG_SPEC(RIP, rip, triton::bitsize::qword-1, 0, RIP, 0, 0, RIP, false) // rip
21REG_SPEC(R8, r8, triton::bitsize::qword-1, 0, R8, 0, 0, R8, false) // r8
22REG_SPEC(R8D, r8d, triton::bitsize::dword-1, 0, R8, 0, 0, R8, false) // r8d
23REG_SPEC(R8W, r8w, triton::bitsize::word-1, 0, R8, 0, 0, R8, false) // r8w
24REG_SPEC(R8B, r8b, triton::bitsize::byte-1, 0, R8, 0, 0, R8, false) // r8b
26REG_SPEC(R9, r9, triton::bitsize::qword-1, 0, R9, 0, 0, R9, false) // r9
27REG_SPEC(R9D, r9d, triton::bitsize::dword-1, 0, R9, 0, 0, R9, false) // r9d
28REG_SPEC(R9W, r9w, triton::bitsize::word-1, 0, R9, 0, 0, R9, false) // r9w
29REG_SPEC(R9B, r9b, triton::bitsize::byte-1, 0, R9, 0, 0, R9, false) // r9b
31REG_SPEC(R10, r10, triton::bitsize::qword-1, 0, R10, 0, 0, R10, false) // r10
32REG_SPEC(R10D, r10d, triton::bitsize::dword-1, 0, R10, 0, 0, R10, false) // r10d
33REG_SPEC(R10W, r10w, triton::bitsize::word-1, 0, R10, 0, 0, R10, false) // r10w
34REG_SPEC(R10B, r10b, triton::bitsize::byte-1, 0, R10, 0, 0, R10, false) // r10b
36REG_SPEC(R11, r11, triton::bitsize::qword-1, 0, R11, 0, 0, R11, false) // r11
37REG_SPEC(R11D, r11d, triton::bitsize::dword-1, 0, R11, 0, 0, R11, false) // r11d
38REG_SPEC(R11W, r11w, triton::bitsize::word-1, 0, R11, 0, 0, R11, false) // r11w
39REG_SPEC(R11B, r11b, triton::bitsize::byte-1, 0, R11, 0, 0, R11, false) // r11b
41REG_SPEC(R12, r12, triton::bitsize::qword-1, 0, R12, 0, 0, R12, false) // r12
42REG_SPEC(R12D, r12d, triton::bitsize::dword-1, 0, R12, 0, 0, R12, false) // r12d
43REG_SPEC(R12W, r12w, triton::bitsize::word-1, 0, R12, 0, 0, R12, false) // r12w
44REG_SPEC(R12B, r12b, triton::bitsize::byte-1, 0, R12, 0, 0, R12, false) // r12b
46REG_SPEC(R13, r13, triton::bitsize::qword-1, 0, R13, 0, 0, R13, false) // r13
47REG_SPEC(R13D, r13d, triton::bitsize::dword-1, 0, R13, 0, 0, R13, false) // r13d
48REG_SPEC(R13W, r13w, triton::bitsize::word-1, 0, R13, 0, 0, R13, false) // r13w
49REG_SPEC(R13B, r13b, triton::bitsize::byte-1, 0, R13, 0, 0, R13, false) // r13b
51REG_SPEC(R14, r14, triton::bitsize::qword-1, 0, R14, 0, 0, R14, false) // r14
52REG_SPEC(R14D, r14d, triton::bitsize::dword-1, 0, R14, 0, 0, R14, false) // r14d
53REG_SPEC(R14W, r14w, triton::bitsize::word-1, 0, R14, 0, 0, R14, false) // r14w
54REG_SPEC(R14B, r14b, triton::bitsize::byte-1, 0, R14, 0, 0, R14, false) // r14b
56REG_SPEC(R15, r15, triton::bitsize::qword-1, 0, R15, 0, 0, R15, false) // r15
57REG_SPEC(R15D, r15d, triton::bitsize::dword-1, 0, R15, 0, 0, R15, false) // r15d
58REG_SPEC(R15W, r15w, triton::bitsize::word-1, 0, R15, 0, 0, R15, false) // r15w
59REG_SPEC(R15B, r15b, triton::bitsize::byte-1, 0, R15, 0, 0, R15, false) // r15b
63REG_SPEC(EAX, eax, triton::bitsize::dword-1, 0, RAX, triton::bitsize::dword-1, 0, EAX, true) // eax
64REG_SPEC(AX, ax, triton::bitsize::word-1, 0, RAX, triton::bitsize::word-1, 0, EAX, true) // ax
65REG_SPEC(AH, ah, triton::bitsize::word-1, triton::bitsize::byte, RAX, triton::bitsize::word-1, triton::bitsize::byte, EAX, true) // ah
66REG_SPEC(AL, al, triton::bitsize::byte-1, 0, RAX, triton::bitsize::byte-1, 0, EAX, true) // al
68REG_SPEC(EBX, ebx, triton::bitsize::dword-1, 0, RBX, triton::bitsize::dword-1, 0, EBX, true) // ebx
69REG_SPEC(BX, bx, triton::bitsize::word-1, 0, RBX, triton::bitsize::word-1, 0, EBX, true) // bx
70REG_SPEC(BH, bh, triton::bitsize::word-1, triton::bitsize::byte, RBX, triton::bitsize::word-1, triton::bitsize::byte, EBX, true) // bh
71REG_SPEC(BL, bl, triton::bitsize::byte-1, 0, RBX, triton::bitsize::byte-1, 0, EBX, true) // bl
73REG_SPEC(ECX, ecx, triton::bitsize::dword-1, 0, RCX, triton::bitsize::dword-1, 0, ECX, true) // ecx
74REG_SPEC(CX, cx, triton::bitsize::word-1, 0, RCX, triton::bitsize::word-1, 0, ECX, true) // cx
75REG_SPEC(CH, ch, triton::bitsize::word-1, triton::bitsize::byte, RCX, triton::bitsize::word-1, triton::bitsize::byte, ECX, true) // ch
76REG_SPEC(CL, cl, triton::bitsize::byte-1, 0, RCX, triton::bitsize::byte-1, 0, ECX, true) // cl
78REG_SPEC(EDX, edx, triton::bitsize::dword-1, 0, RDX, triton::bitsize::dword-1, 0, EDX, true) // edx
79REG_SPEC(DX, dx, triton::bitsize::word-1, 0, RDX, triton::bitsize::word-1, 0, EDX, true) // dx
80REG_SPEC(DH, dh, triton::bitsize::word-1, triton::bitsize::byte, RDX, triton::bitsize::word-1, triton::bitsize::byte, EDX, true) // dh
81REG_SPEC(DL, dl, triton::bitsize::byte-1, 0, RDX, triton::bitsize::byte-1, 0, EDX, true) // dl
83REG_SPEC(EDI, edi, triton::bitsize::dword-1, 0, RDI, triton::bitsize::dword-1, 0, EDI, true) // edi
84REG_SPEC(DI, di, triton::bitsize::word-1, 0, RDI, triton::bitsize::word-1, 0, EDI, true) // di
85REG_SPEC(DIL, dil, triton::bitsize::byte-1, 0, RDI, triton::bitsize::byte-1, 0, EDI, true) // dil
87REG_SPEC(ESI, esi, triton::bitsize::dword-1, 0, RSI, triton::bitsize::dword-1, 0, ESI, true) // esi
88REG_SPEC(SI, si, triton::bitsize::word-1, 0, RSI, triton::bitsize::word-1, 0, ESI, true) // si
89REG_SPEC(SIL, sil, triton::bitsize::byte-1, 0, RSI, triton::bitsize::byte-1, 0, ESI, true) // sil
91REG_SPEC(EBP, ebp, triton::bitsize::dword-1, 0, RBP, triton::bitsize::dword-1, 0, EBP, true) // ebp
92REG_SPEC(BP, bp, triton::bitsize::word-1, 0, RBP, triton::bitsize::word-1, 0, EBP, true) // bp
93REG_SPEC(BPL, bpl, triton::bitsize::byte-1, 0, RBP, triton::bitsize::byte-1, 0, EBP, true) // bpl
95REG_SPEC(ESP, esp, triton::bitsize::dword-1, 0, RSP, triton::bitsize::dword-1, 0, ESP, true) // esp
96REG_SPEC(SP, sp, triton::bitsize::word-1, 0, RSP, triton::bitsize::word-1, 0, ESP, true) // sp
97REG_SPEC(SPL, spl, triton::bitsize::byte-1, 0, RSP, triton::bitsize::byte-1, 0, ESP, true) // spl
99REG_SPEC(EIP, eip, triton::bitsize::dword-1, 0, RIP, triton::bitsize::dword-1, 0, EIP, true) // eip
100REG_SPEC(IP, ip, triton::bitsize::word-1, 0, RIP, triton::bitsize::word-1, 0, EIP, true) // ip
102REG_SPEC(EFLAGS, eflags, triton::bitsize::qword-1, 0, EFLAGS, triton::bitsize::dword-1, 0, EFLAGS, true) // eflags
106REG_SPEC(MM0, mm0, triton::bitsize::qword-1, 0, ST0, triton::bitsize::qword-1, 0, ST0, true) // mm0
107REG_SPEC(MM1, mm1, triton::bitsize::qword-1, 0, ST1, triton::bitsize::qword-1, 0, ST1, true) // mm1
108REG_SPEC(MM2, mm2, triton::bitsize::qword-1, 0, ST2, triton::bitsize::qword-1, 0, ST2, true) // mm2
109REG_SPEC(MM3, mm3, triton::bitsize::qword-1, 0, ST3, triton::bitsize::qword-1, 0, ST3, true) // mm3
110REG_SPEC(MM4, mm4, triton::bitsize::qword-1, 0, ST4, triton::bitsize::qword-1, 0, ST4, true) // mm4
111REG_SPEC(MM5, mm5, triton::bitsize::qword-1, 0, ST5, triton::bitsize::qword-1, 0, ST5, true) // mm5
112REG_SPEC(MM6, mm6, triton::bitsize::qword-1, 0, ST6, triton::bitsize::qword-1, 0, ST6, true) // mm6
113REG_SPEC(MM7, mm7, triton::bitsize::qword-1, 0, ST7, triton::bitsize::qword-1, 0, ST7, true) // mm7
117REG_SPEC(ST0, st0, triton::bitsize::fword-1, 0, ST0, triton::bitsize::fword-1, 0, ST0, true) // st0
118REG_SPEC(ST1, st1, triton::bitsize::fword-1, 0, ST1, triton::bitsize::fword-1, 0, ST1, true) // st1
119REG_SPEC(ST2, st2, triton::bitsize::fword-1, 0, ST2, triton::bitsize::fword-1, 0, ST2, true) // st2
120REG_SPEC(ST3, st3, triton::bitsize::fword-1, 0, ST3, triton::bitsize::fword-1, 0, ST3, true) // st3
121REG_SPEC(ST4, st4, triton::bitsize::fword-1, 0, ST4, triton::bitsize::fword-1, 0, ST4, true) // st4
122REG_SPEC(ST5, st5, triton::bitsize::fword-1, 0, ST5, triton::bitsize::fword-1, 0, ST5, true) // st5
123REG_SPEC(ST6, st6, triton::bitsize::fword-1, 0, ST6, triton::bitsize::fword-1, 0, ST6, true) // st6
124REG_SPEC(ST7, st7, triton::bitsize::fword-1, 0, ST7, triton::bitsize::fword-1, 0, ST7, true) // st7
128REG_SPEC_NO_CAPSTONE(FTW, ftw, triton::bitsize::word-1, 0, FTW, triton::bitsize::word-1, 0, FTW, true) // ftw
129REG_SPEC_NO_CAPSTONE(FCW, fcw, triton::bitsize::word-1, 0, FCW, triton::bitsize::word-1, 0, FCW, true) // fcw
130REG_SPEC_NO_CAPSTONE(FSW, fsw, triton::bitsize::word-1, 0, FSW, triton::bitsize::word-1, 0, FSW, true) // fsw
131REG_SPEC_NO_CAPSTONE(FOP, fop, triton::bitsize::word-1, 0, FOP, triton::bitsize::word-1, 0, FOP, true) // fop
132REG_SPEC_NO_CAPSTONE(FCS, fcs, triton::bitsize::word-1, 0, FCS, triton::bitsize::word-1, 0, FCS, true) // fcs
133REG_SPEC_NO_CAPSTONE(FDS, fds, triton::bitsize::word-1, 0, FDS, triton::bitsize::word-1, 0, FDS, true) // fds
134REG_SPEC_NO_CAPSTONE(FIP, fip, triton::bitsize::qword-1, 0, FIP, triton::bitsize::qword-1, 0, FIP, true) // fip
135REG_SPEC_NO_CAPSTONE(FDP, fdp, triton::bitsize::qword-1, 0, FDP, triton::bitsize::qword-1, 0, FDP, true) // fdp
139REG_SPEC_NO_CAPSTONE(MXCSR, mxcsr, triton::bitsize::dword-1, 0, MXCSR, triton::bitsize::dword-1, 0, MXCSR, true) // mxcsr
140REG_SPEC_NO_CAPSTONE(MXCSR_MASK, mxcsr_mask, triton::bitsize::dword-1, 0, MXCSR_MASK, triton::bitsize::dword-1, 0, MXCSR_MASK, true) // mxcsr mask
142REG_SPEC(XMM0, xmm0, triton::bitsize::dqword-1, 0, ZMM0, triton::bitsize::dqword-1, 0, YMM0, true) // xmm0
143REG_SPEC(XMM1, xmm1, triton::bitsize::dqword-1, 0, ZMM1, triton::bitsize::dqword-1, 0, YMM1, true) // xmm1
144REG_SPEC(XMM2, xmm2, triton::bitsize::dqword-1, 0, ZMM2, triton::bitsize::dqword-1, 0, YMM2, true) // xmm2
145REG_SPEC(XMM3, xmm3, triton::bitsize::dqword-1, 0, ZMM3, triton::bitsize::dqword-1, 0, YMM3, true) // xmm3
146REG_SPEC(XMM4, xmm4, triton::bitsize::dqword-1, 0, ZMM4, triton::bitsize::dqword-1, 0, YMM4, true) // xmm4
147REG_SPEC(XMM5, xmm5, triton::bitsize::dqword-1, 0, ZMM5, triton::bitsize::dqword-1, 0, YMM5, true) // xmm5
148REG_SPEC(XMM6, xmm6, triton::bitsize::dqword-1, 0, ZMM6, triton::bitsize::dqword-1, 0, YMM6, true) // xmm6
149REG_SPEC(XMM7, xmm7, triton::bitsize::dqword-1, 0, ZMM7, triton::bitsize::dqword-1, 0, YMM7, true) // xmm7
150REG_SPEC(XMM8, xmm8, triton::bitsize::dqword-1, 0, ZMM8, 0, 0, XMM8, false) // xmm8
151REG_SPEC(XMM9, xmm9, triton::bitsize::dqword-1, 0, ZMM9, 0, 0, XMM9, false) // xmm9
152REG_SPEC(XMM10, xmm10, triton::bitsize::dqword-1, 0, ZMM10, 0, 0, XMM10, false) // xmm10
153REG_SPEC(XMM11, xmm11, triton::bitsize::dqword-1, 0, ZMM11, 0, 0, XMM11, false) // xmm11
154REG_SPEC(XMM12, xmm12, triton::bitsize::dqword-1, 0, ZMM12, 0, 0, XMM12, false) // xmm12
155REG_SPEC(XMM13, xmm13, triton::bitsize::dqword-1, 0, ZMM13, 0, 0, XMM13, false) // xmm13
156REG_SPEC(XMM14, xmm14, triton::bitsize::dqword-1, 0, ZMM14, 0, 0, XMM14, false) // xmm14
157REG_SPEC(XMM15, xmm15, triton::bitsize::dqword-1, 0, ZMM15, 0, 0, XMM15, false) // xmm15
159REG_SPEC(XMM16, xmm16, triton::bitsize::dqword-1, 0, ZMM16, 0, 0, XMM16, false) // xmm16
160REG_SPEC(XMM17, xmm17, triton::bitsize::dqword-1, 0, ZMM17, 0, 0, XMM17, false) // xmm17
161REG_SPEC(XMM18, xmm18, triton::bitsize::dqword-1, 0, ZMM18, 0, 0, XMM18, false) // xmm18
162REG_SPEC(XMM19, xmm19, triton::bitsize::dqword-1, 0, ZMM19, 0, 0, XMM19, false) // xmm19
163REG_SPEC(XMM20, xmm20, triton::bitsize::dqword-1, 0, ZMM20, 0, 0, XMM20, false) // xmm20
164REG_SPEC(XMM21, xmm21, triton::bitsize::dqword-1, 0, ZMM21, 0, 0, XMM21, false) // xmm21
165REG_SPEC(XMM22, xmm22, triton::bitsize::dqword-1, 0, ZMM22, 0, 0, XMM22, false) // xmm22
166REG_SPEC(XMM23, xmm23, triton::bitsize::dqword-1, 0, ZMM23, 0, 0, XMM23, false) // xmm23
167REG_SPEC(XMM24, xmm24, triton::bitsize::dqword-1, 0, ZMM24, 0, 0, XMM24, false) // xmm24
168REG_SPEC(XMM25, xmm25, triton::bitsize::dqword-1, 0, ZMM25, 0, 0, XMM25, false) // xmm25
169REG_SPEC(XMM26, xmm26, triton::bitsize::dqword-1, 0, ZMM26, 0, 0, XMM26, false) // xmm26
170REG_SPEC(XMM27, xmm27, triton::bitsize::dqword-1, 0, ZMM27, 0, 0, XMM27, false) // xmm27
171REG_SPEC(XMM28, xmm28, triton::bitsize::dqword-1, 0, ZMM28, 0, 0, XMM28, false) // xmm28
172REG_SPEC(XMM29, xmm29, triton::bitsize::dqword-1, 0, ZMM29, 0, 0, XMM29, false) // xmm29
173REG_SPEC(XMM30, xmm30, triton::bitsize::dqword-1, 0, ZMM30, 0, 0, XMM30, false) // xmm30
174REG_SPEC(XMM31, xmm31, triton::bitsize::dqword-1, 0, ZMM31, 0, 0, XMM31, false) // xmm31
178REG_SPEC(YMM0, ymm0, triton::bitsize::qqword-1, 0, ZMM0, triton::bitsize::qqword-1, 0, YMM0, true) // ymm0
179REG_SPEC(YMM1, ymm1, triton::bitsize::qqword-1, 0, ZMM1, triton::bitsize::qqword-1, 0, YMM1, true) // ymm1
180REG_SPEC(YMM2, ymm2, triton::bitsize::qqword-1, 0, ZMM2, triton::bitsize::qqword-1, 0, YMM2, true) // ymm2
181REG_SPEC(YMM3, ymm3, triton::bitsize::qqword-1, 0, ZMM3, triton::bitsize::qqword-1, 0, YMM3, true) // ymm3
182REG_SPEC(YMM4, ymm4, triton::bitsize::qqword-1, 0, ZMM4, triton::bitsize::qqword-1, 0, YMM4, true) // ymm4
183REG_SPEC(YMM5, ymm5, triton::bitsize::qqword-1, 0, ZMM5, triton::bitsize::qqword-1, 0, YMM5, true) // ymm5
184REG_SPEC(YMM6, ymm6, triton::bitsize::qqword-1, 0, ZMM6, triton::bitsize::qqword-1, 0, YMM6, true) // ymm6
185REG_SPEC(YMM7, ymm7, triton::bitsize::qqword-1, 0, ZMM7, triton::bitsize::qqword-1, 0, YMM7, true) // ymm7
186REG_SPEC(YMM8, ymm8, triton::bitsize::qqword-1, 0, ZMM8, 0, 0, YMM8, false) // ymm8
187REG_SPEC(YMM9, ymm9, triton::bitsize::qqword-1, 0, ZMM9, 0, 0, YMM9, false) // ymm9
188REG_SPEC(YMM10, ymm10, triton::bitsize::qqword-1, 0, ZMM10, 0, 0, YMM10, false) // ymm10
189REG_SPEC(YMM11, ymm11, triton::bitsize::qqword-1, 0, ZMM11, 0, 0, YMM11, false) // ymm11
190REG_SPEC(YMM12, ymm12, triton::bitsize::qqword-1, 0, ZMM12, 0, 0, YMM12, false) // ymm12
191REG_SPEC(YMM13, ymm13, triton::bitsize::qqword-1, 0, ZMM13, 0, 0, YMM13, false) // ymm13
192REG_SPEC(YMM14, ymm14, triton::bitsize::qqword-1, 0, ZMM14, 0, 0, YMM14, false) // ymm14
193REG_SPEC(YMM15, ymm15, triton::bitsize::qqword-1, 0, ZMM15, 0, 0, YMM15, false) // ymm15
195REG_SPEC(YMM16, ymm16, triton::bitsize::qqword-1, 0, ZMM16, 0, 0, YMM16, false) // ymm16
196REG_SPEC(YMM17, ymm17, triton::bitsize::qqword-1, 0, ZMM17, 0, 0, YMM17, false) // ymm17
197REG_SPEC(YMM18, ymm18, triton::bitsize::qqword-1, 0, ZMM18, 0, 0, YMM18, false) // ymm18
198REG_SPEC(YMM19, ymm19, triton::bitsize::qqword-1, 0, ZMM19, 0, 0, YMM19, false) // ymm19
199REG_SPEC(YMM20, ymm20, triton::bitsize::qqword-1, 0, ZMM20, 0, 0, YMM20, false) // ymm20
200REG_SPEC(YMM21, ymm21, triton::bitsize::qqword-1, 0, ZMM21, 0, 0, YMM21, false) // ymm21
201REG_SPEC(YMM22, ymm22, triton::bitsize::qqword-1, 0, ZMM22, 0, 0, YMM22, false) // ymm22
202REG_SPEC(YMM23, ymm23, triton::bitsize::qqword-1, 0, ZMM23, 0, 0, YMM23, false) // ymm23
203REG_SPEC(YMM24, ymm24, triton::bitsize::qqword-1, 0, ZMM24, 0, 0, YMM24, false) // ymm24
204REG_SPEC(YMM25, ymm25, triton::bitsize::qqword-1, 0, ZMM25, 0, 0, YMM25, false) // ymm25
205REG_SPEC(YMM26, ymm26, triton::bitsize::qqword-1, 0, ZMM26, 0, 0, YMM26, false) // ymm26
206REG_SPEC(YMM27, ymm27, triton::bitsize::qqword-1, 0, ZMM27, 0, 0, YMM27, false) // ymm27
207REG_SPEC(YMM28, ymm28, triton::bitsize::qqword-1, 0, ZMM28, 0, 0, YMM28, false) // ymm28
208REG_SPEC(YMM29, ymm29, triton::bitsize::qqword-1, 0, ZMM29, 0, 0, YMM29, false) // ymm29
209REG_SPEC(YMM30, ymm30, triton::bitsize::qqword-1, 0, ZMM30, 0, 0, YMM30, false) // ymm30
210REG_SPEC(YMM31, ymm31, triton::bitsize::qqword-1, 0, ZMM31, 0, 0, YMM31, false) // ymm31
214REG_SPEC(ZMM0, zmm0, triton::bitsize::dqqword-1, 0, ZMM0, 0, 0, ZMM0, false) // zmm0
215REG_SPEC(ZMM1, zmm1, triton::bitsize::dqqword-1, 0, ZMM1, 0, 0, ZMM1, false) // zmm1
216REG_SPEC(ZMM2, zmm2, triton::bitsize::dqqword-1, 0, ZMM2, 0, 0, ZMM2, false) // zmm2
217REG_SPEC(ZMM3, zmm3, triton::bitsize::dqqword-1, 0, ZMM3, 0, 0, ZMM3, false) // zmm3
218REG_SPEC(ZMM4, zmm4, triton::bitsize::dqqword-1, 0, ZMM4, 0, 0, ZMM4, false) // zmm4
219REG_SPEC(ZMM5, zmm5, triton::bitsize::dqqword-1, 0, ZMM5, 0, 0, ZMM5, false) // zmm5
220REG_SPEC(ZMM6, zmm6, triton::bitsize::dqqword-1, 0, ZMM6, 0, 0, ZMM6, false) // zmm6
221REG_SPEC(ZMM7, zmm7, triton::bitsize::dqqword-1, 0, ZMM7, 0, 0, ZMM7, false) // zmm7
222REG_SPEC(ZMM8, zmm8, triton::bitsize::dqqword-1, 0, ZMM8, 0, 0, ZMM8, false) // zmm8
223REG_SPEC(ZMM9, zmm9, triton::bitsize::dqqword-1, 0, ZMM9, 0, 0, ZMM9, false) // zmm9
224REG_SPEC(ZMM10, zmm10, triton::bitsize::dqqword-1, 0, ZMM10, 0, 0, ZMM10, false) // zmm10
225REG_SPEC(ZMM11, zmm11, triton::bitsize::dqqword-1, 0, ZMM11, 0, 0, ZMM11, false) // zmm11
226REG_SPEC(ZMM12, zmm12, triton::bitsize::dqqword-1, 0, ZMM12, 0, 0, ZMM12, false) // zmm12
227REG_SPEC(ZMM13, zmm13, triton::bitsize::dqqword-1, 0, ZMM13, 0, 0, ZMM13, false) // zmm13
228REG_SPEC(ZMM14, zmm14, triton::bitsize::dqqword-1, 0, ZMM14, 0, 0, ZMM14, false) // zmm14
229REG_SPEC(ZMM15, zmm15, triton::bitsize::dqqword-1, 0, ZMM15, 0, 0, ZMM15, false) // zmm15
230REG_SPEC(ZMM16, zmm16, triton::bitsize::dqqword-1, 0, ZMM16, 0, 0, ZMM16, false) // zmm16
231REG_SPEC(ZMM17, zmm17, triton::bitsize::dqqword-1, 0, ZMM17, 0, 0, ZMM17, false) // zmm17
232REG_SPEC(ZMM18, zmm18, triton::bitsize::dqqword-1, 0, ZMM18, 0, 0, ZMM18, false) // zmm18
233REG_SPEC(ZMM19, zmm19, triton::bitsize::dqqword-1, 0, ZMM19, 0, 0, ZMM19, false) // zmm19
234REG_SPEC(ZMM20, zmm20, triton::bitsize::dqqword-1, 0, ZMM20, 0, 0, ZMM20, false) // zmm20
235REG_SPEC(ZMM21, zmm21, triton::bitsize::dqqword-1, 0, ZMM21, 0, 0, ZMM21, false) // zmm21
236REG_SPEC(ZMM22, zmm22, triton::bitsize::dqqword-1, 0, ZMM22, 0, 0, ZMM22, false) // zmm22
237REG_SPEC(ZMM23, zmm23, triton::bitsize::dqqword-1, 0, ZMM23, 0, 0, ZMM23, false) // zmm23
238REG_SPEC(ZMM24, zmm24, triton::bitsize::dqqword-1, 0, ZMM24, 0, 0, ZMM24, false) // zmm24
239REG_SPEC(ZMM25, zmm25, triton::bitsize::dqqword-1, 0, ZMM25, 0, 0, ZMM25, false) // zmm25
240REG_SPEC(ZMM26, zmm26, triton::bitsize::dqqword-1, 0, ZMM26, 0, 0, ZMM26, false) // zmm26
241REG_SPEC(ZMM27, zmm27, triton::bitsize::dqqword-1, 0, ZMM27, 0, 0, ZMM27, false) // zmm27
242REG_SPEC(ZMM28, zmm28, triton::bitsize::dqqword-1, 0, ZMM28, 0, 0, ZMM28, false) // zmm28
243REG_SPEC(ZMM29, zmm29, triton::bitsize::dqqword-1, 0, ZMM29, 0, 0, ZMM29, false) // zmm29
244REG_SPEC(ZMM30, zmm30, triton::bitsize::dqqword-1, 0, ZMM30, 0, 0, ZMM30, false) // zmm30
245REG_SPEC(ZMM31, zmm31, triton::bitsize::dqqword-1, 0, ZMM31, 0, 0, ZMM31, false) // zmm31
249REG_SPEC(CR0, cr0, triton::bitsize::qword-1, 0, CR0, triton::bitsize::dword-1, 0, CR0, true) // cr0
250REG_SPEC(CR1, cr1, triton::bitsize::qword-1, 0, CR1, triton::bitsize::dword-1, 0, CR1, true) // cr1
251REG_SPEC(CR2, cr2, triton::bitsize::qword-1, 0, CR2, triton::bitsize::dword-1, 0, CR2, true) // cr2
252REG_SPEC(CR3, cr3, triton::bitsize::qword-1, 0, CR3, triton::bitsize::dword-1, 0, CR3, true) // cr3
253REG_SPEC(CR4, cr4, triton::bitsize::qword-1, 0, CR4, triton::bitsize::dword-1, 0, CR4, true) // cr4
254REG_SPEC(CR5, cr5, triton::bitsize::qword-1, 0, CR5, triton::bitsize::dword-1, 0, CR5, true) // cr5
255REG_SPEC(CR6, cr6, triton::bitsize::qword-1, 0, CR6, triton::bitsize::dword-1, 0, CR6, true) // cr6
256REG_SPEC(CR7, cr7, triton::bitsize::qword-1, 0, CR7, triton::bitsize::dword-1, 0, CR7, true) // cr7
257REG_SPEC(CR8, cr8, triton::bitsize::qword-1, 0, CR8, triton::bitsize::dword-1, 0, CR8, true) // cr8
258REG_SPEC(CR9, cr9, triton::bitsize::qword-1, 0, CR9, triton::bitsize::dword-1, 0, CR9, true) // cr9
259REG_SPEC(CR10, cr10, triton::bitsize::qword-1, 0, CR10, triton::bitsize::dword-1, 0, CR10, true) // cr10
260REG_SPEC(CR11, cr11, triton::bitsize::qword-1, 0, CR11, triton::bitsize::dword-1, 0, CR11, true) // cr11
261REG_SPEC(CR12, cr12, triton::bitsize::qword-1, 0, CR12, triton::bitsize::dword-1, 0, CR12, true) // cr12
262REG_SPEC(CR13, cr13, triton::bitsize::qword-1, 0, CR13, triton::bitsize::dword-1, 0, CR13, true) // cr13
263REG_SPEC(CR14, cr14, triton::bitsize::qword-1, 0, CR14, triton::bitsize::dword-1, 0, CR14, true) // cr14
264REG_SPEC(CR15, cr15, triton::bitsize::qword-1, 0, CR15, triton::bitsize::dword-1, 0, CR15, true) // cr15
268REG_SPEC(DR0, dr0, triton::bitsize::qword-1, 0, DR0, triton::bitsize::dword-1, 0, DR0, true) // dr0
269REG_SPEC(DR1, dr1, triton::bitsize::qword-1, 0, DR1, triton::bitsize::dword-1, 0, DR1, true) // dr1
270REG_SPEC(DR2, dr2, triton::bitsize::qword-1, 0, DR2, triton::bitsize::dword-1, 0, DR2, true) // dr2
271REG_SPEC(DR3, dr3, triton::bitsize::qword-1, 0, DR3, triton::bitsize::dword-1, 0, DR3, true) // dr3
272REG_SPEC(DR6, dr6, triton::bitsize::qword-1, 0, DR6, triton::bitsize::dword-1, 0, DR6, true) // dr6
273REG_SPEC(DR7, dr7, triton::bitsize::qword-1, 0, DR7, triton::bitsize::dword-1, 0, DR7, true) // dr7
275/* Flags ID used in the Taint and Symbolic Engines */
277REG_SPEC_NO_CAPSTONE(AC, ac, 0, 0, AC, 0, 0, AC, true) // ac
278REG_SPEC_NO_CAPSTONE(AF, af, 0, 0, AF, 0, 0, AF, true) // af
279REG_SPEC_NO_CAPSTONE(CF, cf, 0, 0, CF, 0, 0, CF, true) // cf
280REG_SPEC_NO_CAPSTONE(DF, df, 0, 0, DF, 0, 0, DF, true) // df
281REG_SPEC_NO_CAPSTONE(ID, id, 0, 0, ID, 0, 0, ID, true) // id
282REG_SPEC_NO_CAPSTONE(IF, if, 0, 0, IF, 0, 0, IF, true) // if
283REG_SPEC_NO_CAPSTONE(NT, nt, 0, 0, NT, 0, 0, NT, true) // nt
284REG_SPEC_NO_CAPSTONE(OF, of, 0, 0, OF, 0, 0, OF, true) // of
285REG_SPEC_NO_CAPSTONE(PF, pf, 0, 0, PF, 0, 0, PF, true) // pf
286REG_SPEC_NO_CAPSTONE(RF, rf, 0, 0, RF, 0, 0, RF, true) // rf
287REG_SPEC_NO_CAPSTONE(SF, sf, 0, 0, SF, 0, 0, SF, true) // sf
288REG_SPEC_NO_CAPSTONE(TF, tf, 0, 0, TF, 0, 0, TF, true) // tf
289REG_SPEC_NO_CAPSTONE(VIF, vif, 0, 0, VIF, 0, 0, VIF, true) // vif
290REG_SPEC_NO_CAPSTONE(VIP, vip, 0, 0, VIP, 0, 0, VIP, true) // vip
291REG_SPEC_NO_CAPSTONE(VM, vm, 0, 0, VM, 0, 0, VM, true) // vm
292REG_SPEC_NO_CAPSTONE(ZF, zf, 0, 0, ZF, 0, 0, ZF, true) // zf
296REG_SPEC_NO_CAPSTONE(SSE_IE, sse_ie, 0, 0, SSE_IE, 0, 0, SSE_IE, true) // ie (Invalid Operation Flag)
297REG_SPEC_NO_CAPSTONE(SSE_DE, sse_de, 0, 0, SSE_DE, 0, 0, SSE_DE, true) // de (Denormal Flag)
298REG_SPEC_NO_CAPSTONE(SSE_ZE, sse_ze, 0, 0, SSE_ZE, 0, 0, SSE_ZE, true) // ze (Divide By Zero Flag)
299REG_SPEC_NO_CAPSTONE(SSE_OE, sse_oe, 0, 0, SSE_OE, 0, 0, SSE_OE, true) // oe (Overflow Flag)
300REG_SPEC_NO_CAPSTONE(SSE_UE, sse_ue, 0, 0, SSE_UE, 0, 0, SSE_UE, true) // ue (Underflow Flag)
301REG_SPEC_NO_CAPSTONE(SSE_PE, sse_pe, 0, 0, SSE_PE, 0, 0, SSE_PE, true) // pe (Precision Flag)
302REG_SPEC_NO_CAPSTONE(SSE_DAZ, sse_daz, 0, 0, SSE_DAZ, 0, 0, SSE_DAZ, true) // daz (Invalid Operation Flag)
303REG_SPEC_NO_CAPSTONE(SSE_IM, sse_im, 0, 0, SSE_IM, 0, 0, SSE_IM, true) // im (Invalid Operation Mask)
304REG_SPEC_NO_CAPSTONE(SSE_DM, sse_dm, 0, 0, SSE_DM, 0, 0, SSE_DM, true) // dm (Denormal Mask)
305REG_SPEC_NO_CAPSTONE(SSE_ZM, sse_zm, 0, 0, SSE_ZM, 0, 0, SSE_ZM, true) // zm (Divide By Zero Mask)
306REG_SPEC_NO_CAPSTONE(SSE_OM, sse_om, 0, 0, SSE_OM, 0, 0, SSE_OM, true) // om (Overflow Mask)
307REG_SPEC_NO_CAPSTONE(SSE_UM, sse_um, 0, 0, SSE_UM, 0, 0, SSE_UM, true) // um (Underflow Mask)
308REG_SPEC_NO_CAPSTONE(SSE_PM, sse_pm, 0, 0, SSE_PM, 0, 0, SSE_PM, true) // pm (Precision Mask)
309REG_SPEC_NO_CAPSTONE(SSE_RL, sse_rl, 0, 0, SSE_RL, 0, 0, SSE_RL, true) // rl (Round Negative)
310REG_SPEC_NO_CAPSTONE(SSE_RH, sse_rh, 0, 0, SSE_RH, 0, 0, SSE_RH, true) // rh (Round Positive)
311REG_SPEC_NO_CAPSTONE(SSE_FZ, sse_fz, 0, 0, SSE_FZ, 0, 0, SSE_FZ, true) // fz (Flush To Zero)
315REG_SPEC_NO_CAPSTONE(FCW_IM, fcw_im, 0, 0, FCW_IM, 0, 0, FCW_IM, true) // im (Invalid Operation Mask)
316REG_SPEC_NO_CAPSTONE(FCW_DM, fcw_dm, 0, 0, FCW_DM, 0, 0, FCW_DM, true) // dm (Denormal Mask)
317REG_SPEC_NO_CAPSTONE(FCW_ZM, fcw_zm, 0, 0, FCW_ZM, 0, 0, FCW_ZM, true) // zm (Divide By Zero Mask)
318REG_SPEC_NO_CAPSTONE(FCW_OM, fcw_om, 0, 0, FCW_OM, 0, 0, FCW_OM, true) // om (Overflow Mask)
319REG_SPEC_NO_CAPSTONE(FCW_UM, fcw_um, 0, 0, FCW_UM, 0, 0, FCW_UM, true) // um (Underflow Mask)
320REG_SPEC_NO_CAPSTONE(FCW_PM, fcw_pm, 0, 0, FCW_PM, 0, 0, FCW_PM, true) // pm (Precision Mask)
321REG_SPEC_NO_CAPSTONE(FCW_PC, fcw_pc, 1, 0, FCW_PC, 1, 0, FCW_PC, true) // pc (Precision Control)
322REG_SPEC_NO_CAPSTONE(FCW_RC, fcw_rc, 1, 0, FCW_RC, 1, 0, FCW_RC, true) // rc (Rounding Control)
323REG_SPEC_NO_CAPSTONE(FCW_X, fcw_x, 0, 0, FCW_X, 0, 0, FCW_X, true) // x (Infinity Control)
325REG_SPEC_NO_CAPSTONE(FSW_IE, fsw_ie, 0, 0, FSW_IE, 0, 0, FSW_IE, true) // ie (Invalid Operation Mask)
326REG_SPEC_NO_CAPSTONE(FSW_DE, fsw_de, 0, 0, FSW_DE, 0, 0, FSW_DE, true) // de (Denormal Mask)
327REG_SPEC_NO_CAPSTONE(FSW_ZE, fsw_ze, 0, 0, FSW_ZE, 0, 0, FSW_ZE, true) // ze (Divide By Zero Mask)
328REG_SPEC_NO_CAPSTONE(FSW_OE, fsw_oe, 0, 0, FSW_OE, 0, 0, FSW_OE, true) // oe (Overflow Mask)
329REG_SPEC_NO_CAPSTONE(FSW_UE, fsw_ue, 0, 0, FSW_UE, 0, 0, FSW_UE, true) // ue (Underflow Mask)
330REG_SPEC_NO_CAPSTONE(FSW_PE, fsw_pe, 0, 0, FSW_PE, 0, 0, FSW_PE, true) // pe (Precision Mask)
331REG_SPEC_NO_CAPSTONE(FSW_SF, fsw_sf, 0, 0, FSW_SF, 0, 0, FSW_SF, true) // sf (Stack Fault)
332REG_SPEC_NO_CAPSTONE(FSW_ES, fsw_es, 0, 0, FSW_ES, 0, 0, FSW_ES, true) // ef (Error Summary Status)
333REG_SPEC_NO_CAPSTONE(FSW_C0, fsw_c0, 0, 0, FSW_C0, 0, 0, FSW_C0, true) // c0 (Condition Code 0)
334REG_SPEC_NO_CAPSTONE(FSW_C1, fsw_c1, 0, 0, FSW_C1, 0, 0, FSW_C1, true) // c1 (Condition Code 1)
335REG_SPEC_NO_CAPSTONE(FSW_C2, fsw_c2, 0, 0, FSW_C2, 0, 0, FSW_C2, true) // c2 (Condition Code 2)
336REG_SPEC_NO_CAPSTONE(FSW_TOP, fsw_top, 2, 0, FSW_TOP, 2, 0, FSW_TOP, true) // top (Top of Stack Pointer)
337REG_SPEC_NO_CAPSTONE(FSW_C3, fsw_c3, 0, 0, FSW_C3, 0, 0, FSW_C3, true) // c3 (Condition Code 3)
338REG_SPEC_NO_CAPSTONE(FSW_B, fsw_b, 0, 0, FSW_B, 0, 0, FSW_B, true) // b (FPU Busy)
342REG_SPEC_NO_CAPSTONE(EFER, efer, triton::bitsize::qword-1, 0, EFER, triton::bitsize::qword-1, 0, EFER, false) // efer
344REG_SPEC_NO_CAPSTONE(EFER_TCE, efer_tce, 0, 0, EFER_TCE, 0, 0, EFER_TCE, false) // efer_tce
345REG_SPEC_NO_CAPSTONE(EFER_FFXSR, efer_ffxsr, 0, 0, EFER_FFXSR, 0, 0, EFER_FFXSR, false) // efer_ffxsr
346REG_SPEC_NO_CAPSTONE(EFER_LMSLE, efer_lmsle, 0, 0, EFER_LMSLE, 0, 0, EFER_LMSLE, false) // efer_lmsle
347REG_SPEC_NO_CAPSTONE(EFER_SVME, efer_svme, 0, 0, EFER_SVME, 0, 0, EFER_SVME, false) // efer_svme
348REG_SPEC_NO_CAPSTONE(EFER_NXE, efer_nxe, 0, 0, EFER_NXE, 0, 0, EFER_NXE, false) // efer_nxe
349REG_SPEC_NO_CAPSTONE(EFER_LMA, efer_lma, 0, 0, EFER_LMA, 0, 0, EFER_LMA, false) // efer_lma
350REG_SPEC_NO_CAPSTONE(EFER_LME, efer_lme, 0, 0, EFER_LME, 0, 0, EFER_LME, false) // efer_lme
351REG_SPEC_NO_CAPSTONE(EFER_SCE, efer_sce, 0, 0, EFER_SCE, 0, 0, EFER_SCE, false) // efer_sce
355REG_SPEC(CS, cs, triton::bitsize::qword-1, 0, CS, triton::bitsize::dword-1, 0, CS, true) // Code Segment
356REG_SPEC(DS, ds, triton::bitsize::qword-1, 0, DS, triton::bitsize::dword-1, 0, DS, true) // Data Segment
357REG_SPEC(ES, es, triton::bitsize::qword-1, 0, ES, triton::bitsize::dword-1, 0, ES, true) // Extra Segment
358REG_SPEC(FS, fs, triton::bitsize::qword-1, 0, FS, triton::bitsize::dword-1, 0, FS, true) // FS Segment
359REG_SPEC(GS, gs, triton::bitsize::qword-1, 0, GS, triton::bitsize::dword-1, 0, GS, true) // GS Segment
360REG_SPEC(SS, ss, triton::bitsize::qword-1, 0, SS, triton::bitsize::dword-1, 0, SS, true) // Stack Segment
362/* Model-Specific Registers (MSR) */
364REG_SPEC_NO_CAPSTONE(TSC, tsc, triton::bitsize::qword-1, 0, TSC, triton::bitsize::qword-1, 0, TSC, true) // Time-Stamp Counter
367#undef REG_SPEC_NO_CAPSTONE
369#pragma warning(default:4067)