diff options
Diffstat (limited to 'miasm2/jitter/arch/JitCore_x86.c')
| -rw-r--r-- | miasm2/jitter/arch/JitCore_x86.c | 197 |
1 files changed, 99 insertions, 98 deletions
diff --git a/miasm2/jitter/arch/JitCore_x86.c b/miasm2/jitter/arch/JitCore_x86.c index 4e52ec85..1782c5ae 100644 --- a/miasm2/jitter/arch/JitCore_x86.c +++ b/miasm2/jitter/arch/JitCore_x86.c @@ -12,72 +12,73 @@ vm_cpu_t ref_arch_regs; -reg_dict gpreg_dict[] = { {.name = "RAX", .offset = offsetof(vm_cpu_t, RAX), .size = 8*sizeof(ref_arch_regs.RAX)}, - {.name = "RBX", .offset = offsetof(vm_cpu_t, RBX), .size = 8*sizeof(ref_arch_regs.RBX)}, - {.name = "RCX", .offset = offsetof(vm_cpu_t, RCX), .size = 8*sizeof(ref_arch_regs.RCX)}, - {.name = "RDX", .offset = offsetof(vm_cpu_t, RDX), .size = 8*sizeof(ref_arch_regs.RDX)}, - {.name = "RSI", .offset = offsetof(vm_cpu_t, RSI), .size = 8*sizeof(ref_arch_regs.RSI)}, - {.name = "RDI", .offset = offsetof(vm_cpu_t, RDI), .size = 8*sizeof(ref_arch_regs.RDI)}, - {.name = "RSP", .offset = offsetof(vm_cpu_t, RSP), .size = 8*sizeof(ref_arch_regs.RSP)}, - {.name = "RBP", .offset = offsetof(vm_cpu_t, RBP), .size = 8*sizeof(ref_arch_regs.RBP)}, - - {.name = "R8", .offset = offsetof(vm_cpu_t, R8), .size = 8*sizeof(ref_arch_regs.R8)}, - {.name = "R9", .offset = offsetof(vm_cpu_t, R9), .size = 8*sizeof(ref_arch_regs.R9)}, - {.name = "R10", .offset = offsetof(vm_cpu_t, R10), .size = 8*sizeof(ref_arch_regs.R10)}, - {.name = "R11", .offset = offsetof(vm_cpu_t, R11), .size = 8*sizeof(ref_arch_regs.R11)}, - {.name = "R12", .offset = offsetof(vm_cpu_t, R12), .size = 8*sizeof(ref_arch_regs.R12)}, - {.name = "R13", .offset = offsetof(vm_cpu_t, R13), .size = 8*sizeof(ref_arch_regs.R13)}, - {.name = "R14", .offset = offsetof(vm_cpu_t, R14), .size = 8*sizeof(ref_arch_regs.R14)}, - {.name = "R15", .offset = offsetof(vm_cpu_t, R15), .size = 8*sizeof(ref_arch_regs.R15)}, - - {.name = "RIP", .offset = offsetof(vm_cpu_t, RIP), .size = 8*sizeof(ref_arch_regs.RIP)}, - - {.name = "zf", .offset = offsetof(vm_cpu_t, zf), .size = 8*sizeof(ref_arch_regs.zf)}, - {.name = "nf", .offset = offsetof(vm_cpu_t, nf), .size = 8*sizeof(ref_arch_regs.nf)}, - {.name = "pf", .offset = offsetof(vm_cpu_t, pf), .size = 8*sizeof(ref_arch_regs.pf)}, - {.name = "of", .offset = offsetof(vm_cpu_t, of), .size = 8*sizeof(ref_arch_regs.of)}, - {.name = "cf", .offset = offsetof(vm_cpu_t, cf), .size = 8*sizeof(ref_arch_regs.cf)}, - {.name = "af", .offset = offsetof(vm_cpu_t, af), .size = 8*sizeof(ref_arch_regs.af)}, - {.name = "df", .offset = offsetof(vm_cpu_t, df), .size = 8*sizeof(ref_arch_regs.df)}, - - {.name = "ES", .offset = offsetof(vm_cpu_t, ES), .size = 8*sizeof(ref_arch_regs.ES)}, - {.name = "CS", .offset = offsetof(vm_cpu_t, CS), .size = 8*sizeof(ref_arch_regs.CS)}, - {.name = "SS", .offset = offsetof(vm_cpu_t, SS), .size = 8*sizeof(ref_arch_regs.SS)}, - {.name = "DS", .offset = offsetof(vm_cpu_t, DS), .size = 8*sizeof(ref_arch_regs.DS)}, - {.name = "FS", .offset = offsetof(vm_cpu_t, FS), .size = 8*sizeof(ref_arch_regs.FS)}, - {.name = "GS", .offset = offsetof(vm_cpu_t, GS), .size = 8*sizeof(ref_arch_regs.GS)}, - - {.name = "MM0", .offset = offsetof(vm_cpu_t, MM0), .size = 8*sizeof(ref_arch_regs.MM0)}, - {.name = "MM1", .offset = offsetof(vm_cpu_t, MM1), .size = 8*sizeof(ref_arch_regs.MM1)}, - {.name = "MM2", .offset = offsetof(vm_cpu_t, MM2), .size = 8*sizeof(ref_arch_regs.MM2)}, - {.name = "MM3", .offset = offsetof(vm_cpu_t, MM3), .size = 8*sizeof(ref_arch_regs.MM3)}, - {.name = "MM4", .offset = offsetof(vm_cpu_t, MM4), .size = 8*sizeof(ref_arch_regs.MM4)}, - {.name = "MM5", .offset = offsetof(vm_cpu_t, MM5), .size = 8*sizeof(ref_arch_regs.MM5)}, - {.name = "MM6", .offset = offsetof(vm_cpu_t, MM6), .size = 8*sizeof(ref_arch_regs.MM6)}, - {.name = "MM7", .offset = offsetof(vm_cpu_t, MM7), .size = 8*sizeof(ref_arch_regs.MM7)}, - - {.name = "XMM0", .offset = offsetof(vm_cpu_t, XMM0), .size = 128}, - {.name = "XMM1", .offset = offsetof(vm_cpu_t, XMM1), .size = 128}, - {.name = "XMM2", .offset = offsetof(vm_cpu_t, XMM2), .size = 128}, - {.name = "XMM3", .offset = offsetof(vm_cpu_t, XMM3), .size = 128}, - {.name = "XMM4", .offset = offsetof(vm_cpu_t, XMM4), .size = 128}, - {.name = "XMM5", .offset = offsetof(vm_cpu_t, XMM5), .size = 128}, - {.name = "XMM6", .offset = offsetof(vm_cpu_t, XMM6), .size = 128}, - {.name = "XMM7", .offset = offsetof(vm_cpu_t, XMM7), .size = 128}, - {.name = "XMM8", .offset = offsetof(vm_cpu_t, XMM8), .size = 128}, - {.name = "XMM9", .offset = offsetof(vm_cpu_t, XMM9), .size = 128}, - {.name = "XMM10", .offset = offsetof(vm_cpu_t, XMM10), .size = 128}, - {.name = "XMM11", .offset = offsetof(vm_cpu_t, XMM11), .size = 128}, - {.name = "XMM12", .offset = offsetof(vm_cpu_t, XMM12), .size = 128}, - {.name = "XMM13", .offset = offsetof(vm_cpu_t, XMM13), .size = 128}, - {.name = "XMM14", .offset = offsetof(vm_cpu_t, XMM14), .size = 128}, - {.name = "XMM15", .offset = offsetof(vm_cpu_t, XMM15), .size = 128}, - - {.name = "tsc1", .offset = offsetof(vm_cpu_t, tsc1), .size = 8*sizeof(ref_arch_regs.tsc1)}, - {.name = "tsc2", .offset = offsetof(vm_cpu_t, tsc2), .size = 8*sizeof(ref_arch_regs.tsc2)}, - - {.name = "exception_flags", .offset = offsetof(vm_cpu_t, exception_flags), .size = 8*sizeof(ref_arch_regs.exception_flags)}, - {.name = "interrupt_num", .offset = offsetof(vm_cpu_t, interrupt_num), .size = 8*sizeof(ref_arch_regs.interrupt_num)}, +reg_dict gpreg_dict[] = { + {.name = "RAX", .offset = offsetof(vm_cpu_t, RAX), .size = 64}, + {.name = "RBX", .offset = offsetof(vm_cpu_t, RBX), .size = 64}, + {.name = "RCX", .offset = offsetof(vm_cpu_t, RCX), .size = 64}, + {.name = "RDX", .offset = offsetof(vm_cpu_t, RDX), .size = 64}, + {.name = "RSI", .offset = offsetof(vm_cpu_t, RSI), .size = 64}, + {.name = "RDI", .offset = offsetof(vm_cpu_t, RDI), .size = 64}, + {.name = "RSP", .offset = offsetof(vm_cpu_t, RSP), .size = 64}, + {.name = "RBP", .offset = offsetof(vm_cpu_t, RBP), .size = 64}, + + {.name = "R8", .offset = offsetof(vm_cpu_t, R8), .size = 64}, + {.name = "R9", .offset = offsetof(vm_cpu_t, R9), .size = 64}, + {.name = "R10", .offset = offsetof(vm_cpu_t, R10), .size = 64}, + {.name = "R11", .offset = offsetof(vm_cpu_t, R11), .size = 64}, + {.name = "R12", .offset = offsetof(vm_cpu_t, R12), .size = 64}, + {.name = "R13", .offset = offsetof(vm_cpu_t, R13), .size = 64}, + {.name = "R14", .offset = offsetof(vm_cpu_t, R14), .size = 64}, + {.name = "R15", .offset = offsetof(vm_cpu_t, R15), .size = 64}, + + {.name = "RIP", .offset = offsetof(vm_cpu_t, RIP), .size = 64}, + + {.name = "zf", .offset = offsetof(vm_cpu_t, zf), .size = 8}, + {.name = "nf", .offset = offsetof(vm_cpu_t, nf), .size = 8}, + {.name = "pf", .offset = offsetof(vm_cpu_t, pf), .size = 8}, + {.name = "of", .offset = offsetof(vm_cpu_t, of), .size = 8}, + {.name = "cf", .offset = offsetof(vm_cpu_t, cf), .size = 8}, + {.name = "af", .offset = offsetof(vm_cpu_t, af), .size = 8}, + {.name = "df", .offset = offsetof(vm_cpu_t, df), .size = 8}, + + {.name = "ES", .offset = offsetof(vm_cpu_t, ES), .size = 16}, + {.name = "CS", .offset = offsetof(vm_cpu_t, CS), .size = 16}, + {.name = "SS", .offset = offsetof(vm_cpu_t, SS), .size = 16}, + {.name = "DS", .offset = offsetof(vm_cpu_t, DS), .size = 16}, + {.name = "FS", .offset = offsetof(vm_cpu_t, FS), .size = 16}, + {.name = "GS", .offset = offsetof(vm_cpu_t, GS), .size = 16}, + + {.name = "MM0", .offset = offsetof(vm_cpu_t, MM0), .size = 64}, + {.name = "MM1", .offset = offsetof(vm_cpu_t, MM1), .size = 64}, + {.name = "MM2", .offset = offsetof(vm_cpu_t, MM2), .size = 64}, + {.name = "MM3", .offset = offsetof(vm_cpu_t, MM3), .size = 64}, + {.name = "MM4", .offset = offsetof(vm_cpu_t, MM4), .size = 64}, + {.name = "MM5", .offset = offsetof(vm_cpu_t, MM5), .size = 64}, + {.name = "MM6", .offset = offsetof(vm_cpu_t, MM6), .size = 64}, + {.name = "MM7", .offset = offsetof(vm_cpu_t, MM7), .size = 64}, + + {.name = "XMM0", .offset = offsetof(vm_cpu_t, XMM0), .size = 128}, + {.name = "XMM1", .offset = offsetof(vm_cpu_t, XMM1), .size = 128}, + {.name = "XMM2", .offset = offsetof(vm_cpu_t, XMM2), .size = 128}, + {.name = "XMM3", .offset = offsetof(vm_cpu_t, XMM3), .size = 128}, + {.name = "XMM4", .offset = offsetof(vm_cpu_t, XMM4), .size = 128}, + {.name = "XMM5", .offset = offsetof(vm_cpu_t, XMM5), .size = 128}, + {.name = "XMM6", .offset = offsetof(vm_cpu_t, XMM6), .size = 128}, + {.name = "XMM7", .offset = offsetof(vm_cpu_t, XMM7), .size = 128}, + {.name = "XMM8", .offset = offsetof(vm_cpu_t, XMM8), .size = 128}, + {.name = "XMM9", .offset = offsetof(vm_cpu_t, XMM9), .size = 128}, + {.name = "XMM10", .offset = offsetof(vm_cpu_t, XMM10), .size = 128}, + {.name = "XMM11", .offset = offsetof(vm_cpu_t, XMM11), .size = 128}, + {.name = "XMM12", .offset = offsetof(vm_cpu_t, XMM12), .size = 128}, + {.name = "XMM13", .offset = offsetof(vm_cpu_t, XMM13), .size = 128}, + {.name = "XMM14", .offset = offsetof(vm_cpu_t, XMM14), .size = 128}, + {.name = "XMM15", .offset = offsetof(vm_cpu_t, XMM15), .size = 128}, + + {.name = "tsc1", .offset = offsetof(vm_cpu_t, tsc1), .size = 32}, + {.name = "tsc2", .offset = offsetof(vm_cpu_t, tsc2), .size = 32}, + + {.name = "exception_flags", .offset = offsetof(vm_cpu_t, exception_flags), .size = 32}, + {.name = "interrupt_num", .offset = offsetof(vm_cpu_t, interrupt_num), .size = 32}, }; @@ -138,22 +139,22 @@ PyObject* cpu_get_gpreg(JitCpu* self) get_reg(MM6); get_reg(MM7); - get_reg_bn(XMM0); - get_reg_bn(XMM1); - get_reg_bn(XMM2); - get_reg_bn(XMM3); - get_reg_bn(XMM4); - get_reg_bn(XMM5); - get_reg_bn(XMM6); - get_reg_bn(XMM7); - get_reg_bn(XMM8); - get_reg_bn(XMM9); - get_reg_bn(XMM10); - get_reg_bn(XMM11); - get_reg_bn(XMM12); - get_reg_bn(XMM13); - get_reg_bn(XMM14); - get_reg_bn(XMM15); + get_reg_bn(XMM0, 128); + get_reg_bn(XMM1, 128); + get_reg_bn(XMM2, 128); + get_reg_bn(XMM3, 128); + get_reg_bn(XMM4, 128); + get_reg_bn(XMM5, 128); + get_reg_bn(XMM6, 128); + get_reg_bn(XMM7, 128); + get_reg_bn(XMM8, 128); + get_reg_bn(XMM9, 128); + get_reg_bn(XMM10, 128); + get_reg_bn(XMM11, 128); + get_reg_bn(XMM12, 128); + get_reg_bn(XMM13, 128); + get_reg_bn(XMM14, 128); + get_reg_bn(XMM15, 128); get_reg(tsc1); get_reg(tsc2); @@ -616,22 +617,22 @@ getset_reg_u64(MM5); getset_reg_u64(MM6); getset_reg_u64(MM7); -getset_reg_bn(XMM0); -getset_reg_bn(XMM1); -getset_reg_bn(XMM2); -getset_reg_bn(XMM3); -getset_reg_bn(XMM4); -getset_reg_bn(XMM5); -getset_reg_bn(XMM6); -getset_reg_bn(XMM7); -getset_reg_bn(XMM8); -getset_reg_bn(XMM9); -getset_reg_bn(XMM10); -getset_reg_bn(XMM11); -getset_reg_bn(XMM12); -getset_reg_bn(XMM13); -getset_reg_bn(XMM14); -getset_reg_bn(XMM15); +getset_reg_bn(XMM0, 128); +getset_reg_bn(XMM1, 128); +getset_reg_bn(XMM2, 128); +getset_reg_bn(XMM3, 128); +getset_reg_bn(XMM4, 128); +getset_reg_bn(XMM5, 128); +getset_reg_bn(XMM6, 128); +getset_reg_bn(XMM7, 128); +getset_reg_bn(XMM8, 128); +getset_reg_bn(XMM9, 128); +getset_reg_bn(XMM10, 128); +getset_reg_bn(XMM11, 128); +getset_reg_bn(XMM12, 128); +getset_reg_bn(XMM13, 128); +getset_reg_bn(XMM14, 128); +getset_reg_bn(XMM15, 128); getset_reg_u32(tsc1); getset_reg_u32(tsc2); |