8 exception_flags =
ExprId(
'exception_flags', 32)
13 regs08_str = [
"AL",
"CL",
"DL",
"BL",
"AH",
"CH",
"DH",
"BH"] + \
14 [
"R%dB" % (i + 8)
for i
in xrange(8)]
15 regs08_expr = [
ExprId(x, 8)
for x
in regs08_str]
17 regs08_64_str = [
"AL",
"CL",
"DL",
"BL",
"SPL",
"BPL",
"SIL",
"DIL"] + \
18 [
"R%dB" % (i + 8)
for i
in xrange(8)]
19 regs08_64_expr = [
ExprId(x, 8)
for x
in regs08_64_str]
22 regs16_str = [
"AX",
"CX",
"DX",
"BX",
"SP",
"BP",
"SI",
"DI"] + \
23 [
"R%dW" % (i + 8)
for i
in xrange(8)]
24 regs16_expr = [
ExprId(x, 16)
for x
in regs16_str]
26 regs32_str = [
"EAX",
"ECX",
"EDX",
"EBX",
"ESP",
"EBP",
"ESI",
"EDI"] + \
27 [
"R%dD" % (i + 8)
for i
in xrange(8)]
28 regs32_expr = [
ExprId(x, 32)
for x
in regs32_str]
30 regs64_str = [
"RAX",
"RCX",
"RDX",
"RBX",
"RSP",
"RBP",
"RSI",
"RDI",
31 "R8",
"R9",
"R10",
"R11",
"R12",
"R13",
"R14",
"R15",
33 regs64_expr = [
ExprId(x, 64)
for x
in regs64_str]
36 regs_xmm_str = [
"XMM%d" % i
for i
in xrange(16)]
37 regs_xmm_expr = [
ExprId(x, 128)
for x
in regs_xmm_str]
39 regs_mm_str = [
"MM%d" % i
for i
in xrange(16)]
40 regs_mm_expr = [
ExprId(x, 64)
for x
in regs_mm_str]
44 gpregs08_64 =
reg_info(regs08_64_str, regs08_64_expr)
49 gpregs_xmm =
reg_info(regs_xmm_str, regs_xmm_expr)
50 gpregs_mm =
reg_info(regs_mm_str, regs_mm_expr)
52 r08_eax =
reg_info([regs08_str[0]], [regs08_expr[0]])
53 r16_eax =
reg_info([regs16_str[0]], [regs16_expr[0]])
54 r32_eax =
reg_info([regs32_str[0]], [regs32_expr[0]])
55 r64_eax =
reg_info([regs64_str[0]], [regs64_expr[0]])
57 r08_ecx =
reg_info([regs08_str[1]], [regs08_expr[1]])
60 [regs08_str[0], regs16_str[0], regs32_str[0], regs64_str[0]],
61 [regs08_expr[0], regs16_expr[0], regs32_expr[0], regs64_expr[0]])
63 [regs08_str[2], regs16_str[2], regs32_str[2], regs64_str[2]],
64 [regs08_expr[2], regs16_expr[2], regs32_expr[2], regs64_expr[2]])
66 r16_edx =
reg_info([regs16_str[2]], [regs16_expr[2]])
69 selectr_str = [
"ES",
"CS",
"SS",
"DS",
"FS",
"GS"]
70 selectr_expr = [
ExprId(x, 16)
for x
in selectr_str]
73 crregs32_str = [
"CR%d" % i
for i
in xrange(8)]
74 crregs32_expr = [
ExprId(x, 32)
for x
in crregs32_str]
78 drregs32_str = [
"DR%d" % i
for i
in xrange(8)]
79 drregs32_expr = [
ExprId(x, 32)
for x
in drregs32_str]
83 fltregs32_str = [
"ST(%d)" % i
for i
in xrange(8)]
84 fltregs32_expr = [
ExprId(x, 64)
for x
in fltregs32_str]
85 fltregs =
reg_info(fltregs32_str, fltregs32_expr)
114 R10B = regs08_expr[10]
115 R11B = regs08_expr[11]
116 R12B = regs08_expr[12]
117 R13B = regs08_expr[13]
118 R14B = regs08_expr[14]
119 R15B = regs08_expr[15]
120 R15B = regs08_expr[15]
122 SPL = regs08_64_expr[4]
123 BPL = regs08_64_expr[5]
124 SIL = regs08_64_expr[6]
125 DIL = regs08_64_expr[7]
138 R10W = regs16_expr[10]
139 R11W = regs16_expr[11]
140 R12W = regs16_expr[12]
141 R13W = regs16_expr[13]
142 R14W = regs16_expr[14]
143 R15W = regs16_expr[15]
156 R10D = regs32_expr[10]
157 R11D = regs32_expr[11]
158 R12D = regs32_expr[12]
159 R13D = regs32_expr[13]
160 R14D = regs32_expr[14]
161 R15D = regs32_expr[15]
174 R10 = regs64_expr[10]
175 R11 = regs64_expr[11]
176 R12 = regs64_expr[12]
177 R13 = regs64_expr[13]
178 R14 = regs64_expr[14]
179 R15 = regs64_expr[15]
239 reg_float_c0 =
'float_c0'
240 reg_float_c1 =
'float_c1'
241 reg_float_c2 =
'float_c2'
242 reg_float_c3 =
'float_c3'
243 reg_float_stack_ptr =
"float_stack_ptr"
244 reg_float_control =
'reg_float_control'
245 reg_float_eip =
'reg_float_eip'
246 reg_float_cs =
'reg_float_cs'
247 reg_float_address =
'reg_float_address'
248 reg_float_ds =
'reg_float_ds'
278 XMM0 = regs_xmm_expr[0]
279 XMM1 = regs_xmm_expr[1]
280 XMM2 = regs_xmm_expr[2]
281 XMM3 = regs_xmm_expr[3]
282 XMM4 = regs_xmm_expr[4]
283 XMM5 = regs_xmm_expr[5]
284 XMM6 = regs_xmm_expr[6]
285 XMM7 = regs_xmm_expr[7]
286 XMM8 = regs_xmm_expr[8]
287 XMM9 = regs_xmm_expr[9]
288 XMM10 = regs_xmm_expr[10]
289 XMM11 = regs_xmm_expr[11]
290 XMM12 = regs_xmm_expr[12]
291 XMM13 = regs_xmm_expr[13]
292 XMM14 = regs_xmm_expr[14]
293 XMM15 = regs_xmm_expr[15]
328 float_stack_ptr =
ExprId(reg_float_stack_ptr, size=3)
329 float_control =
ExprId(reg_float_control, 16)
332 float_address =
ExprId(reg_float_address)
345 float_list = [float_st0, float_st1, float_st2, float_st3,
346 float_st4, float_st5, float_st6, float_st7]
348 float_replace = {fltregs32_expr[i]: float_list[i]
for i
in xrange(8)}
349 float_replace[r_st_all.expr[0]] = float_st0
373 AL, CL, DL, BL, AH, CH, DH, BH,
374 R8B, R9B, R10B, R11B, R12B, R13B, R14B, R15B, R15B,
376 AX, CX, DX, BX, SP, BP, SI, DI,
377 R8W, R9W, R10W, R11W, R12W, R13W, R14W, R15W,
379 EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI,
380 R8D, R9D, R10D, R11D, R12D, R13D, R14D, R15D,
383 RAX, RBX, RCX, RDX, RSP, RBP, RIP, RSI, RDI,
384 R8, R9, R10, R11, R12, R13, R14, R15, R15,
385 zf, nf, pf, of, cf, af, df,
386 tf, i_f, iopl, nt, rf, vm, ac, vif, vip, i_d,
387 float_control, float_eip, float_cs, float_address, float_ds,
389 ES, CS, SS, DS, FS, GS,
390 float_st0, float_st1, float_st2, float_st3,
391 float_st4, float_st5, float_st6, float_st7,
392 float_c0, float_c1, float_c2, float_c3,
394 dr0, dr1, dr2, dr3, dr4, dr5, dr6, dr7,
396 mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7,
398 XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7,
399 XMM8, XMM9, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15,
405 all_regs_ids_no_alias = [
406 RAX, RBX, RCX, RDX, RSP, RBP, RIP, RSI, RDI,
407 R8, R9, R10, R11, R12, R13, R14, R15, R15,
408 zf, nf, pf, of, cf, af, df,
409 tf, i_f, iopl, nt, rf, vm, ac, vif, vip, i_d,
410 float_control, float_eip, float_cs, float_address, float_ds,
412 ES, CS, SS, DS, FS, GS,
413 float_st0, float_st1, float_st2, float_st3,
414 float_st4, float_st5, float_st6, float_st7,
415 float_c0, float_c1, float_c2, float_c3,
417 dr0, dr1, dr2, dr3, dr4, dr5, dr6, dr7,
419 mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7,
420 XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7,
421 XMM8, XMM9, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15,
427 all_regs_ids_byname = dict([(x.name, x)
for x
in all_regs_ids])
429 all_regs_ids_init = [
ExprId(
"%s_init" % x.name, x.size)
for x
in all_regs_ids]
432 for i, r
in enumerate(all_regs_ids):
433 all_regs_ids_init[i].is_term =
True
434 regs_init[r] = all_regs_ids_init[i]
436 regs_flt_expr = [float_st0, float_st1, float_st2, float_st3,
437 float_st4, float_st5, float_st6, float_st7,
440 mRAX = {16: AX, 32: EAX, 64: RAX}
441 mRBX = {16: BX, 32: EBX, 64: RBX}
442 mRCX = {16: CX, 32: ECX, 64: RCX}
443 mRDX = {16: DX, 32: EDX, 64: RDX}
444 mRSI = {16: SI, 32: ESI, 64: RSI}
445 mRDI = {16: DI, 32: EDI, 64: RDI}
446 mRBP = {16: BP, 32: EBP, 64: RBP}
447 mRSP = {16: SP, 32: ESP, 64: RSP}
448 mRIP = {16: IP, 32: EIP, 64: RIP}