duran 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. data/LICENSE +20 -0
  2. data/README.rdoc +11 -0
  3. data/Rakefile +29 -0
  4. data/VERSION +1 -0
  5. data/client_src/dr_include/dr_api.h +102 -0
  6. data/client_src/dr_include/dr_app.h +92 -0
  7. data/client_src/dr_include/dr_config.h +650 -0
  8. data/client_src/dr_include/dr_defines.h +391 -0
  9. data/client_src/dr_include/dr_events.h +1057 -0
  10. data/client_src/dr_include/dr_ir_instr.h +1214 -0
  11. data/client_src/dr_include/dr_ir_instrlist.h +149 -0
  12. data/client_src/dr_include/dr_ir_macros.h +2426 -0
  13. data/client_src/dr_include/dr_ir_opcodes.h +768 -0
  14. data/client_src/dr_include/dr_ir_opnd.h +1170 -0
  15. data/client_src/dr_include/dr_ir_utils.h +708 -0
  16. data/client_src/dr_include/dr_proc.h +327 -0
  17. data/client_src/dr_include/dr_tools.h +1304 -0
  18. data/client_src/duran.c +57 -0
  19. data/client_src/extconf.rb +28 -0
  20. data/lib/duran.rb +18 -0
  21. data/lib/duran/app.rb +8 -0
  22. data/lib/duran/defines.rb +39 -0
  23. data/lib/duran/events.rb +156 -0
  24. data/lib/duran/ir_opcodes.rb +616 -0
  25. data/lib/duran/ir_opnd.rb +329 -0
  26. data/lib/duran/ir_utils.rb +133 -0
  27. data/lib/duran/proc.rb +49 -0
  28. data/lib/duran/structs.rb +20 -0
  29. data/lib/duran/structs/exception.rb +23 -0
  30. data/lib/duran/structs/fault_fragment_info.rb +34 -0
  31. data/lib/duran/structs/instruction.rb +15 -0
  32. data/lib/duran/structs/machine_context.rb +80 -0
  33. data/lib/duran/structs/memory_info.rb +12 -0
  34. data/lib/duran/structs/module_data.rb +61 -0
  35. data/lib/duran/structs/module_names.rb +24 -0
  36. data/lib/duran/structs/operand.rb +15 -0
  37. data/lib/duran/structs/restore_state_info.rb +30 -0
  38. data/lib/duran/structs/signal_info.rb +41 -0
  39. data/lib/duran/structs/tracedump.rb +50 -0
  40. data/lib/duran/tools.rb +214 -0
  41. metadata +104 -0
@@ -0,0 +1,768 @@
1
+ /* **********************************************************
2
+ * Copyright (c) 2002-2009 VMware, Inc. All rights reserved.
3
+ * **********************************************************/
4
+
5
+ /*
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are met:
8
+ *
9
+ * * Redistributions of source code must retain the above copyright notice,
10
+ * this list of conditions and the following disclaimer.
11
+ *
12
+ * * Redistributions in binary form must reproduce the above copyright notice,
13
+ * this list of conditions and the following disclaimer in the documentation
14
+ * and/or other materials provided with the distribution.
15
+ *
16
+ * * Neither the name of VMware, Inc. nor the names of its contributors may be
17
+ * used to endorse or promote products derived from this software without
18
+ * specific prior written permission.
19
+ *
20
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
+ * ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE
24
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
30
+ * DAMAGE.
31
+ */
32
+
33
+ #ifndef _DR_IR_OPCODES_H_
34
+ #define _DR_IR_OPCODES_H_ 1
35
+
36
+
37
+ /****************************************************************************
38
+ * OPCODES
39
+ */
40
+ /**
41
+ * @file dr_ir_opcodes.h
42
+ * @brief Instruction opcode constants.
43
+ */
44
+ /** Opcode constants for use in the instr_t data structure. */
45
+ enum {
46
+ /* 0 */ OP_INVALID, /**< Indicates an invalid instr_t. */
47
+ /* 1 */ OP_UNDECODED, /**< Indicates an undecoded instr_t. */
48
+ /* 2 */ OP_CONTD, /**< Used internally only. */
49
+ /* 3 */ OP_LABEL, /**< A label is used for instr_t branch targets. */
50
+
51
+ /* 4 */ OP_add, /**< add opcode */
52
+ /* 5 */ OP_or, /**< or opcode */
53
+ /* 6 */ OP_adc, /**< adc opcode */
54
+ /* 7 */ OP_sbb, /**< sbb opcode */
55
+ /* 8 */ OP_and, /**< and opcode */
56
+ /* 9 */ OP_daa, /**< daa opcode */
57
+ /* 10 */ OP_sub, /**< sub opcode */
58
+ /* 11 */ OP_das, /**< das opcode */
59
+ /* 12 */ OP_xor, /**< xor opcode */
60
+ /* 13 */ OP_aaa, /**< aaa opcode */
61
+ /* 14 */ OP_cmp, /**< cmp opcode */
62
+ /* 15 */ OP_aas, /**< aas opcode */
63
+ /* 16 */ OP_inc, /**< inc opcode */
64
+ /* 17 */ OP_dec, /**< dec opcode */
65
+ /* 18 */ OP_push, /**< push opcode */
66
+ /* 19 */ OP_push_imm, /**< push_imm opcode */
67
+ /* 20 */ OP_pop, /**< pop opcode */
68
+ /* 21 */ OP_pusha, /**< pusha opcode */
69
+ /* 22 */ OP_popa, /**< popa opcode */
70
+ /* 23 */ OP_bound, /**< bound opcode */
71
+ /* 24 */ OP_arpl, /**< arpl opcode */
72
+ /* 25 */ OP_imul, /**< imul opcode */
73
+
74
+ /* 26 */ OP_jo_short, /**< jo_short opcode */
75
+ /* 27 */ OP_jno_short, /**< jno_short opcode */
76
+ /* 28 */ OP_jb_short, /**< jb_short opcode */
77
+ /* 29 */ OP_jnb_short, /**< jnb_short opcode */
78
+ /* 30 */ OP_jz_short, /**< jz_short opcode */
79
+ /* 31 */ OP_jnz_short, /**< jnz_short opcode */
80
+ /* 32 */ OP_jbe_short, /**< jbe_short opcode */
81
+ /* 33 */ OP_jnbe_short, /**< jnbe_short opcode */
82
+ /* 34 */ OP_js_short, /**< js_short opcode */
83
+ /* 35 */ OP_jns_short, /**< jns_short opcode */
84
+ /* 36 */ OP_jp_short, /**< jp_short opcode */
85
+ /* 37 */ OP_jnp_short, /**< jnp_short opcode */
86
+ /* 38 */ OP_jl_short, /**< jl_short opcode */
87
+ /* 39 */ OP_jnl_short, /**< jnl_short opcode */
88
+ /* 40 */ OP_jle_short, /**< jle_short opcode */
89
+ /* 41 */ OP_jnle_short, /**< jnle_short opcode */
90
+
91
+ /* 42 */ OP_call, /**< call opcode */
92
+ /* 43 */ OP_call_ind, /**< call_ind opcode */
93
+ /* 44 */ OP_call_far, /**< call_far opcode */
94
+ /* 45 */ OP_call_far_ind, /**< call_far_ind opcode */
95
+ /* 46 */ OP_jmp, /**< jmp opcode */
96
+ /* 47 */ OP_jmp_short, /**< jmp_short opcode */
97
+ /* 48 */ OP_jmp_ind, /**< jmp_ind opcode */
98
+ /* 49 */ OP_jmp_far, /**< jmp_far opcode */
99
+ /* 50 */ OP_jmp_far_ind, /**< jmp_far_ind opcode */
100
+
101
+ /* 51 */ OP_loopne, /**< loopne opcode */
102
+ /* 52 */ OP_loope, /**< loope opcode */
103
+ /* 53 */ OP_loop, /**< loop opcode */
104
+ /* 54 */ OP_jecxz, /**< jecxz opcode */
105
+
106
+ /* point ld & st at eAX & al instrs, they save 1 byte (no modrm),
107
+ * hopefully time taken considering them doesn't offset that */
108
+ /* 55 */ OP_mov_ld, /**< mov_ld opcode */
109
+ /* 56 */ OP_mov_st, /**< mov_st opcode */
110
+ /* note that store of immed is mov_st not mov_imm, even though can be immed->reg,
111
+ * which we address by sharing part of the mov_st template chain */
112
+ /* 57 */ OP_mov_imm, /**< mov_imm opcode */
113
+ /* 58 */ OP_mov_seg, /**< mov_seg opcode */
114
+ /* 59 */ OP_mov_priv, /**< mov_priv opcode */
115
+
116
+ /* 60 */ OP_test, /**< test opcode */
117
+ /* 61 */ OP_lea, /**< lea opcode */
118
+ /* 62 */ OP_xchg, /**< xchg opcode */
119
+ /* 63 */ OP_cwde, /**< cwde opcode */
120
+ /* 64 */ OP_cdq, /**< cdq opcode */
121
+ /* 65 */ OP_fwait, /**< fwait opcode */
122
+ /* 66 */ OP_pushf, /**< pushf opcode */
123
+ /* 67 */ OP_popf, /**< popf opcode */
124
+ /* 68 */ OP_sahf, /**< sahf opcode */
125
+ /* 69 */ OP_lahf, /**< lahf opcode */
126
+
127
+ /* 70 */ OP_ret, /**< ret opcode */
128
+ /* 71 */ OP_ret_far, /**< ret_far opcode */
129
+
130
+ /* 72 */ OP_les, /**< les opcode */
131
+ /* 73 */ OP_lds, /**< lds opcode */
132
+ /* 74 */ OP_enter, /**< enter opcode */
133
+ /* 75 */ OP_leave, /**< leave opcode */
134
+ /* 76 */ OP_int3, /**< int3 opcode */
135
+ /* 77 */ OP_int, /**< int opcode */
136
+ /* 78 */ OP_into, /**< into opcode */
137
+ /* 79 */ OP_iret, /**< iret opcode */
138
+ /* 80 */ OP_aam, /**< aam opcode */
139
+ /* 81 */ OP_aad, /**< aad opcode */
140
+ /* 82 */ OP_xlat, /**< xlat opcode */
141
+ /* 83 */ OP_in, /**< in opcode */
142
+ /* 84 */ OP_out, /**< out opcode */
143
+ /* 85 */ OP_hlt, /**< hlt opcode */
144
+ /* 86 */ OP_cmc, /**< cmc opcode */
145
+ /* 87 */ OP_clc, /**< clc opcode */
146
+ /* 88 */ OP_stc, /**< stc opcode */
147
+ /* 89 */ OP_cli, /**< cli opcode */
148
+ /* 90 */ OP_sti, /**< sti opcode */
149
+ /* 91 */ OP_cld, /**< cld opcode */
150
+ /* 92 */ OP_std, /**< std opcode */
151
+
152
+
153
+ /* 93 */ OP_lar, /**< lar opcode */
154
+ /* 94 */ OP_lsl, /**< lsl opcode */
155
+ /* 95 */ OP_syscall, /**< syscall opcode */
156
+ /* 96 */ OP_clts, /**< clts opcode */
157
+ /* 97 */ OP_sysret, /**< sysret opcode */
158
+ /* 98 */ OP_invd, /**< invd opcode */
159
+ /* 99 */ OP_wbinvd, /**< wbinvd opcode */
160
+ /* 100 */ OP_ud2a, /**< ud2a opcode */
161
+ /* 101 */ OP_nop_modrm, /**< nop_modrm opcode */
162
+ /* 102 */ OP_movntps, /**< movntps opcode */
163
+ /* 103 */ OP_movntpd, /**< movntpd opcode */
164
+ /* 104 */ OP_wrmsr, /**< wrmsr opcode */
165
+ /* 105 */ OP_rdtsc, /**< rdtsc opcode */
166
+ /* 106 */ OP_rdmsr, /**< rdmsr opcode */
167
+ /* 107 */ OP_rdpmc, /**< rdpmc opcode */
168
+ /* 108 */ OP_sysenter, /**< sysenter opcode */
169
+ /* 109 */ OP_sysexit, /**< sysexit opcode */
170
+
171
+ /* 110 */ OP_cmovo, /**< cmovo opcode */
172
+ /* 111 */ OP_cmovno, /**< cmovno opcode */
173
+ /* 112 */ OP_cmovb, /**< cmovb opcode */
174
+ /* 113 */ OP_cmovnb, /**< cmovnb opcode */
175
+ /* 114 */ OP_cmovz, /**< cmovz opcode */
176
+ /* 115 */ OP_cmovnz, /**< cmovnz opcode */
177
+ /* 116 */ OP_cmovbe, /**< cmovbe opcode */
178
+ /* 117 */ OP_cmovnbe, /**< cmovnbe opcode */
179
+ /* 118 */ OP_cmovs, /**< cmovs opcode */
180
+ /* 119 */ OP_cmovns, /**< cmovns opcode */
181
+ /* 120 */ OP_cmovp, /**< cmovp opcode */
182
+ /* 121 */ OP_cmovnp, /**< cmovnp opcode */
183
+ /* 122 */ OP_cmovl, /**< cmovl opcode */
184
+ /* 123 */ OP_cmovnl, /**< cmovnl opcode */
185
+ /* 124 */ OP_cmovle, /**< cmovle opcode */
186
+ /* 125 */ OP_cmovnle, /**< cmovnle opcode */
187
+
188
+ /* 126 */ OP_punpcklbw, /**< punpcklbw opcode */
189
+ /* 127 */ OP_punpcklwd, /**< punpcklwd opcode */
190
+ /* 128 */ OP_punpckldq, /**< punpckldq opcode */
191
+ /* 129 */ OP_packsswb, /**< packsswb opcode */
192
+ /* 130 */ OP_pcmpgtb, /**< pcmpgtb opcode */
193
+ /* 131 */ OP_pcmpgtw, /**< pcmpgtw opcode */
194
+ /* 132 */ OP_pcmpgtd, /**< pcmpgtd opcode */
195
+ /* 133 */ OP_packuswb, /**< packuswb opcode */
196
+ /* 134 */ OP_punpckhbw, /**< punpckhbw opcode */
197
+ /* 135 */ OP_punpckhwd, /**< punpckhwd opcode */
198
+ /* 136 */ OP_punpckhdq, /**< punpckhdq opcode */
199
+ /* 137 */ OP_packssdw, /**< packssdw opcode */
200
+ /* 138 */ OP_punpcklqdq, /**< punpcklqdq opcode */
201
+ /* 139 */ OP_punpckhqdq, /**< punpckhqdq opcode */
202
+ /* 140 */ OP_movd, /**< movd opcode */
203
+ /* 141 */ OP_movq, /**< movq opcode */
204
+ /* 142 */ OP_movdqu, /**< movdqu opcode */
205
+ /* 143 */ OP_movdqa, /**< movdqa opcode */
206
+ /* 144 */ OP_pshufw, /**< pshufw opcode */
207
+ /* 145 */ OP_pshufd, /**< pshufd opcode */
208
+ /* 146 */ OP_pshufhw, /**< pshufhw opcode */
209
+ /* 147 */ OP_pshuflw, /**< pshuflw opcode */
210
+ /* 148 */ OP_pcmpeqb, /**< pcmpeqb opcode */
211
+ /* 149 */ OP_pcmpeqw, /**< pcmpeqw opcode */
212
+ /* 150 */ OP_pcmpeqd, /**< pcmpeqd opcode */
213
+ /* 151 */ OP_emms, /**< emms opcode */
214
+
215
+ /* 152 */ OP_jo, /**< jo opcode */
216
+ /* 153 */ OP_jno, /**< jno opcode */
217
+ /* 154 */ OP_jb, /**< jb opcode */
218
+ /* 155 */ OP_jnb, /**< jnb opcode */
219
+ /* 156 */ OP_jz, /**< jz opcode */
220
+ /* 157 */ OP_jnz, /**< jnz opcode */
221
+ /* 158 */ OP_jbe, /**< jbe opcode */
222
+ /* 159 */ OP_jnbe, /**< jnbe opcode */
223
+ /* 160 */ OP_js, /**< js opcode */
224
+ /* 161 */ OP_jns, /**< jns opcode */
225
+ /* 162 */ OP_jp, /**< jp opcode */
226
+ /* 163 */ OP_jnp, /**< jnp opcode */
227
+ /* 164 */ OP_jl, /**< jl opcode */
228
+ /* 165 */ OP_jnl, /**< jnl opcode */
229
+ /* 166 */ OP_jle, /**< jle opcode */
230
+ /* 167 */ OP_jnle, /**< jnle opcode */
231
+
232
+ /* 168 */ OP_seto, /**< seto opcode */
233
+ /* 169 */ OP_setno, /**< setno opcode */
234
+ /* 170 */ OP_setb, /**< setb opcode */
235
+ /* 171 */ OP_setnb, /**< setnb opcode */
236
+ /* 172 */ OP_setz, /**< setz opcode */
237
+ /* 173 */ OP_setnz, /**< setnz opcode */
238
+ /* 174 */ OP_setbe, /**< setbe opcode */
239
+ /* 175 */ OP_setnbe, /**< setnbe opcode */
240
+ /* 176 */ OP_sets, /**< sets opcode */
241
+ /* 177 */ OP_setns, /**< setns opcode */
242
+ /* 178 */ OP_setp, /**< setp opcode */
243
+ /* 179 */ OP_setnp, /**< setnp opcode */
244
+ /* 180 */ OP_setl, /**< setl opcode */
245
+ /* 181 */ OP_setnl, /**< setnl opcode */
246
+ /* 182 */ OP_setle, /**< setle opcode */
247
+ /* 183 */ OP_setnle, /**< setnle opcode */
248
+
249
+ /* 184 */ OP_cpuid, /**< cpuid opcode */
250
+ /* 185 */ OP_bt, /**< bt opcode */
251
+ /* 186 */ OP_shld, /**< shld opcode */
252
+ /* 187 */ OP_rsm, /**< rsm opcode */
253
+ /* 188 */ OP_bts, /**< bts opcode */
254
+ /* 189 */ OP_shrd, /**< shrd opcode */
255
+ /* 190 */ OP_cmpxchg, /**< cmpxchg opcode */
256
+ /* 191 */ OP_lss, /**< lss opcode */
257
+ /* 192 */ OP_btr, /**< btr opcode */
258
+ /* 193 */ OP_lfs, /**< lfs opcode */
259
+ /* 194 */ OP_lgs, /**< lgs opcode */
260
+ /* 195 */ OP_movzx, /**< movzx opcode */
261
+ /* 196 */ OP_ud2b, /**< ud2b opcode */
262
+ /* 197 */ OP_btc, /**< btc opcode */
263
+ /* 198 */ OP_bsf, /**< bsf opcode */
264
+ /* 199 */ OP_bsr, /**< bsr opcode */
265
+ /* 200 */ OP_movsx, /**< movsx opcode */
266
+ /* 201 */ OP_xadd, /**< xadd opcode */
267
+ /* 202 */ OP_movnti, /**< movnti opcode */
268
+ /* 203 */ OP_pinsrw, /**< pinsrw opcode */
269
+ /* 204 */ OP_pextrw, /**< pextrw opcode */
270
+ /* 205 */ OP_bswap, /**< bswap opcode */
271
+ /* 206 */ OP_psrlw, /**< psrlw opcode */
272
+ /* 207 */ OP_psrld, /**< psrld opcode */
273
+ /* 208 */ OP_psrlq, /**< psrlq opcode */
274
+ /* 209 */ OP_paddq, /**< paddq opcode */
275
+ /* 210 */ OP_pmullw, /**< pmullw opcode */
276
+ /* 211 */ OP_pmovmskb, /**< pmovmskb opcode */
277
+ /* 212 */ OP_psubusb, /**< psubusb opcode */
278
+ /* 213 */ OP_psubusw, /**< psubusw opcode */
279
+ /* 214 */ OP_pminub, /**< pminub opcode */
280
+ /* 215 */ OP_pand, /**< pand opcode */
281
+ /* 216 */ OP_paddusb, /**< paddusb opcode */
282
+ /* 217 */ OP_paddusw, /**< paddusw opcode */
283
+ /* 218 */ OP_pmaxub, /**< pmaxub opcode */
284
+ /* 219 */ OP_pandn, /**< pandn opcode */
285
+ /* 220 */ OP_pavgb, /**< pavgb opcode */
286
+ /* 221 */ OP_psraw, /**< psraw opcode */
287
+ /* 222 */ OP_psrad, /**< psrad opcode */
288
+ /* 223 */ OP_pavgw, /**< pavgw opcode */
289
+ /* 224 */ OP_pmulhuw, /**< pmulhuw opcode */
290
+ /* 225 */ OP_pmulhw, /**< pmulhw opcode */
291
+ /* 226 */ OP_movntq, /**< movntq opcode */
292
+ /* 227 */ OP_movntdq, /**< movntdq opcode */
293
+ /* 228 */ OP_psubsb, /**< psubsb opcode */
294
+ /* 229 */ OP_psubsw, /**< psubsw opcode */
295
+ /* 230 */ OP_pminsw, /**< pminsw opcode */
296
+ /* 231 */ OP_por, /**< por opcode */
297
+ /* 232 */ OP_paddsb, /**< paddsb opcode */
298
+ /* 233 */ OP_paddsw, /**< paddsw opcode */
299
+ /* 234 */ OP_pmaxsw, /**< pmaxsw opcode */
300
+ /* 235 */ OP_pxor, /**< pxor opcode */
301
+ /* 236 */ OP_psllw, /**< psllw opcode */
302
+ /* 237 */ OP_pslld, /**< pslld opcode */
303
+ /* 238 */ OP_psllq, /**< psllq opcode */
304
+ /* 239 */ OP_pmuludq, /**< pmuludq opcode */
305
+ /* 240 */ OP_pmaddwd, /**< pmaddwd opcode */
306
+ /* 241 */ OP_psadbw, /**< psadbw opcode */
307
+ /* 242 */ OP_maskmovq, /**< maskmovq opcode */
308
+ /* 243 */ OP_maskmovdqu, /**< maskmovdqu opcode */
309
+ /* 244 */ OP_psubb, /**< psubb opcode */
310
+ /* 245 */ OP_psubw, /**< psubw opcode */
311
+ /* 246 */ OP_psubd, /**< psubd opcode */
312
+ /* 247 */ OP_psubq, /**< psubq opcode */
313
+ /* 248 */ OP_paddb, /**< paddb opcode */
314
+ /* 249 */ OP_paddw, /**< paddw opcode */
315
+ /* 250 */ OP_paddd, /**< paddd opcode */
316
+ /* 251 */ OP_psrldq, /**< psrldq opcode */
317
+ /* 252 */ OP_pslldq, /**< pslldq opcode */
318
+
319
+
320
+ /* 253 */ OP_rol, /**< rol opcode */
321
+ /* 254 */ OP_ror, /**< ror opcode */
322
+ /* 255 */ OP_rcl, /**< rcl opcode */
323
+ /* 256 */ OP_rcr, /**< rcr opcode */
324
+ /* 257 */ OP_shl, /**< shl opcode */
325
+ /* 258 */ OP_shr, /**< shr opcode */
326
+ /* 259 */ OP_sar, /**< sar opcode */
327
+ /* 260 */ OP_not, /**< not opcode */
328
+ /* 261 */ OP_neg, /**< neg opcode */
329
+ /* 262 */ OP_mul, /**< mul opcode */
330
+ /* 263 */ OP_div, /**< div opcode */
331
+ /* 264 */ OP_idiv, /**< idiv opcode */
332
+ /* 265 */ OP_sldt, /**< sldt opcode */
333
+ /* 266 */ OP_str, /**< str opcode */
334
+ /* 267 */ OP_lldt, /**< lldt opcode */
335
+ /* 268 */ OP_ltr, /**< ltr opcode */
336
+ /* 269 */ OP_verr, /**< verr opcode */
337
+ /* 270 */ OP_verw, /**< verw opcode */
338
+ /* 271 */ OP_sgdt, /**< sgdt opcode */
339
+ /* 272 */ OP_sidt, /**< sidt opcode */
340
+ /* 273 */ OP_lgdt, /**< lgdt opcode */
341
+ /* 274 */ OP_lidt, /**< lidt opcode */
342
+ /* 275 */ OP_smsw, /**< smsw opcode */
343
+ /* 276 */ OP_lmsw, /**< lmsw opcode */
344
+ /* 277 */ OP_invlpg, /**< invlpg opcode */
345
+ /* 278 */ OP_cmpxchg8b, /**< cmpxchg8b opcode */
346
+ /* 279 */ OP_fxsave, /**< fxsave opcode */
347
+ /* 280 */ OP_fxrstor, /**< fxrstor opcode */
348
+ /* 281 */ OP_ldmxcsr, /**< ldmxcsr opcode */
349
+ /* 282 */ OP_stmxcsr, /**< stmxcsr opcode */
350
+ /* 283 */ OP_lfence, /**< lfence opcode */
351
+ /* 284 */ OP_mfence, /**< mfence opcode */
352
+ /* 285 */ OP_clflush, /**< clflush opcode */
353
+ /* 286 */ OP_sfence, /**< sfence opcode */
354
+ /* 287 */ OP_prefetchnta, /**< prefetchnta opcode */
355
+ /* 288 */ OP_prefetcht0, /**< prefetcht0 opcode */
356
+ /* 289 */ OP_prefetcht1, /**< prefetcht1 opcode */
357
+ /* 290 */ OP_prefetcht2, /**< prefetcht2 opcode */
358
+ /* 291 */ OP_prefetch, /**< prefetch opcode */
359
+ /* 292 */ OP_prefetchw, /**< prefetchw opcode */
360
+
361
+
362
+ /* 293 */ OP_movups, /**< movups opcode */
363
+ /* 294 */ OP_movss, /**< movss opcode */
364
+ /* 295 */ OP_movupd, /**< movupd opcode */
365
+ /* 296 */ OP_movsd, /**< movsd opcode */
366
+ /* 297 */ OP_movlps, /**< movlps opcode */
367
+ /* 298 */ OP_movlpd, /**< movlpd opcode */
368
+ /* 299 */ OP_unpcklps, /**< unpcklps opcode */
369
+ /* 300 */ OP_unpcklpd, /**< unpcklpd opcode */
370
+ /* 301 */ OP_unpckhps, /**< unpckhps opcode */
371
+ /* 302 */ OP_unpckhpd, /**< unpckhpd opcode */
372
+ /* 303 */ OP_movhps, /**< movhps opcode */
373
+ /* 304 */ OP_movhpd, /**< movhpd opcode */
374
+ /* 305 */ OP_movaps, /**< movaps opcode */
375
+ /* 306 */ OP_movapd, /**< movapd opcode */
376
+ /* 307 */ OP_cvtpi2ps, /**< cvtpi2ps opcode */
377
+ /* 308 */ OP_cvtsi2ss, /**< cvtsi2ss opcode */
378
+ /* 309 */ OP_cvtpi2pd, /**< cvtpi2pd opcode */
379
+ /* 310 */ OP_cvtsi2sd, /**< cvtsi2sd opcode */
380
+ /* 311 */ OP_cvttps2pi, /**< cvttps2pi opcode */
381
+ /* 312 */ OP_cvttss2si, /**< cvttss2si opcode */
382
+ /* 313 */ OP_cvttpd2pi, /**< cvttpd2pi opcode */
383
+ /* 314 */ OP_cvttsd2si, /**< cvttsd2si opcode */
384
+ /* 315 */ OP_cvtps2pi, /**< cvtps2pi opcode */
385
+ /* 316 */ OP_cvtss2si, /**< cvtss2si opcode */
386
+ /* 317 */ OP_cvtpd2pi, /**< cvtpd2pi opcode */
387
+ /* 318 */ OP_cvtsd2si, /**< cvtsd2si opcode */
388
+ /* 319 */ OP_ucomiss, /**< ucomiss opcode */
389
+ /* 320 */ OP_ucomisd, /**< ucomisd opcode */
390
+ /* 321 */ OP_comiss, /**< comiss opcode */
391
+ /* 322 */ OP_comisd, /**< comisd opcode */
392
+ /* 323 */ OP_movmskps, /**< movmskps opcode */
393
+ /* 324 */ OP_movmskpd, /**< movmskpd opcode */
394
+ /* 325 */ OP_sqrtps, /**< sqrtps opcode */
395
+ /* 326 */ OP_sqrtss, /**< sqrtss opcode */
396
+ /* 327 */ OP_sqrtpd, /**< sqrtpd opcode */
397
+ /* 328 */ OP_sqrtsd, /**< sqrtsd opcode */
398
+ /* 329 */ OP_rsqrtps, /**< rsqrtps opcode */
399
+ /* 330 */ OP_rsqrtss, /**< rsqrtss opcode */
400
+ /* 331 */ OP_rcpps, /**< rcpps opcode */
401
+ /* 332 */ OP_rcpss, /**< rcpss opcode */
402
+ /* 333 */ OP_andps, /**< andps opcode */
403
+ /* 334 */ OP_andpd, /**< andpd opcode */
404
+ /* 335 */ OP_andnps, /**< andnps opcode */
405
+ /* 336 */ OP_andnpd, /**< andnpd opcode */
406
+ /* 337 */ OP_orps, /**< orps opcode */
407
+ /* 338 */ OP_orpd, /**< orpd opcode */
408
+ /* 339 */ OP_xorps, /**< xorps opcode */
409
+ /* 340 */ OP_xorpd, /**< xorpd opcode */
410
+ /* 341 */ OP_addps, /**< addps opcode */
411
+ /* 342 */ OP_addss, /**< addss opcode */
412
+ /* 343 */ OP_addpd, /**< addpd opcode */
413
+ /* 344 */ OP_addsd, /**< addsd opcode */
414
+ /* 345 */ OP_mulps, /**< mulps opcode */
415
+ /* 346 */ OP_mulss, /**< mulss opcode */
416
+ /* 347 */ OP_mulpd, /**< mulpd opcode */
417
+ /* 348 */ OP_mulsd, /**< mulsd opcode */
418
+ /* 349 */ OP_cvtps2pd, /**< cvtps2pd opcode */
419
+ /* 350 */ OP_cvtss2sd, /**< cvtss2sd opcode */
420
+ /* 351 */ OP_cvtpd2ps, /**< cvtpd2ps opcode */
421
+ /* 352 */ OP_cvtsd2ss, /**< cvtsd2ss opcode */
422
+ /* 353 */ OP_cvtdq2ps, /**< cvtdq2ps opcode */
423
+ /* 354 */ OP_cvttps2dq, /**< cvttps2dq opcode */
424
+ /* 355 */ OP_cvtps2dq, /**< cvtps2dq opcode */
425
+ /* 356 */ OP_subps, /**< subps opcode */
426
+ /* 357 */ OP_subss, /**< subss opcode */
427
+ /* 358 */ OP_subpd, /**< subpd opcode */
428
+ /* 359 */ OP_subsd, /**< subsd opcode */
429
+ /* 360 */ OP_minps, /**< minps opcode */
430
+ /* 361 */ OP_minss, /**< minss opcode */
431
+ /* 362 */ OP_minpd, /**< minpd opcode */
432
+ /* 363 */ OP_minsd, /**< minsd opcode */
433
+ /* 364 */ OP_divps, /**< divps opcode */
434
+ /* 365 */ OP_divss, /**< divss opcode */
435
+ /* 366 */ OP_divpd, /**< divpd opcode */
436
+ /* 367 */ OP_divsd, /**< divsd opcode */
437
+ /* 368 */ OP_maxps, /**< maxps opcode */
438
+ /* 369 */ OP_maxss, /**< maxss opcode */
439
+ /* 370 */ OP_maxpd, /**< maxpd opcode */
440
+ /* 371 */ OP_maxsd, /**< maxsd opcode */
441
+ /* 372 */ OP_cmpps, /**< cmpps opcode */
442
+ /* 373 */ OP_cmpss, /**< cmpss opcode */
443
+ /* 374 */ OP_cmppd, /**< cmppd opcode */
444
+ /* 375 */ OP_cmpsd, /**< cmpsd opcode */
445
+ /* 376 */ OP_shufps, /**< shufps opcode */
446
+ /* 377 */ OP_shufpd, /**< shufpd opcode */
447
+ /* 378 */ OP_cvtdq2pd, /**< cvtdq2pd opcode */
448
+ /* 379 */ OP_cvttpd2dq, /**< cvttpd2dq opcode */
449
+ /* 380 */ OP_cvtpd2dq, /**< cvtpd2dq opcode */
450
+ /* 381 */ OP_nop, /**< nop opcode */
451
+ /* 382 */ OP_pause, /**< pause opcode */
452
+
453
+ /* 383 */ OP_ins, /**< ins opcode */
454
+ /* 384 */ OP_rep_ins, /**< rep_ins opcode */
455
+ /* 385 */ OP_outs, /**< outs opcode */
456
+ /* 386 */ OP_rep_outs, /**< rep_outs opcode */
457
+ /* 387 */ OP_movs, /**< movs opcode */
458
+ /* 388 */ OP_rep_movs, /**< rep_movs opcode */
459
+ /* 389 */ OP_stos, /**< stos opcode */
460
+ /* 390 */ OP_rep_stos, /**< rep_stos opcode */
461
+ /* 391 */ OP_lods, /**< lods opcode */
462
+ /* 392 */ OP_rep_lods, /**< rep_lods opcode */
463
+ /* 393 */ OP_cmps, /**< cmps opcode */
464
+ /* 394 */ OP_rep_cmps, /**< rep_cmps opcode */
465
+ /* 395 */ OP_repne_cmps, /**< repne_cmps opcode */
466
+ /* 396 */ OP_scas, /**< scas opcode */
467
+ /* 397 */ OP_rep_scas, /**< rep_scas opcode */
468
+ /* 398 */ OP_repne_scas, /**< repne_scas opcode */
469
+
470
+
471
+ /* 399 */ OP_fadd, /**< fadd opcode */
472
+ /* 400 */ OP_fmul, /**< fmul opcode */
473
+ /* 401 */ OP_fcom, /**< fcom opcode */
474
+ /* 402 */ OP_fcomp, /**< fcomp opcode */
475
+ /* 403 */ OP_fsub, /**< fsub opcode */
476
+ /* 404 */ OP_fsubr, /**< fsubr opcode */
477
+ /* 405 */ OP_fdiv, /**< fdiv opcode */
478
+ /* 406 */ OP_fdivr, /**< fdivr opcode */
479
+ /* 407 */ OP_fld, /**< fld opcode */
480
+ /* 408 */ OP_fst, /**< fst opcode */
481
+ /* 409 */ OP_fstp, /**< fstp opcode */
482
+ /* 410 */ OP_fldenv, /**< fldenv opcode */
483
+ /* 411 */ OP_fldcw, /**< fldcw opcode */
484
+ /* 412 */ OP_fnstenv, /**< fnstenv opcode */
485
+ /* 413 */ OP_fnstcw, /**< fnstcw opcode */
486
+ /* 414 */ OP_fiadd, /**< fiadd opcode */
487
+ /* 415 */ OP_fimul, /**< fimul opcode */
488
+ /* 416 */ OP_ficom, /**< ficom opcode */
489
+ /* 417 */ OP_ficomp, /**< ficomp opcode */
490
+ /* 418 */ OP_fisub, /**< fisub opcode */
491
+ /* 419 */ OP_fisubr, /**< fisubr opcode */
492
+ /* 420 */ OP_fidiv, /**< fidiv opcode */
493
+ /* 421 */ OP_fidivr, /**< fidivr opcode */
494
+ /* 422 */ OP_fild, /**< fild opcode */
495
+ /* 423 */ OP_fist, /**< fist opcode */
496
+ /* 424 */ OP_fistp, /**< fistp opcode */
497
+ /* 425 */ OP_frstor, /**< frstor opcode */
498
+ /* 426 */ OP_fnsave, /**< fnsave opcode */
499
+ /* 427 */ OP_fnstsw, /**< fnstsw opcode */
500
+
501
+ /* 428 */ OP_fbld, /**< fbld opcode */
502
+ /* 429 */ OP_fbstp, /**< fbstp opcode */
503
+
504
+
505
+ /* 430 */ OP_fxch, /**< fxch opcode */
506
+ /* 431 */ OP_fnop, /**< fnop opcode */
507
+ /* 432 */ OP_fchs, /**< fchs opcode */
508
+ /* 433 */ OP_fabs, /**< fabs opcode */
509
+ /* 434 */ OP_ftst, /**< ftst opcode */
510
+ /* 435 */ OP_fxam, /**< fxam opcode */
511
+ /* 436 */ OP_fld1, /**< fld1 opcode */
512
+ /* 437 */ OP_fldl2t, /**< fldl2t opcode */
513
+ /* 438 */ OP_fldl2e, /**< fldl2e opcode */
514
+ /* 439 */ OP_fldpi, /**< fldpi opcode */
515
+ /* 440 */ OP_fldlg2, /**< fldlg2 opcode */
516
+ /* 441 */ OP_fldln2, /**< fldln2 opcode */
517
+ /* 442 */ OP_fldz, /**< fldz opcode */
518
+ /* 443 */ OP_f2xm1, /**< f2xm1 opcode */
519
+ /* 444 */ OP_fyl2x, /**< fyl2x opcode */
520
+ /* 445 */ OP_fptan, /**< fptan opcode */
521
+ /* 446 */ OP_fpatan, /**< fpatan opcode */
522
+ /* 447 */ OP_fxtract, /**< fxtract opcode */
523
+ /* 448 */ OP_fprem1, /**< fprem1 opcode */
524
+ /* 449 */ OP_fdecstp, /**< fdecstp opcode */
525
+ /* 450 */ OP_fincstp, /**< fincstp opcode */
526
+ /* 451 */ OP_fprem, /**< fprem opcode */
527
+ /* 452 */ OP_fyl2xp1, /**< fyl2xp1 opcode */
528
+ /* 453 */ OP_fsqrt, /**< fsqrt opcode */
529
+ /* 454 */ OP_fsincos, /**< fsincos opcode */
530
+ /* 455 */ OP_frndint, /**< frndint opcode */
531
+ /* 456 */ OP_fscale, /**< fscale opcode */
532
+ /* 457 */ OP_fsin, /**< fsin opcode */
533
+ /* 458 */ OP_fcos, /**< fcos opcode */
534
+ /* 459 */ OP_fcmovb, /**< fcmovb opcode */
535
+ /* 460 */ OP_fcmove, /**< fcmove opcode */
536
+ /* 461 */ OP_fcmovbe, /**< fcmovbe opcode */
537
+ /* 462 */ OP_fcmovu, /**< fcmovu opcode */
538
+ /* 463 */ OP_fucompp, /**< fucompp opcode */
539
+ /* 464 */ OP_fcmovnb, /**< fcmovnb opcode */
540
+ /* 465 */ OP_fcmovene, /**< fcmovene opcode */
541
+ /* 466 */ OP_fcmovnbe, /**< fcmovnbe opcode */
542
+ /* 467 */ OP_fcmovnu, /**< fcmovnu opcode */
543
+ /* 468 */ OP_fnclex, /**< fnclex opcode */
544
+ /* 469 */ OP_fninit, /**< fninit opcode */
545
+ /* 470 */ OP_fucomi, /**< fucomi opcode */
546
+ /* 471 */ OP_fcomi, /**< fcomi opcode */
547
+ /* 472 */ OP_ffree, /**< ffree opcode */
548
+ /* 473 */ OP_fucom, /**< fucom opcode */
549
+ /* 474 */ OP_fucomp, /**< fucomp opcode */
550
+ /* 475 */ OP_faddp, /**< faddp opcode */
551
+ /* 476 */ OP_fmulp, /**< fmulp opcode */
552
+ /* 477 */ OP_fcompp, /**< fcompp opcode */
553
+ /* 478 */ OP_fsubrp, /**< fsubrp opcode */
554
+ /* 479 */ OP_fsubp, /**< fsubp opcode */
555
+ /* 480 */ OP_fdivrp, /**< fdivrp opcode */
556
+ /* 481 */ OP_fdivp, /**< fdivp opcode */
557
+ /* 482 */ OP_fucomip, /**< fucomip opcode */
558
+ /* 483 */ OP_fcomip, /**< fcomip opcode */
559
+
560
+ /* SSE3 instructions */
561
+ /* 484 */ OP_fisttp, /**< fisttp opcode */
562
+ /* 485 */ OP_haddpd, /**< haddpd opcode */
563
+ /* 486 */ OP_haddps, /**< haddps opcode */
564
+ /* 487 */ OP_hsubpd, /**< hsubpd opcode */
565
+ /* 488 */ OP_hsubps, /**< hsubps opcode */
566
+ /* 489 */ OP_addsubpd, /**< addsubpd opcode */
567
+ /* 490 */ OP_addsubps, /**< addsubps opcode */
568
+ /* 491 */ OP_lddqu, /**< lddqu opcode */
569
+ /* 492 */ OP_monitor, /**< monitor opcode */
570
+ /* 493 */ OP_mwait, /**< mwait opcode */
571
+ /* 494 */ OP_movsldup, /**< movsldup opcode */
572
+ /* 495 */ OP_movshdup, /**< movshdup opcode */
573
+ /* 496 */ OP_movddup, /**< movddup opcode */
574
+
575
+ /* 3D-Now! instructions */
576
+ /* 497 */ OP_femms, /**< femms opcode */
577
+ /* 498 */ OP_unknown_3dnow, /**< unknown_3dnow opcode */
578
+ /* 499 */ OP_pavgusb, /**< pavgusb opcode */
579
+ /* 500 */ OP_pfadd, /**< pfadd opcode */
580
+ /* 501 */ OP_pfacc, /**< pfacc opcode */
581
+ /* 502 */ OP_pfcmpge, /**< pfcmpge opcode */
582
+ /* 503 */ OP_pfcmpgt, /**< pfcmpgt opcode */
583
+ /* 504 */ OP_pfcmpeq, /**< pfcmpeq opcode */
584
+ /* 505 */ OP_pfmin, /**< pfmin opcode */
585
+ /* 506 */ OP_pfmax, /**< pfmax opcode */
586
+ /* 507 */ OP_pfmul, /**< pfmul opcode */
587
+ /* 508 */ OP_pfrcp, /**< pfrcp opcode */
588
+ /* 509 */ OP_pfrcpit1, /**< pfrcpit1 opcode */
589
+ /* 510 */ OP_pfrcpit2, /**< pfrcpit2 opcode */
590
+ /* 511 */ OP_pfrsqrt, /**< pfrsqrt opcode */
591
+ /* 512 */ OP_pfrsqit1, /**< pfrsqit1 opcode */
592
+ /* 513 */ OP_pmulhrw, /**< pmulhrw opcode */
593
+ /* 514 */ OP_pfsub, /**< pfsub opcode */
594
+ /* 515 */ OP_pfsubr, /**< pfsubr opcode */
595
+ /* 516 */ OP_pi2fd, /**< pi2fd opcode */
596
+ /* 517 */ OP_pf2id, /**< pf2id opcode */
597
+ /* 518 */ OP_pi2fw, /**< pi2fw opcode */
598
+ /* 519 */ OP_pf2iw, /**< pf2iw opcode */
599
+ /* 520 */ OP_pfnacc, /**< pfnacc opcode */
600
+ /* 521 */ OP_pfpnacc, /**< pfpnacc opcode */
601
+ /* 522 */ OP_pswapd, /**< pswapd opcode */
602
+
603
+ /* SSSE3 */
604
+ /* 523 */ OP_pshufb, /**< pshufb opcode */
605
+ /* 524 */ OP_phaddw, /**< phaddw opcode */
606
+ /* 525 */ OP_phaddd, /**< phaddd opcode */
607
+ /* 526 */ OP_phaddsw, /**< phaddsw opcode */
608
+ /* 527 */ OP_pmaddubsw, /**< pmaddubsw opcode */
609
+ /* 528 */ OP_phsubw, /**< phsubw opcode */
610
+ /* 529 */ OP_phsubd, /**< phsubd opcode */
611
+ /* 530 */ OP_phsubsw, /**< phsubsw opcode */
612
+ /* 531 */ OP_psignb, /**< psignb opcode */
613
+ /* 532 */ OP_psignw, /**< psignw opcode */
614
+ /* 533 */ OP_psignd, /**< psignd opcode */
615
+ /* 534 */ OP_pmulhrsw, /**< pmulhrsw opcode */
616
+ /* 535 */ OP_pabsb, /**< pabsb opcode */
617
+ /* 536 */ OP_pabsw, /**< pabsw opcode */
618
+ /* 537 */ OP_pabsd, /**< pabsd opcode */
619
+ /* 538 */ OP_palignr, /**< palignr opcode */
620
+
621
+ /* SSE4 (incl AMD and Intel-specific extensions */
622
+ /* 539 */ OP_popcnt, /**< popcnt opcode */
623
+ /* 540 */ OP_movntss, /**< movntss opcode */
624
+ /* 541 */ OP_movntsd, /**< movntsd opcode */
625
+ /* 542 */ OP_extrq, /**< extrq opcode */
626
+ /* 543 */ OP_insertq, /**< insertq opcode */
627
+ /* 544 */ OP_lzcnt, /**< lzcnt opcode */
628
+ /* 545 */ OP_pblendvb, /**< pblendvb opcode */
629
+ /* 546 */ OP_blendvps, /**< blendvps opcode */
630
+ /* 547 */ OP_blendvpd, /**< blendvpd opcode */
631
+ /* 548 */ OP_ptest, /**< ptest opcode */
632
+ /* 549 */ OP_pmovsxbw, /**< pmovsxbw opcode */
633
+ /* 550 */ OP_pmovsxbd, /**< pmovsxbd opcode */
634
+ /* 551 */ OP_pmovsxbq, /**< pmovsxbq opcode */
635
+ /* 552 */ OP_pmovsxdw, /**< pmovsxdw opcode */
636
+ /* 553 */ OP_pmovsxwq, /**< pmovsxwq opcode */
637
+ /* 554 */ OP_pmovsxdq, /**< pmovsxdq opcode */
638
+ /* 555 */ OP_pmuldq, /**< pmuldq opcode */
639
+ /* 556 */ OP_pcmpeqq, /**< pcmpeqq opcode */
640
+ /* 557 */ OP_movntdqa, /**< movntdqa opcode */
641
+ /* 558 */ OP_packusdw, /**< packusdw opcode */
642
+ /* 559 */ OP_pmovzxbw, /**< pmovzxbw opcode */
643
+ /* 560 */ OP_pmovzxbd, /**< pmovzxbd opcode */
644
+ /* 561 */ OP_pmovzxbq, /**< pmovzxbq opcode */
645
+ /* 562 */ OP_pmovzxdw, /**< pmovzxdw opcode */
646
+ /* 563 */ OP_pmovzxwq, /**< pmovzxwq opcode */
647
+ /* 564 */ OP_pmovzxdq, /**< pmovzxdq opcode */
648
+ /* 565 */ OP_pcmpgtq, /**< pcmpgtq opcode */
649
+ /* 566 */ OP_pminsb, /**< pminsb opcode */
650
+ /* 567 */ OP_pminsd, /**< pminsd opcode */
651
+ /* 568 */ OP_pminuw, /**< pminuw opcode */
652
+ /* 569 */ OP_pminud, /**< pminud opcode */
653
+ /* 570 */ OP_pmaxsb, /**< pmaxsb opcode */
654
+ /* 571 */ OP_pmaxsd, /**< pmaxsd opcode */
655
+ /* 572 */ OP_pmaxuw, /**< pmaxuw opcode */
656
+ /* 573 */ OP_pmaxud, /**< pmaxud opcode */
657
+ /* 574 */ OP_pmulld, /**< pmulld opcode */
658
+ /* 575 */ OP_phminposuw, /**< phminposuw opcode */
659
+ /* 576 */ OP_crc32, /**< crc32 opcode */
660
+ /* 577 */ OP_pextrb, /**< pextrb opcode */
661
+ /* 578 */ OP_pextrd, /**< pextrd opcode */
662
+ /* 579 */ OP_extractps, /**< extractps opcode */
663
+ /* 580 */ OP_roundps, /**< roundps opcode */
664
+ /* 581 */ OP_roundpd, /**< roundpd opcode */
665
+ /* 582 */ OP_roundss, /**< roundss opcode */
666
+ /* 583 */ OP_roundsd, /**< roundsd opcode */
667
+ /* 584 */ OP_blendps, /**< blendps opcode */
668
+ /* 585 */ OP_blendpd, /**< blendpd opcode */
669
+ /* 586 */ OP_pblendw, /**< pblendw opcode */
670
+ /* 587 */ OP_pinsrb, /**< pinsrb opcode */
671
+ /* 588 */ OP_insertps, /**< insertps opcode */
672
+ /* 589 */ OP_pinsrd, /**< pinsrd opcode */
673
+ /* 590 */ OP_dpps, /**< dpps opcode */
674
+ /* 591 */ OP_dppd, /**< dppd opcode */
675
+ /* 592 */ OP_mpsadbw, /**< mpsadbw opcode */
676
+ /* 593 */ OP_pcmpestrm, /**< pcmpestrm opcode */
677
+ /* 594 */ OP_pcmpestri, /**< pcmpestri opcode */
678
+ /* 595 */ OP_pcmpistrm, /**< pcmpistrm opcode */
679
+ /* 596 */ OP_pcmpistri, /**< pcmpistri opcode */
680
+
681
+ /* x64 */
682
+ /* 597 */ OP_movsxd, /**< movsxd opcode */
683
+ /* 598 */ OP_swapgs, /**< swapgs opcode */
684
+
685
+ /* VMX */
686
+ /* 599 */ OP_vmcall, /**< vmcall opcode */
687
+ /* 600 */ OP_vmlaunch, /**< vmlaunch opcode */
688
+ /* 601 */ OP_vmresume, /**< vmresume opcode */
689
+ /* 602 */ OP_vmxoff, /**< vmxoff opcode */
690
+ /* 603 */ OP_vmptrst, /**< vmptrst opcode */
691
+ /* 604 */ OP_vmptrld, /**< vmptrld opcode */
692
+ /* 605 */ OP_vmxon, /**< vmxon opcode */
693
+ /* 606 */ OP_vmclear, /**< vmclear opcode */
694
+ /* 607 */ OP_vmread, /**< vmread opcode */
695
+ /* 608 */ OP_vmwrite, /**< vmwrite opcode */
696
+
697
+ /* undocumented */
698
+ /* 609 */ OP_int1, /**< int1 opcode */
699
+ /* 610 */ OP_salc, /**< salc opcode */
700
+ /* 611 */ OP_ffreep, /**< ffreep opcode */
701
+
702
+ /* Keep these at the end so that ifdefs don't change internal enum values */
703
+
704
+ OP_FIRST = OP_add, /**< First real opcode. */
705
+ OP_LAST = OP_ffreep, /**< Last real opcode. */
706
+ };
707
+
708
+
709
+ /* alternative names */
710
+ /* we do not equate the fwait+op opcodes
711
+ * fstsw, fstcw, fstenv, finit, fclex
712
+ * for us that has to be a sequence of instructions: a separate fwait
713
+ */
714
+ /* 16-bit versions that have different names */
715
+ #define OP_cbw OP_cwde /**< Alternative opcode name for 16-bit version. */
716
+ #define OP_cwd OP_cdq /**< Alternative opcode name for 16-bit version. */
717
+ #define OP_jcxz OP_jecxz /**< Alternative opcode name for 16-bit version. */
718
+ /* 64-bit versions that have different names */
719
+ #define OP_jrcxz OP_jecxz /**< Alternative opcode name for 64-bit version. */
720
+ #define OP_cmpxchg16b OP_cmpxchg8b /**< Alternative opcode name for 64-bit version. */
721
+ #define OP_pextrq OP_pextrd /**< Alternative opcode name for 64-bit version. */
722
+ #define OP_pinsrq OP_pinsrd /**< Alternative opcode name for 64-bit version. */
723
+ /* reg-reg version has different name */
724
+ #define OP_movhlps OP_movlps /**< Alternative opcode name for reg-reg version. */
725
+ #define OP_movlhps OP_movhps /**< Alternative opcode name for reg-reg version. */
726
+ /* condition codes */
727
+ #define OP_jae_short OP_jnb_short /**< Alternative opcode name. */
728
+ #define OP_jnae_short OP_jb_short /**< Alternative opcode name. */
729
+ #define OP_ja_short OP_jnbe_short /**< Alternative opcode name. */
730
+ #define OP_jna_short OP_jbe_short /**< Alternative opcode name. */
731
+ #define OP_je_short OP_jz_short /**< Alternative opcode name. */
732
+ #define OP_jne_short OP_jnz_short /**< Alternative opcode name. */
733
+ #define OP_jge_short OP_jnl_short /**< Alternative opcode name. */
734
+ #define OP_jg_short OP_jnle_short /**< Alternative opcode name. */
735
+ #define OP_jae OP_jnb /**< Alternative opcode name. */
736
+ #define OP_jnae OP_jb /**< Alternative opcode name. */
737
+ #define OP_ja OP_jnbe /**< Alternative opcode name. */
738
+ #define OP_jna OP_jbe /**< Alternative opcode name. */
739
+ #define OP_je OP_jz /**< Alternative opcode name. */
740
+ #define OP_jne OP_jnz /**< Alternative opcode name. */
741
+ #define OP_jge OP_jnl /**< Alternative opcode name. */
742
+ #define OP_jg OP_jnle /**< Alternative opcode name. */
743
+ #define OP_setae OP_setnb /**< Alternative opcode name. */
744
+ #define OP_setnae OP_setb /**< Alternative opcode name. */
745
+ #define OP_seta OP_setnbe /**< Alternative opcode name. */
746
+ #define OP_setna OP_setbe /**< Alternative opcode name. */
747
+ #define OP_sete OP_setz /**< Alternative opcode name. */
748
+ #define OP_setne OP_setnz /**< Alternative opcode name. */
749
+ #define OP_setge OP_setnl /**< Alternative opcode name. */
750
+ #define OP_setg OP_setnle /**< Alternative opcode name. */
751
+ #define OP_cmovae OP_cmovnb /**< Alternative opcode name. */
752
+ #define OP_cmovnae OP_cmovb /**< Alternative opcode name. */
753
+ #define OP_cmova OP_cmovnbe /**< Alternative opcode name. */
754
+ #define OP_cmovna OP_cmovbe /**< Alternative opcode name. */
755
+ #define OP_cmove OP_cmovz /**< Alternative opcode name. */
756
+ #define OP_cmovne OP_cmovnz /**< Alternative opcode name. */
757
+ #define OP_cmovge OP_cmovnl /**< Alternative opcode name. */
758
+ #define OP_cmovg OP_cmovnle /**< Alternative opcode name. */
759
+ /* undocumented opcodes */
760
+ #define OP_icebp OP_int1
761
+ #define OP_setalc OP_salc
762
+
763
+ /****************************************************************************/
764
+
765
+
766
+
767
+
768
+ #endif /* _DR_IR_OPCODES_H_ */