OSDN Git Service

libintel64asm init
[drdeamon64/drdeamon64.git] / libintel64asm / drd64_intel64_dbtype.h
1 /*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
2
3                          D r . D e a m o n  6 4
4                         for INTEL64(R), AMD64(R)
5     
6    Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
7
8 Redistribution and use in source and binary forms, with or without
9 modification, are permitted provided that the following conditions are met:
10
11  1. Redistributions of source code must retain the above copyright notice,
12     this list of conditions and the following disclaimer.
13  2. Redistributions in binary form must reproduce the above copyright
14     notice, this list of conditions and the following disclaimer in the
15     documentation and/or other materials provided with the distribution.
16
17 THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
18 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
21 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
27 OF THE POSSIBILITY OF SUCH DAMAGE.
28
29 DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
30
31 /* File Info -----------------------------------------------------------
32 File: drd64_intel64_dbtype.h
33 Function: Intel64 Nimonic DataBase Defines Header
34 Comment: none
35 ----------------------------------------------------------------------*/
36
37 #ifndef DRD64_HEADER_INTEL64_DBTYPE
38 #define DRD64_HEADER_INTEL64_DBTYPE
39
40 #include"drd64_intel64.h"
41
42 #define MAX_INSTRUCTION         20
43 #define MAX_OPERAND_METHODTYPE_LENGTH   7
44 #define MAX_OPERAND_DATASIZE_LENGTH     5
45 #define MAX_OPERAND     50
46
47 #define INTEL64_CODETYPE_SEGMENT                0x03
48 #define INTEL64_CODETYPE_REX                    0x04
49 #define INTEL64_CODETYPE_PREFIX                 0x01
50 #define INTEL64_CODETYPE_ESCAPE                 0x02
51 #define INTEL64_CODETYPE_FPUBYTE1               0x05
52 #define INTEL64_CODETYPE_ESCAPE2                0x06
53 #define INTEL64_CODETYPE_ILLEGAL                0x09
54 #define INTEL64_CODETYPE_FPU_MEM                0x07
55 #define INTEL64_CODETYPE_FPU_REG                0x08
56 #define INTEL64_CODETYPE_ERROR                  0xff
57 #define INTEL64_CODETYPE_NOINSTRUCTION  0xf0
58
59 #define INTEL64_BITFREE                         86
60 #define INTEL64_BIT32ONLY                       32
61 #define INTEL64_BIT64ONLY                       64
62
63 #define INTEL64_MODTYPE_REG                     3
64 #define INTEL64_MODTYPE_NONE            4
65 #define INTEL64_MODTYPE_REQUIRE         5
66 #define INTEL64_MODTYPE_MEMREG          6
67 #define INTEL64_MODTYPE_MEM                     7
68 #define INTEL64_MODTYPE_FPU                     8
69 #define INTEL64_MODTYPE_NONE_FPU        9
70 #define INTEL64_MODTYPE_ESCAPE          10
71 #define INTEL64_MODTYPE_ERROR           15
72
73
74
75 /* Opeland Type Defines */
76 /*
77         Bit 15: have ModR/M
78         Bit 14: have SIB
79         Bit 13: have Immidiate Data  
80         Bit 12:
81         Bit 11:
82         Bit 10:
83         Bit  9: 
84         Bit  8:
85         Bit  7:
86         Bit  6:
87         Bit  5:
88         Bit  4:
89         Bit  3:
90         Bit  2:
91         Bit  1:
92         Bit  0:
93
94 */
95 #define OPTYPE_BASE_REG         0x0000
96 #define OPTYPE_BASE_DATA        0x8000
97
98 #define OPTYPE_BASE_REG_TYPEMASK        0x7000|OPTYPE_BASE_REG
99 #define OPTYPE_BASE_REG_GENERIC         0x1000|OPTYPE_BASE_REG
100 #define OPTYPE_BASE_REG_SEGMENT         0x2000|OPTYPE_BASE_REG
101 #define OPTYPE_BASE_REG_CONTROL         0x3000|OPTYPE_BASE_REG
102 #define OPTYPE_BASE_REG_FPU                     0x4000|OPTYPE_BASE_REG
103 #define OPTYPE_BASE_REG_DEBUG           0x5000|OPTYPE_BASE_REG
104 #define OPTYPE_BASE_REG_MMX                     0x6000|OPTYPE_BASE_REG
105 #define OPTYPE_BASE_REG_SSE                     0x7000|OPTYPE_BASE_REG
106 #define OPTYPE_BASE_REG_OTHER           0x0000|OPTYPE_BASE_REG
107
108 #define OPTYPE_BASE_REG_SIZEMASK        0x00f0
109 #define OPTYPE_BASE_REG_64BIT           0x0080
110 #define OPTYPE_BASE_REG_32BIT           0x0040
111 #define OPTYPE_BASE_REG_16BIT           0x0020
112 #define OPTYPE_BASE_REG_8BIT            0x0010
113
114 #define OPTYPE_BASE_REG_8BIT_HIGH       0x0002|OPTYPE_BASE_REG_8BIT
115 #define OPTYPE_BASE_REG_8BIT_LOW        0x0001|OPTYPE_BASE_REG_8BIT
116
117 #define OPTYPE_BASE_REG_IDMASK                  0x0f00  
118 #define OPTYPE_BASE_REG_GENERIC_IDMASK  0x0f00|OPTYPE_BASE_REG_GENERIC  
119 #define OPTYPE_BASE_REG_GENERIC_AX              0x0000|OPTYPE_BASE_REG_GENERIC  
120 #define OPTYPE_BASE_REG_GENERIC_CX              0x0100|OPTYPE_BASE_REG_GENERIC
121 #define OPTYPE_BASE_REG_GENERIC_DX              0x0200|OPTYPE_BASE_REG_GENERIC
122 #define OPTYPE_BASE_REG_GENERIC_BX              0x0300|OPTYPE_BASE_REG_GENERIC
123 #define OPTYPE_BASE_REG_GENERIC_SP              0x0400|OPTYPE_BASE_REG_GENERIC
124 #define OPTYPE_BASE_REG_GENERIC_BP              0x0500|OPTYPE_BASE_REG_GENERIC
125 #define OPTYPE_BASE_REG_GENERIC_SI              0x0600|OPTYPE_BASE_REG_GENERIC
126 #define OPTYPE_BASE_REG_GENERIC_DI              0x0700|OPTYPE_BASE_REG_GENERIC
127 #define OPTYPE_BASE_REG_GENERIC_R8              0x0800|OPTYPE_BASE_REG_GENERIC
128 #define OPTYPE_BASE_REG_GENERIC_R9              0x0900|OPTYPE_BASE_REG_GENERIC
129 #define OPTYPE_BASE_REG_GENERIC_R10             0x0a00|OPTYPE_BASE_REG_GENERIC
130 #define OPTYPE_BASE_REG_GENERIC_R11             0x0b00|OPTYPE_BASE_REG_GENERIC
131 #define OPTYPE_BASE_REG_GENERIC_R12             0x0c00|OPTYPE_BASE_REG_GENERIC
132 #define OPTYPE_BASE_REG_GENERIC_R13             0x0d00|OPTYPE_BASE_REG_GENERIC
133 #define OPTYPE_BASE_REG_GENERIC_R14             0x0e00|OPTYPE_BASE_REG_GENERIC
134 #define OPTYPE_BASE_REG_GENERIC_R15             0x0f00|OPTYPE_BASE_REG_GENERIC
135
136
137 #define OPTYPE_REG_RAX          (OPTYPE_BASE_REG_GENERIC_AX|OPTYPE_BASE_REG_64BIT)
138 #define OPTYPE_REG_EAX          (OPTYPE_BASE_REG_GENERIC_AX|OPTYPE_BASE_REG_32BIT)
139 #define OPTYPE_REG_AX           (OPTYPE_BASE_REG_GENERIC_AX|OPTYPE_BASE_REG_16BIT)
140 #define OPTYPE_REG_AH           (OPTYPE_BASE_REG_GENERIC_AX|OPTYPE_BASE_REG_8BIT_HIGH)
141 #define OPTYPE_REG_AL           (OPTYPE_BASE_REG_GENERIC_AX|OPTYPE_BASE_REG_8BIT_LOW)
142 #define OPTYPE_REG_RCX          (OPTYPE_BASE_REG_GENERIC_CX|OPTYPE_BASE_REG_64BIT)
143 #define OPTYPE_REG_ECX          (OPTYPE_BASE_REG_GENERIC_CX|OPTYPE_BASE_REG_32BIT)
144 #define OPTYPE_REG_CX           (OPTYPE_BASE_REG_GENERIC_CX|OPTYPE_BASE_REG_16BIT)
145 #define OPTYPE_REG_CH           (OPTYPE_BASE_REG_GENERIC_CX|OPTYPE_BASE_REG_8BIT_HIGH)
146 #define OPTYPE_REG_CL           (OPTYPE_BASE_REG_GENERIC_CX|OPTYPE_BASE_REG_8BIT_LOW)
147 #define OPTYPE_REG_RDX          (OPTYPE_BASE_REG_GENERIC_DX|OPTYPE_BASE_REG_64BIT)
148 #define OPTYPE_REG_EDX          (OPTYPE_BASE_REG_GENERIC_DX|OPTYPE_BASE_REG_32BIT)
149 #define OPTYPE_REG_DX           (OPTYPE_BASE_REG_GENERIC_DX|OPTYPE_BASE_REG_16BIT)
150 #define OPTYPE_REG_DH           (OPTYPE_BASE_REG_GENERIC_DX|OPTYPE_BASE_REG_8BIT_HIGH)
151 #define OPTYPE_REG_DL           (OPTYPE_BASE_REG_GENERIC_DX|OPTYPE_BASE_REG_8BIT_LOW)
152 #define OPTYPE_REG_RBX          (OPTYPE_BASE_REG_GENERIC_BX|OPTYPE_BASE_REG_64BIT)
153 #define OPTYPE_REG_EBX          (OPTYPE_BASE_REG_GENERIC_BX|OPTYPE_BASE_REG_32BIT)
154 #define OPTYPE_REG_BX           (OPTYPE_BASE_REG_GENERIC_BX|OPTYPE_BASE_REG_16BIT)
155 #define OPTYPE_REG_BH           (OPTYPE_BASE_REG_GENERIC_BX|OPTYPE_BASE_REG_8BIT_HIGH)
156 #define OPTYPE_REG_BL           (OPTYPE_BASE_REG_GENERIC_BX|OPTYPE_BASE_REG_8BIT_LOW)
157 #define OPTYPE_REG_RSP          (OPTYPE_BASE_REG_GENERIC_SP|OPTYPE_BASE_REG_64BIT)
158 #define OPTYPE_REG_ESP          (OPTYPE_BASE_REG_GENERIC_SP|OPTYPE_BASE_REG_32BIT)
159 #define OPTYPE_REG_SP           (OPTYPE_BASE_REG_GENERIC_SP|OPTYPE_BASE_REG_16BIT)
160 #define OPTYPE_REG_RBP          (OPTYPE_BASE_REG_GENERIC_BP|OPTYPE_BASE_REG_64BIT)
161 #define OPTYPE_REG_EBP          (OPTYPE_BASE_REG_GENERIC_BP|OPTYPE_BASE_REG_32BIT)
162 #define OPTYPE_REG_BP           (OPTYPE_BASE_REG_GENERIC_BP|OPTYPE_BASE_REG_16BIT)
163 #define OPTYPE_REG_RSI          (OPTYPE_BASE_REG_GENERIC_SI|OPTYPE_BASE_REG_64BIT)
164 #define OPTYPE_REG_ESI          (OPTYPE_BASE_REG_GENERIC_SI|OPTYPE_BASE_REG_32BIT)
165 #define OPTYPE_REG_SI           (OPTYPE_BASE_REG_GENERIC_SI|OPTYPE_BASE_REG_16BIT)
166 #define OPTYPE_REG_RDI          (OPTYPE_BASE_REG_GENERIC_DI|OPTYPE_BASE_REG_64BIT)
167 #define OPTYPE_REG_EDI          (OPTYPE_BASE_REG_GENERIC_DI|OPTYPE_BASE_REG_32BIT)
168 #define OPTYPE_REG_DI           (OPTYPE_BASE_REG_GENERIC_DI|OPTYPE_BASE_REG_16BIT)
169 #define OPTYPE_REG_R8B          (OPTYPE_BASE_REG_GENERIC_R8|OPTYPE_BASE_REG_8BIT_LOW)
170 #define OPTYPE_REG_R8W          (OPTYPE_BASE_REG_GENERIC_R8|OPTYPE_BASE_REG_16BIT)
171 #define OPTYPE_REG_R8D          (OPTYPE_BASE_REG_GENERIC_R8|OPTYPE_BASE_REG_32BIT)
172 #define OPTYPE_REG_R8           (OPTYPE_BASE_REG_GENERIC_R8|OPTYPE_BASE_REG_64BIT)
173 #define OPTYPE_REG_R9B          (OPTYPE_BASE_REG_GENERIC_R9|OPTYPE_BASE_REG_8BIT_LOW)
174 #define OPTYPE_REG_R9W          (OPTYPE_BASE_REG_GENERIC_R9|OPTYPE_BASE_REG_16BIT)
175 #define OPTYPE_REG_R9D          (OPTYPE_BASE_REG_GENERIC_R9|OPTYPE_BASE_REG_32BIT)
176 #define OPTYPE_REG_R9           (OPTYPE_BASE_REG_GENERIC_R9|OPTYPE_BASE_REG_64BIT)
177 #define OPTYPE_REG_R10B         (OPTYPE_BASE_REG_GENERIC_R10|OPTYPE_BASE_REG_8BIT_LOW)
178 #define OPTYPE_REG_R10W         (OPTYPE_BASE_REG_GENERIC_R10|OPTYPE_BASE_REG_16BIT)
179 #define OPTYPE_REG_R10D         (OPTYPE_BASE_REG_GENERIC_R10|OPTYPE_BASE_REG_32BIT)
180 #define OPTYPE_REG_R10          (OPTYPE_BASE_REG_GENERIC_R10|OPTYPE_BASE_REG_64BIT)
181 #define OPTYPE_REG_R11B         (OPTYPE_BASE_REG_GENERIC_R11|OPTYPE_BASE_REG_8BIT_LOW)
182 #define OPTYPE_REG_R11W         (OPTYPE_BASE_REG_GENERIC_R11|OPTYPE_BASE_REG_16BIT)
183 #define OPTYPE_REG_R11D         (OPTYPE_BASE_REG_GENERIC_R11|OPTYPE_BASE_REG_32BIT)
184 #define OPTYPE_REG_R11          (OPTYPE_BASE_REG_GENERIC_R11|OPTYPE_BASE_REG_64BIT)
185 #define OPTYPE_REG_R12B         (OPTYPE_BASE_REG_GENERIC_R12|OPTYPE_BASE_REG_8BIT_LOW)
186 #define OPTYPE_REG_R12W         (OPTYPE_BASE_REG_GENERIC_R12|OPTYPE_BASE_REG_16BIT)
187 #define OPTYPE_REG_R12D         (OPTYPE_BASE_REG_GENERIC_R12|OPTYPE_BASE_REG_32BIT)
188 #define OPTYPE_REG_R12          (OPTYPE_BASE_REG_GENERIC_R12|OPTYPE_BASE_REG_64BIT)
189 #define OPTYPE_REG_R13B         (OPTYPE_BASE_REG_GENERIC_R13|OPTYPE_BASE_REG_8BIT_LOW)
190 #define OPTYPE_REG_R13W         (OPTYPE_BASE_REG_GENERIC_R13|OPTYPE_BASE_REG_16BIT)
191 #define OPTYPE_REG_R13D         (OPTYPE_BASE_REG_GENERIC_R13|OPTYPE_BASE_REG_32BIT)
192 #define OPTYPE_REG_R13          (OPTYPE_BASE_REG_GENERIC_R13|OPTYPE_BASE_REG_64BIT)
193 #define OPTYPE_REG_R14B         (OPTYPE_BASE_REG_GENERIC_R14|OPTYPE_BASE_REG_8BIT_LOW)
194 #define OPTYPE_REG_R14W         (OPTYPE_BASE_REG_GENERIC_R14|OPTYPE_BASE_REG_16BIT)
195 #define OPTYPE_REG_R14D         (OPTYPE_BASE_REG_GENERIC_R14|OPTYPE_BASE_REG_32BIT)
196 #define OPTYPE_REG_R14          (OPTYPE_BASE_REG_GENERIC_R14|OPTYPE_BASE_REG_64BIT)
197 #define OPTYPE_REG_R15B         (OPTYPE_BASE_REG_GENERIC_R15|OPTYPE_BASE_REG_8BIT_LOW)
198 #define OPTYPE_REG_R15W         (OPTYPE_BASE_REG_GENERIC_R15|OPTYPE_BASE_REG_16BIT)
199 #define OPTYPE_REG_R15D         (OPTYPE_BASE_REG_GENERIC_R15|OPTYPE_BASE_REG_32BIT)
200 #define OPTYPE_REG_R15          (OPTYPE_BASE_REG_GENERIC_R15|OPTYPE_BASE_REG_64BIT)
201
202 #define OPTYPE_REG_FPU_ST0                      (0x0000|OPTYPE_BASE_REG_FPU)
203 #define OPTYPE_REG_FPU_ST1                      (0x0100|OPTYPE_BASE_REG_FPU)
204 #define OPTYPE_REG_FPU_ST2                      (0x0200|OPTYPE_BASE_REG_FPU)
205 #define OPTYPE_REG_FPU_ST3                      (0x0300|OPTYPE_BASE_REG_FPU)
206 #define OPTYPE_REG_FPU_ST4                      (0x0400|OPTYPE_BASE_REG_FPU)
207 #define OPTYPE_REG_FPU_ST5                      (0x0500|OPTYPE_BASE_REG_FPU)
208 #define OPTYPE_REG_FPU_ST6                      (0x0600|OPTYPE_BASE_REG_FPU)
209 #define OPTYPE_REG_FPU_ST7                      (0x0700|OPTYPE_BASE_REG_FPU)
210
211 #define OPTYPE_REG_ES                           (0x0000|OPTYPE_BASE_REG_SEGMENT)
212 #define OPTYPE_REG_CS                           (0x0100|OPTYPE_BASE_REG_SEGMENT)
213 #define OPTYPE_REG_SS                           (0x0200|OPTYPE_BASE_REG_SEGMENT)
214 #define OPTYPE_REG_DS                           (0x0300|OPTYPE_BASE_REG_SEGMENT)
215 #define OPTYPE_REG_FS                           (0x0400|OPTYPE_BASE_REG_SEGMENT)
216 #define OPTYPE_REG_GS                           (0x0500|OPTYPE_BASE_REG_SEGMENT)
217
218 #define OPTYPE_REG_CR0                          (0x0000|OPTYPE_BASE_REG_CONTROL)
219 #define OPTYPE_REG_CR1                          (0x0100|OPTYPE_BASE_REG_CONTROL)
220 #define OPTYPE_REG_CR2                          (0x0200|OPTYPE_BASE_REG_CONTROL)
221 #define OPTYPE_REG_CR3                          (0x0300|OPTYPE_BASE_REG_CONTROL)
222 #define OPTYPE_REG_CR4                          (0x0400|OPTYPE_BASE_REG_CONTROL)
223 #define OPTYPE_REG_CR5                          (0x0500|OPTYPE_BASE_REG_CONTROL)
224 #define OPTYPE_REG_CR6                          (0x0600|OPTYPE_BASE_REG_CONTROL)
225 #define OPTYPE_REG_CR7                          (0x0700|OPTYPE_BASE_REG_CONTROL)
226 #define OPTYPE_REG_CR8                          (0x0800|OPTYPE_BASE_REG_CONTROL)
227 #define OPTYPE_REG_CR9                          (0x0900|OPTYPE_BASE_REG_CONTROL)
228 #define OPTYPE_REG_CR10                         (0x0a00|OPTYPE_BASE_REG_CONTROL)
229 #define OPTYPE_REG_CR11                         (0x0b00|OPTYPE_BASE_REG_CONTROL)
230 #define OPTYPE_REG_CR12                         (0x0c00|OPTYPE_BASE_REG_CONTROL)
231 #define OPTYPE_REG_CR13                         (0x0d00|OPTYPE_BASE_REG_CONTROL)
232 #define OPTYPE_REG_CR14                         (0x0e00|OPTYPE_BASE_REG_CONTROL)
233 #define OPTYPE_REG_CR15                         (0x0f00|OPTYPE_BASE_REG_CONTROL)
234
235 #define OPTYPE_REG_DR0                          (0x0000|OPTYPE_BASE_REG_DEBUG)
236 #define OPTYPE_REG_DR1                          (0x0100|OPTYPE_BASE_REG_DEBUG)
237 #define OPTYPE_REG_DR2                          (0x0200|OPTYPE_BASE_REG_DEBUG)
238 #define OPTYPE_REG_DR3                          (0x0300|OPTYPE_BASE_REG_DEBUG)
239 #define OPTYPE_REG_DR4                          (0x0400|OPTYPE_BASE_REG_DEBUG)
240 #define OPTYPE_REG_DR5                          (0x0500|OPTYPE_BASE_REG_DEBUG)
241 #define OPTYPE_REG_DR6                          (0x0600|OPTYPE_BASE_REG_DEBUG)
242 #define OPTYPE_REG_DR7                          (0x0700|OPTYPE_BASE_REG_DEBUG)
243 #define OPTYPE_REG_DR8                          (0x0800|OPTYPE_BASE_REG_DEBUG)
244 #define OPTYPE_REG_DR9                          (0x0900|OPTYPE_BASE_REG_DEBUG)
245 #define OPTYPE_REG_DR10                         (0x0a00|OPTYPE_BASE_REG_DEBUG)
246 #define OPTYPE_REG_DR11                         (0x0b00|OPTYPE_BASE_REG_DEBUG)
247 #define OPTYPE_REG_DR12                         (0x0c00|OPTYPE_BASE_REG_DEBUG)
248 #define OPTYPE_REG_DR13                         (0x0d00|OPTYPE_BASE_REG_DEBUG)
249 #define OPTYPE_REG_DR14                         (0x0e00|OPTYPE_BASE_REG_DEBUG)
250 #define OPTYPE_REG_DR15                         (0x0f00|OPTYPE_BASE_REG_DEBUG)
251
252 #define OPTYPE_REG_MMX0                         (0x0000|OPTYPE_BASE_REG_MMX)
253 #define OPTYPE_REG_MMX1                         (0x0100|OPTYPE_BASE_REG_MMX)
254 #define OPTYPE_REG_MMX2                         (0x0200|OPTYPE_BASE_REG_MMX)
255 #define OPTYPE_REG_MMX3                         (0x0300|OPTYPE_BASE_REG_MMX)
256 #define OPTYPE_REG_MMX4                         (0x0400|OPTYPE_BASE_REG_MMX)
257 #define OPTYPE_REG_MMX5                         (0x0500|OPTYPE_BASE_REG_MMX)
258 #define OPTYPE_REG_MMX6                         (0x0600|OPTYPE_BASE_REG_MMX)
259 #define OPTYPE_REG_MMX7                         (0x0700|OPTYPE_BASE_REG_MMX)
260
261 #define OPTYPE_REG_SSE0                         (0x0000|OPTYPE_BASE_REG_SSE)
262 #define OPTYPE_REG_SSE1                         (0x0100|OPTYPE_BASE_REG_SSE)
263 #define OPTYPE_REG_SSE2                         (0x0200|OPTYPE_BASE_REG_SSE)
264 #define OPTYPE_REG_SSE3                         (0x0300|OPTYPE_BASE_REG_SSE)
265 #define OPTYPE_REG_SSE4                         (0x0400|OPTYPE_BASE_REG_SSE)
266 #define OPTYPE_REG_SSE5                         (0x0500|OPTYPE_BASE_REG_SSE)
267 #define OPTYPE_REG_SSE6                         (0x0600|OPTYPE_BASE_REG_SSE)
268 #define OPTYPE_REG_SSE7                         (0x0700|OPTYPE_BASE_REG_SSE)
269 #define OPTYPE_REG_SSE8                         (0x0800|OPTYPE_BASE_REG_SSE)
270 #define OPTYPE_REG_SSE9                         (0x0900|OPTYPE_BASE_REG_SSE)
271 #define OPTYPE_REG_SSE10                        (0x0a00|OPTYPE_BASE_REG_SSE)
272 #define OPTYPE_REG_SSE11                        (0x0b00|OPTYPE_BASE_REG_SSE)
273 #define OPTYPE_REG_SSE12                        (0x0c00|OPTYPE_BASE_REG_SSE)
274 #define OPTYPE_REG_SSE13                        (0x0d00|OPTYPE_BASE_REG_SSE)
275 #define OPTYPE_REG_SSE14                        (0x0e00|OPTYPE_BASE_REG_SSE)
276 #define OPTYPE_REG_SSE15                        (0x0f00|OPTYPE_BASE_REG_SSE)
277
278 #define OPTYPE_REG_RIP                          (0x0100|OPTYPE_BASE_REG_OTHER|OPTYPE_BASE_REG_64BIT)
279 #define OPTYPE_REG_INVAILD                      (0x0fff|OPTYPE_BASE_REG_OTHER)
280 /*
281         Bit 15: Type = Data
282         Bit 14: ModR/M = 1, Immediate = 0
283         Bit 13: [ModR/M] Field Mod
284         Bit 12: [ModR/M] Field reg
285         Bit 11: [ModR/M] Field R/M
286         Bit 10: Memory Address
287         Bit  9:
288         Bit  8:
289         Bit  7: General Register
290         Bit  6: Segment Register
291         Bit  5: Debug Register
292         Bit  4: Control Register
293         Bit  3: Packed-QuadWord MMX Register
294         Bit  2: 128bit XMM Register
295         Bit  1: Others Register
296         Bit  0: <Reserved> 
297 */
298 #define OPTYPE_BASE_DATA_MODRM                  0x4000|OPTYPE_BASE_DATA
299 #define OPTYPE_BASE_DATA_IMMEDIATE              0x0000|OPTYPE_BASE_DATA
300
301 #define OPTYPE_BASE_DATA_MODRM_FLD_MOD          0x2000|OPTYPE_BASE_DATA_MODRM
302 #define OPTYPE_BASE_DATA_MODRM_FLD_REG          0x1000|OPTYPE_BASE_DATA_MODRM
303 #define OPTYPE_BASE_DATA_MODRM_FLD_RM           0x0800|OPTYPE_BASE_DATA_MODRM
304 #define OPTYPE_BASE_DATA_MODRM_FLD_FULL         0x3800|OPTYPE_BASE_DATA_MODRM
305 #define OPTYPE_BASE_DATA_MODRM_MEMORY           0x0400|OPTYPE_BASE_DATA_MODRM
306
307 #define OPTYPE_BASE_DATA_MODRM_REG_GENERAL      0x0080
308 #define OPTYPE_BASE_DATA_MODRM_REG_SEGMENT      0x0040
309 #define OPTYPE_BASE_DATA_MODRM_REG_DEBUG        0x0020
310 #define OPTYPE_BASE_DATA_MODRM_REG_CONTROL      0x0010
311 #define OPTYPE_BASE_DATA_MODRM_REG_PQMMX        0x0008
312 #define OPTYPE_BASE_DATA_MODRM_REG_128XMM       0x0004
313 #define OPTYPE_BASE_DATA_MODRM_REG_OTHER        0x0002
314 #define OPTYPE_BASE_DATA_MODRM_REG_FULL         0x00fe
315
316 #define OPTYPE_REG_RAX_STR      "rax"           
317 #define OPTYPE_REG_EAX_STR      "eax"           
318 #define OPTYPE_REG_AX_STR       "ax"            
319 #define OPTYPE_REG_AH_STR       "ah"            
320 #define OPTYPE_REG_AL_STR       "al"            
321 #define OPTYPE_REG_RCX_STR      "rcx"           
322 #define OPTYPE_REG_ECX_STR      "ecx"           
323 #define OPTYPE_REG_CX_STR       "cx"            
324 #define OPTYPE_REG_CH_STR       "ch"            
325 #define OPTYPE_REG_CL_STR       "cl"            
326 #define OPTYPE_REG_RDX_STR      "rdx"           
327 #define OPTYPE_REG_EDX_STR      "edx"           
328 #define OPTYPE_REG_DX_STR       "dx"            
329 #define OPTYPE_REG_DH_STR       "dh"            
330 #define OPTYPE_REG_DL_STR       "dl"            
331 #define OPTYPE_REG_RBX_STR      "rbx"           
332 #define OPTYPE_REG_EBX_STR      "ebx"           
333 #define OPTYPE_REG_BX_STR       "bx"            
334 #define OPTYPE_REG_BH_STR       "bh"            
335 #define OPTYPE_REG_BL_STR       "bl"            
336 #define OPTYPE_REG_RSP_STR      "rsp"           
337 #define OPTYPE_REG_ESP_STR      "esp"           
338 #define OPTYPE_REG_SP_STR       "sp"            
339 #define OPTYPE_REG_RBP_STR      "rbp"           
340 #define OPTYPE_REG_EBP_STR      "ebp"           
341 #define OPTYPE_REG_BP_STR       "bp"            
342 #define OPTYPE_REG_RSI_STR      "rsi"           
343 #define OPTYPE_REG_ESI_STR      "esi"           
344 #define OPTYPE_REG_SI_STR       "si"            
345 #define OPTYPE_REG_RDI_STR      "rdi"           
346 #define OPTYPE_REG_EDI_STR      "edi"           
347 #define OPTYPE_REG_DI_STR       "di"            
348 #define OPTYPE_REG_R8B_STR      "r8l"           
349 #define OPTYPE_REG_R8W_STR      "r8w"           
350 #define OPTYPE_REG_R8D_STR      "r8d"           
351 #define OPTYPE_REG_R8_STR       "r8"            
352 #define OPTYPE_REG_R9B_STR      "r9l"           
353 #define OPTYPE_REG_R9W_STR      "r9w"           
354 #define OPTYPE_REG_R9D_STR      "r9d"           
355 #define OPTYPE_REG_R9_STR       "r9"            
356 #define OPTYPE_REG_R10B_STR     "r10l"          
357 #define OPTYPE_REG_R10W_STR     "r10w"          
358 #define OPTYPE_REG_R10D_STR     "r10d"          
359 #define OPTYPE_REG_R10_STR      "r10"           
360 #define OPTYPE_REG_R11B_STR     "r11l"          
361 #define OPTYPE_REG_R11W_STR     "r11w"          
362 #define OPTYPE_REG_R11D_STR     "r11d"          
363 #define OPTYPE_REG_R11_STR      "r11"           
364 #define OPTYPE_REG_R12B_STR     "r12l"          
365 #define OPTYPE_REG_R12W_STR     "r12w"          
366 #define OPTYPE_REG_R12D_STR     "r12d"          
367 #define OPTYPE_REG_R12_STR      "r12"           
368 #define OPTYPE_REG_R13B_STR     "r13l"          
369 #define OPTYPE_REG_R13W_STR     "r13w"          
370 #define OPTYPE_REG_R13D_STR     "r13d"          
371 #define OPTYPE_REG_R13_STR      "r13"           
372 #define OPTYPE_REG_R14B_STR     "r14l"          
373 #define OPTYPE_REG_R14W_STR     "r14w"          
374 #define OPTYPE_REG_R14D_STR     "r14d"          
375 #define OPTYPE_REG_R14_STR      "r14"           
376 #define OPTYPE_REG_R15B_STR     "r15l"          
377 #define OPTYPE_REG_R15W_STR     "r15w"          
378 #define OPTYPE_REG_R15D_STR     "r15d"          
379 #define OPTYPE_REG_R15_STR      "r15"           
380 #define OPTYPE_REG_CS_STR       "cs"            
381 #define OPTYPE_REG_DS_STR       "ds"            
382 #define OPTYPE_REG_ES_STR       "es"            
383 #define OPTYPE_REG_SS_STR       "ss"            
384 #define OPTYPE_REG_FS_STR       "fs"            
385 #define OPTYPE_REG_GS_STR       "gs"            
386 #define OPTYPE_REG_RIP_STR      "rip"
387
388 #define OPTYPE_REG_FPU_ST0_STR  "st0"
389 #define OPTYPE_REG_FPU_ST1_STR  "st1"
390 #define OPTYPE_REG_FPU_ST2_STR  "st2"
391 #define OPTYPE_REG_FPU_ST3_STR  "st3"
392 #define OPTYPE_REG_FPU_ST4_STR  "st4"
393 #define OPTYPE_REG_FPU_ST5_STR  "st5"
394 #define OPTYPE_REG_FPU_ST6_STR  "st6"
395 #define OPTYPE_REG_FPU_ST7_STR  "st7"
396
397 #define OPTYPE_REG_CR0_STR              "cr0"
398 #define OPTYPE_REG_CR1_STR              "cr1"
399 #define OPTYPE_REG_CR2_STR              "cr2"
400 #define OPTYPE_REG_CR3_STR              "cr3"
401 #define OPTYPE_REG_CR4_STR              "cr4"
402 #define OPTYPE_REG_CR5_STR              "cr5"
403 #define OPTYPE_REG_CR6_STR              "cr6"
404 #define OPTYPE_REG_CR7_STR              "cr7"
405 #define OPTYPE_REG_CR8_STR              "cr8"
406 #define OPTYPE_REG_CR9_STR              "cr9"
407 #define OPTYPE_REG_CR10_STR             "cr10"
408 #define OPTYPE_REG_CR11_STR             "cr11"
409 #define OPTYPE_REG_CR12_STR             "cr12"
410 #define OPTYPE_REG_CR13_STR             "cr13"
411 #define OPTYPE_REG_CR14_STR             "cr14"
412 #define OPTYPE_REG_CR15_STR             "cr15"
413
414 #define OPTYPE_REG_DR0_STR              "dr0"
415 #define OPTYPE_REG_DR1_STR              "dr1"
416 #define OPTYPE_REG_DR2_STR              "dr2"
417 #define OPTYPE_REG_DR3_STR              "dr3"
418 #define OPTYPE_REG_DR4_STR              "dr4"
419 #define OPTYPE_REG_DR5_STR              "dr5"
420 #define OPTYPE_REG_DR6_STR              "dr6"
421 #define OPTYPE_REG_DR7_STR              "dr7"
422 #define OPTYPE_REG_DR8_STR              "dr8"
423 #define OPTYPE_REG_DR9_STR              "dr9"
424 #define OPTYPE_REG_DR10_STR             "dr10"
425 #define OPTYPE_REG_DR11_STR             "dr11"
426 #define OPTYPE_REG_DR12_STR             "dr12"
427 #define OPTYPE_REG_DR13_STR             "dr13"
428 #define OPTYPE_REG_DR14_STR             "dr14"
429 #define OPTYPE_REG_DR15_STR             "dr15"
430
431 #define OPTYPE_REG_MMX0_STR             "mm0"
432 #define OPTYPE_REG_MMX1_STR             "mm1"
433 #define OPTYPE_REG_MMX2_STR             "mm2"
434 #define OPTYPE_REG_MMX3_STR             "mm3"
435 #define OPTYPE_REG_MMX4_STR             "mm4"
436 #define OPTYPE_REG_MMX5_STR             "mm5"
437 #define OPTYPE_REG_MMX6_STR             "mm6"
438 #define OPTYPE_REG_MMX7_STR             "mm7"
439
440 #define OPTYPE_REG_SSE0_STR             "xmm0"
441 #define OPTYPE_REG_SSE1_STR             "xmm1"
442 #define OPTYPE_REG_SSE2_STR             "xmm2"
443 #define OPTYPE_REG_SSE3_STR             "xmm3"
444 #define OPTYPE_REG_SSE4_STR             "xmm4"
445 #define OPTYPE_REG_SSE5_STR             "xmm5"
446 #define OPTYPE_REG_SSE6_STR             "xmm6"
447 #define OPTYPE_REG_SSE7_STR             "xmm7"
448 #define OPTYPE_REG_SSE8_STR             "xmm8"
449 #define OPTYPE_REG_SSE9_STR             "xmm9"
450 #define OPTYPE_REG_SSE10_STR    "xmm10"
451 #define OPTYPE_REG_SSE11_STR    "xmm11"
452 #define OPTYPE_REG_SSE12_STR    "xmm12"
453 #define OPTYPE_REG_SSE13_STR    "xmm13"
454 #define OPTYPE_REG_SSE14_STR    "xmm14"
455 #define OPTYPE_REG_SSE15_STR    "xmm15"
456
457 /* C : [ModR/M:reg] Control Reg.  */
458 #define OPTYPE_DATA_METHOD_C    (OPTYPE_BASE_DATA_MODRM_FLD_REG|OPTYPE_BASE_DATA_MODRM_REG_CONTROL)
459 /* D : [ModR/M:reg] Debug Reg. */
460 #define OPTYPE_DATA_METHOD_D    (OPTYPE_BASE_DATA_MODRM_FLD_REG|OPTYPE_BASE_DATA_MODRM_REG_DEBUG)
461 /* G : [ModR/M:reg] General Reg. */
462 #define OPTYPE_DATA_METHOD_G    (OPTYPE_BASE_DATA_MODRM_FLD_REG|OPTYPE_BASE_DATA_MODRM_REG_GENERAL)
463 /* P : [ModR/M:reg] Packed-QuadWord MMX Reg. */ 
464 #define OPTYPE_DATA_METHOD_P    (OPTYPE_BASE_DATA_MODRM_FLD_REG|OPTYPE_BASE_DATA_MODRM_REG_PQMMX)
465 /* S : [ModR/M:reg] Segment Reg. */
466 #define OPTYPE_DATA_METHOD_S    (OPTYPE_BASE_DATA_MODRM_FLD_REG|OPTYPE_BASE_DATA_MODRM_REG_SEGMENT)
467 /* T : [ModR/M:reg] Test Reg. ( Reserved ) */
468 #define OPTYPE_DATA_METHOD_T    (OPTYPE_BASE_DATA_MODRM_FLD_REG|OPTYPE_BASE_DATA_MODRM_REG_OTHER)
469 /* V : [ModR/M:reg] 128bit XMM Reg. */
470 #define OPTYPE_DATA_METHOD_V    (OPTYPE_BASE_DATA_MODRM_FLD_REG|OPTYPE_BASE_DATA_MODRM_REG_128XMM)
471 /* N : [ModR/M:R/M] Packed-QuadWord MMX Reg. */
472 #define OPTYPE_DATA_METHOD_N    (OPTYPE_BASE_DATA_MODRM_FLD_RM|OPTYPE_BASE_DATA_MODRM_REG_PQMMX)
473 /* R : [ModR/M:R/M] refer to General Reg by R/M Field */
474 #define OPTYPE_DATA_METHOD_R    (OPTYPE_BASE_DATA_MODRM_FLD_RM|OPTYPE_BASE_DATA_MODRM_REG_GENERAL)
475 /* U : [ModR/M:R/M] 128bit XMM Reg. */
476 #define OPTYPE_DATA_METHOD_U    (OPTYPE_BASE_DATA_MODRM_FLD_RM|OPTYPE_BASE_DATA_MODRM_REG_128XMM)
477 /* E : [ModR/M] Memory & Reg. */
478 #define OPTYPE_DATA_METHOD_E    (OPTYPE_BASE_DATA_MODRM_FLD_FULL|OPTYPE_BASE_DATA_MODRM_REG_FULL|OPTYPE_BASE_DATA_MODRM_MEMORY)
479 /* W : [ModR/M] 128bit XMM Reg. or Memory Address 
480                 ( Memory Address calculated by Seg.Reg. BaseReg. IndexReg. 
481                         ScalingFactor, Displacement */
482 #define OPTYPE_DATA_METHOD_W    (OPTYPE_BASE_DATA_MODRM_FLD_FULL|OPTYPE_BASE_DATA_MODRM_REG_128XMM|OPTYPE_BASE_DATA_MODRM_MEMORY)
483 /* Q : [ModR/M] MMX reg. or Memory Address 
484                 ( Memory Address calced by Seg.Reg, BaseReg. IndexReg. 
485                         ScalingFactor, Displacement */
486 #define OPTYPE_DATA_METHOD_Q    (OPTYPE_BASE_DATA_MODRM_FLD_FULL|OPTYPE_BASE_DATA_MODRM_REG_PQMMX|OPTYPE_BASE_DATA_MODRM_MEMORY)
487 /* M : Memory Access (by ModR/M) (NO!!: Reg. Indicate by ModR/M) */
488 #define OPTYPE_DATA_METHOD_M    (OPTYPE_BASE_DATA_MODRM_FLD_FULL|OPTYPE_BASE_DATA_MODRM_MEMORY)
489
490 #define OPTYPE_BASE_DATA_IMMEDIATE_MEMSIZE      0x0800|OPTYPE_BASE_DATA_IMMEDIATE
491 #define OPTYPE_BASE_DATA_IMMEDIATE_OPERATOR     0x0400|OPTYPE_BASE_DATA_IMMEDIATE
492 #define OPTYPE_BASE_DATA_IMMEDIATE_DATA         0x0200|OPTYPE_BASE_DATA_IMMEDIATE
493 #define OPTYPE_BASE_DATA_IMMEDIATE_IMM          0x0100|OPTYPE_BASE_DATA_IMMEDIATE
494 #define OPTYPE_BASE_DATA_IMMEDIATE_NONE         0x0000|OPTYPE_BASE_DATA_IMMEDIATE
495
496 /* A : Direct Address (NO!!: ModR/M, BaseReg, IndexReg, ScalingFactor) */
497 #define OPTYPE_DATA_METHOD_A    (0x0010|OPTYPE_BASE_DATA_IMMEDIATE_DATA)
498 /* I : Immediate Data (NO!!: ModR/M) */
499 #define OPTYPE_DATA_METHOD_I    (0x0020|OPTYPE_BASE_DATA_IMMEDIATE_DATA)
500 /* J : IP relative Address (NO!!: ModR/M) */
501 #define OPTYPE_DATA_METHOD_J    (0x0030|OPTYPE_BASE_DATA_IMMEDIATE_DATA)
502 /* O : Word of DWord Data (NO!!: ModR/M, BaseReg. IndexReg, ScalingFactor */
503 #define OPTYPE_DATA_METHOD_O    (0x0040|OPTYPE_BASE_DATA_IMMEDIATE_DATA)
504 /* F : EFLAGS / RFLAGS Reg. (NO!!: ModR/M)  */
505 #define OPTYPE_DATA_METHOD_F    (0x0010|OPTYPE_BASE_DATA_IMMEDIATE_NONE)
506 /* X : DS:rSI (Memory Address) */
507 #define OPTYPE_DATA_METHOD_X    (0x0020|OPTYPE_BASE_DATA_IMMEDIATE_NONE)
508 /* Y : ES:rDI (Memory Address) */
509 #define OPTYPE_DATA_METHOD_Y    (0x0030|OPTYPE_BASE_DATA_IMMEDIATE_NONE)
510
511 /* 1 : 0x01 Data (Immediate Data) */
512 #define OPTYPE_DATA_METHOD_1    (0x0001|OPTYPE_BASE_DATA_IMMEDIATE_IMM)
513 /* - : Illegal Instruction by DrDeamon64 Assembler System */
514 #define OPTYPE_DATA_METHOD_ILLEGAL      (0x00ff|OPTYPE_BASE_DATA_IMMEDIATE_IMM)
515
516
517
518
519 #define OPSIZE_BASE_SIZE_BYTE           0x0001
520 #define OPSIZE_BASE_SIZE_WORD           0x0002
521 #define OPSIZE_BASE_SIZE_DWORD          0x0004
522 #define OPSIZE_BASE_SIZE_QWORD          0x0008
523 #define OPSIZE_BASE_SIZE_DQWORD         0x0010
524 #define OPSIZE_BASE_FLOAT                       0x0040
525 #define OPSIZE_BASE_DOUBLE                      0x0080
526 #define OPSIZE_BASE_ILLEGAL                     0x00ff
527
528 #define OPSIZE_BASE_ATTR_DEPENDON       0x2000
529 #define OPSIZE_BASE_ATTR_REGARDLESS     0x0000
530 #define OPSIZE_BASE_ADDRESS                     0x4000
531 #define OPSIZE_BASE_SPECIAL                     0x8000
532 #define OPSIZE_BASE_PACKED                      0x1000
533 #define OPSIZE_BASE_SCALAR                      0x0800
534
535
536 /* b : Byte (Regardless Operand Size Attribute) */
537 #define OPSIZE_B        (OPSIZE_BASE_ATTR_REGARDLESS|OPSIZE_BASE_SIZE_BYTE)
538 /* w : Word (Regardless Operand Size Attribute) */
539 #define OPSIZE_W        (OPSIZE_BASE_ATTR_REGARDLESS|OPSIZE_BASE_SIZE_WORD)
540 /* d : DWord (Regardless Operand Size Attribute) */
541 #define OPSIZE_D        (OPSIZE_BASE_ATTR_REGARDLESS|OPSIZE_BASE_SIZE_DWORD)
542 /* q : QuadWord(64bit) (Regardless Operand Size Attribute) */
543 #define OPSIZE_Q        (OPSIZE_BASE_ATTR_REGARDLESS|OPSIZE_BASE_SIZE_QWORD)
544 /* dq : Double QuadWord(128Bit) (Regardless Operand Size Attribute) */
545 #define OPSIZE_DQ       (OPSIZE_BASE_ATTR_REGARDLESS|OPSIZE_BASE_SIZE_DQWORD)
546 /* h : Memory Pointer for 94/108bit */
547 #define OPSIZE_H        (OPSIZE_BASE_ADDRESS)
548 /* p : Memory Pointer for 32bit or 48bit (depend on Operand Size Attribute) */
549 #define OPSIZE_P        (OPSIZE_BASE_ADDRESS|OPSIZE_BASE_ATTR_DEPENDON)
550 /* r : Memory Pointer for 14bit / 28bit */
551 #define OPSIZE_R        (OPSIZE_BASE_ADDRESS)
552 /* t : Memory Pointer for 80bit */
553 #define OPSIZE_T        (OPSIZE_BASE_ADDRESS)
554 /* pd : 128bit Packed double-float Data */
555 #define OPSIZE_PD       (OPSIZE_BASE_PACKED|OPSIZE_BASE_DOUBLE|OPSIZE_BASE_SIZE_DQWORD)
556 /* ps : 128bit Packed float Data */
557 #define OPSIZE_PS       (OPSIZE_BASE_PACKED|OPSIZE_BASE_FLOAT|OPSIZE_BASE_SIZE_DQWORD)
558 /* sd : Scalar Element of 128bit Packed Double-float Data */
559 #define OPSIZE_SD       (OPSIZE_BASE_PACKED|OPSIZE_BASE_SCALAR|OPSIZE_BASE_DOUBLE|OPSIZE_BASE_SIZE_DQWORD)
560 /* ss : Scalar Element of 128bit Packed float Data */
561 #define OPSIZE_SS       (OPSIZE_BASE_PACKED|OPSIZE_BASE_SCALAR|OPSIZE_BASE_FLOAT|OPSIZE_BASE_SIZE_DQWORD)
562 /* s : 6Byte or 10 Byte Pseudo Descriptor */
563 #define OPSIZE_S        (OPSIZE_BASE_SPECIAL|0x0001)
564 /* v : Word, DWord, QuadWord(64bit-ModeOnly) (Depend On Operand Size Attribute)*/
565 #define OPSIZE_V        (OPSIZE_BASE_ATTR_DEPENDON|OPSIZE_BASE_SIZE_WORD|OPSIZE_BASE_SIZE_DWORD|OPSIZE_BASE_SIZE_QWORD)
566 /* z : Word(16bit Operand Size) or DWord(32/64 Operand Size) */
567 #define OPSIZE_Z        (OPSIZE_BASE_ATTR_DEPENDON|OPSIZE_BASE_SIZE_WORD|OPSIZE_BASE_SIZE_DWORD)
568 /* a : 2 Word or 2 DWord in Memory ( for BOUND ) */
569 #define OPSIZE_A        (OPSIZE_BASE_ADDRESS|OPSIZE_BASE_SIZE_WORD|OPSIZE_BASE_SIZE_DWORD)
570
571 #define OPSIZE_ILLEGAL                  (OPSIZE_BASE_ILLEGAL)
572
573
574
575 #define isRegType(m,n)  (((Word)(((Word)(m))&(OPTYPE_BASE_REG_TYPEMASK)))==(n))
576 #define isRegID(m,n)  (((Word)(((Word)(m))&(OPTYPE_BASE_REG_IDMASK)))==(n))
577 #define isRegGenericID(m,n)  (((Word)(((Word)(m))&(OPTYPE_BASE_REG_GENERIC_IDMASK)))==(n))
578 #define isRegSize(m,n)  (((Word)(((Word)(m))&(OPTYPE_BASE_REG_SIZEMASK)))==(n))
579
580
581 #endif  /* DRD64_HEADER_INTEL64_DBTYPE */
582
583 /* EOF of drd64_intel64_dbtype.h ----------------------------------- */ 
584