about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--miasm2/jitter/arch/JitCore_aarch64.c131
-rw-r--r--miasm2/jitter/arch/JitCore_aarch64.h131
-rw-r--r--miasm2/jitter/arch/JitCore_arm.c112
-rw-r--r--miasm2/jitter/arch/JitCore_arm.h111
-rw-r--r--miasm2/jitter/arch/JitCore_mips32.c127
-rw-r--r--miasm2/jitter/arch/JitCore_mips32.h418
-rw-r--r--miasm2/jitter/arch/JitCore_msp430.c110
-rw-r--r--miasm2/jitter/arch/JitCore_msp430.h120
-rw-r--r--miasm2/jitter/arch/JitCore_x86.c140
-rw-r--r--miasm2/jitter/arch/JitCore_x86.h171
-rw-r--r--miasm2/jitter/codegen.py78
11 files changed, 45 insertions, 1604 deletions
diff --git a/miasm2/jitter/arch/JitCore_aarch64.c b/miasm2/jitter/arch/JitCore_aarch64.c
index 28661bfe..46b5b25c 100644
--- a/miasm2/jitter/arch/JitCore_aarch64.c
+++ b/miasm2/jitter/arch/JitCore_aarch64.c
@@ -386,7 +386,6 @@ PyObject* get_gpreg_offset_all(void)
     PyObject *o;
 
     get_reg_off(exception_flags);
-    get_reg_off(exception_flags_new);
 
     get_reg_off(X0);
     get_reg_off(X1);
@@ -422,142 +421,12 @@ PyObject* get_gpreg_offset_all(void)
     get_reg_off(SP);
     get_reg_off(PC);
 
-
-    get_reg_off(X0_new);
-    get_reg_off(X1_new);
-    get_reg_off(X2_new);
-    get_reg_off(X3_new);
-    get_reg_off(X4_new);
-    get_reg_off(X5_new);
-    get_reg_off(X6_new);
-    get_reg_off(X7_new);
-    get_reg_off(X8_new);
-    get_reg_off(X9_new);
-    get_reg_off(X10_new);
-    get_reg_off(X11_new);
-    get_reg_off(X12_new);
-    get_reg_off(X13_new);
-    get_reg_off(X14_new);
-    get_reg_off(X15_new);
-    get_reg_off(X16_new);
-    get_reg_off(X17_new);
-    get_reg_off(X18_new);
-    get_reg_off(X19_new);
-    get_reg_off(X20_new);
-    get_reg_off(X21_new);
-    get_reg_off(X22_new);
-    get_reg_off(X23_new);
-    get_reg_off(X24_new);
-    get_reg_off(X25_new);
-    get_reg_off(X26_new);
-    get_reg_off(X27_new);
-    get_reg_off(X28_new);
-    get_reg_off(X29_new);
-    get_reg_off(LR_new);
-    get_reg_off(SP_new);
-    get_reg_off(PC_new);
-
-
-
     /* eflag */
     get_reg_off(zf);
     get_reg_off(nf);
     get_reg_off(of);
     get_reg_off(cf);
 
-    get_reg_off(zf_new);
-    get_reg_off(nf_new);
-    get_reg_off(of_new);
-    get_reg_off(cf_new);
-
-
-    get_reg_off(pfmem08_0);
-    get_reg_off(pfmem08_1);
-    get_reg_off(pfmem08_2);
-    get_reg_off(pfmem08_3);
-    get_reg_off(pfmem08_4);
-    get_reg_off(pfmem08_5);
-    get_reg_off(pfmem08_6);
-    get_reg_off(pfmem08_7);
-    get_reg_off(pfmem08_8);
-    get_reg_off(pfmem08_9);
-    get_reg_off(pfmem08_10);
-    get_reg_off(pfmem08_11);
-    get_reg_off(pfmem08_12);
-    get_reg_off(pfmem08_13);
-    get_reg_off(pfmem08_14);
-    get_reg_off(pfmem08_15);
-    get_reg_off(pfmem08_16);
-    get_reg_off(pfmem08_17);
-    get_reg_off(pfmem08_18);
-    get_reg_off(pfmem08_19);
-
-
-    get_reg_off(pfmem16_0);
-    get_reg_off(pfmem16_1);
-    get_reg_off(pfmem16_2);
-    get_reg_off(pfmem16_3);
-    get_reg_off(pfmem16_4);
-    get_reg_off(pfmem16_5);
-    get_reg_off(pfmem16_6);
-    get_reg_off(pfmem16_7);
-    get_reg_off(pfmem16_8);
-    get_reg_off(pfmem16_9);
-    get_reg_off(pfmem16_10);
-    get_reg_off(pfmem16_11);
-    get_reg_off(pfmem16_12);
-    get_reg_off(pfmem16_13);
-    get_reg_off(pfmem16_14);
-    get_reg_off(pfmem16_15);
-    get_reg_off(pfmem16_16);
-    get_reg_off(pfmem16_17);
-    get_reg_off(pfmem16_18);
-    get_reg_off(pfmem16_19);
-
-
-    get_reg_off(pfmem32_0);
-    get_reg_off(pfmem32_1);
-    get_reg_off(pfmem32_2);
-    get_reg_off(pfmem32_3);
-    get_reg_off(pfmem32_4);
-    get_reg_off(pfmem32_5);
-    get_reg_off(pfmem32_6);
-    get_reg_off(pfmem32_7);
-    get_reg_off(pfmem32_8);
-    get_reg_off(pfmem32_9);
-    get_reg_off(pfmem32_10);
-    get_reg_off(pfmem32_11);
-    get_reg_off(pfmem32_12);
-    get_reg_off(pfmem32_13);
-    get_reg_off(pfmem32_14);
-    get_reg_off(pfmem32_15);
-    get_reg_off(pfmem32_16);
-    get_reg_off(pfmem32_17);
-    get_reg_off(pfmem32_18);
-    get_reg_off(pfmem32_19);
-
-
-    get_reg_off(pfmem64_0);
-    get_reg_off(pfmem64_1);
-    get_reg_off(pfmem64_2);
-    get_reg_off(pfmem64_3);
-    get_reg_off(pfmem64_4);
-    get_reg_off(pfmem64_5);
-    get_reg_off(pfmem64_6);
-    get_reg_off(pfmem64_7);
-    get_reg_off(pfmem64_8);
-    get_reg_off(pfmem64_9);
-    get_reg_off(pfmem64_10);
-    get_reg_off(pfmem64_11);
-    get_reg_off(pfmem64_12);
-    get_reg_off(pfmem64_13);
-    get_reg_off(pfmem64_14);
-    get_reg_off(pfmem64_15);
-    get_reg_off(pfmem64_16);
-    get_reg_off(pfmem64_17);
-    get_reg_off(pfmem64_18);
-    get_reg_off(pfmem64_19);
-
     return dict;
 }
 
diff --git a/miasm2/jitter/arch/JitCore_aarch64.h b/miasm2/jitter/arch/JitCore_aarch64.h
index e1708541..2203e037 100644
--- a/miasm2/jitter/arch/JitCore_aarch64.h
+++ b/miasm2/jitter/arch/JitCore_aarch64.h
@@ -1,7 +1,6 @@
 
 typedef struct {
 	uint32_t exception_flags;
-	uint32_t exception_flags_new;
 
 	/* gpregs */
 
@@ -40,141 +39,11 @@ typedef struct {
 
 	uint64_t PC;
 
-
-	uint64_t X0_new;
-	uint64_t X1_new;
-	uint64_t X2_new;
-	uint64_t X3_new;
-	uint64_t X4_new;
-	uint64_t X5_new;
-	uint64_t X6_new;
-	uint64_t X7_new;
-	uint64_t X8_new;
-	uint64_t X9_new;
-	uint64_t X10_new;
-	uint64_t X11_new;
-	uint64_t X12_new;
-	uint64_t X13_new;
-	uint64_t X14_new;
-	uint64_t X15_new;
-	uint64_t X16_new;
-	uint64_t X17_new;
-	uint64_t X18_new;
-	uint64_t X19_new;
-	uint64_t X20_new;
-	uint64_t X21_new;
-	uint64_t X22_new;
-	uint64_t X23_new;
-	uint64_t X24_new;
-	uint64_t X25_new;
-	uint64_t X26_new;
-	uint64_t X27_new;
-	uint64_t X28_new;
-	uint64_t X29_new;
-	uint64_t LR_new;
-	uint64_t SP_new;
-
-	uint64_t PC_new;
-
 	/* eflag */
 	uint32_t zf;
 	uint32_t nf;
 	uint32_t of;
 	uint32_t cf;
-
-	uint32_t zf_new;
-	uint32_t nf_new;
-	uint32_t of_new;
-	uint32_t cf_new;
-
-
-	uint8_t pfmem08_0;
-	uint8_t pfmem08_1;
-	uint8_t pfmem08_2;
-	uint8_t pfmem08_3;
-	uint8_t pfmem08_4;
-	uint8_t pfmem08_5;
-	uint8_t pfmem08_6;
-	uint8_t pfmem08_7;
-	uint8_t pfmem08_8;
-	uint8_t pfmem08_9;
-	uint8_t pfmem08_10;
-	uint8_t pfmem08_11;
-	uint8_t pfmem08_12;
-	uint8_t pfmem08_13;
-	uint8_t pfmem08_14;
-	uint8_t pfmem08_15;
-	uint8_t pfmem08_16;
-	uint8_t pfmem08_17;
-	uint8_t pfmem08_18;
-	uint8_t pfmem08_19;
-
-
-	uint16_t pfmem16_0;
-	uint16_t pfmem16_1;
-	uint16_t pfmem16_2;
-	uint16_t pfmem16_3;
-	uint16_t pfmem16_4;
-	uint16_t pfmem16_5;
-	uint16_t pfmem16_6;
-	uint16_t pfmem16_7;
-	uint16_t pfmem16_8;
-	uint16_t pfmem16_9;
-	uint16_t pfmem16_10;
-	uint16_t pfmem16_11;
-	uint16_t pfmem16_12;
-	uint16_t pfmem16_13;
-	uint16_t pfmem16_14;
-	uint16_t pfmem16_15;
-	uint16_t pfmem16_16;
-	uint16_t pfmem16_17;
-	uint16_t pfmem16_18;
-	uint16_t pfmem16_19;
-
-
-	uint32_t pfmem32_0;
-	uint32_t pfmem32_1;
-	uint32_t pfmem32_2;
-	uint32_t pfmem32_3;
-	uint32_t pfmem32_4;
-	uint32_t pfmem32_5;
-	uint32_t pfmem32_6;
-	uint32_t pfmem32_7;
-	uint32_t pfmem32_8;
-	uint32_t pfmem32_9;
-	uint32_t pfmem32_10;
-	uint32_t pfmem32_11;
-	uint32_t pfmem32_12;
-	uint32_t pfmem32_13;
-	uint32_t pfmem32_14;
-	uint32_t pfmem32_15;
-	uint32_t pfmem32_16;
-	uint32_t pfmem32_17;
-	uint32_t pfmem32_18;
-	uint32_t pfmem32_19;
-
-
-	uint64_t pfmem64_0;
-	uint64_t pfmem64_1;
-	uint64_t pfmem64_2;
-	uint64_t pfmem64_3;
-	uint64_t pfmem64_4;
-	uint64_t pfmem64_5;
-	uint64_t pfmem64_6;
-	uint64_t pfmem64_7;
-	uint64_t pfmem64_8;
-	uint64_t pfmem64_9;
-	uint64_t pfmem64_10;
-	uint64_t pfmem64_11;
-	uint64_t pfmem64_12;
-	uint64_t pfmem64_13;
-	uint64_t pfmem64_14;
-	uint64_t pfmem64_15;
-	uint64_t pfmem64_16;
-	uint64_t pfmem64_17;
-	uint64_t pfmem64_18;
-	uint64_t pfmem64_19;
-
 }vm_cpu_t;
 
 
diff --git a/miasm2/jitter/arch/JitCore_arm.c b/miasm2/jitter/arch/JitCore_arm.c
index b2550194..b3a93aca 100644
--- a/miasm2/jitter/arch/JitCore_arm.c
+++ b/miasm2/jitter/arch/JitCore_arm.c
@@ -300,8 +300,6 @@ PyObject* get_gpreg_offset_all(void)
     PyObject *o;
 
     get_reg_off(exception_flags);
-    get_reg_off(exception_flags_new);
-
 
     get_reg_off(R0);
     get_reg_off(R1);
@@ -320,122 +318,12 @@ PyObject* get_gpreg_offset_all(void)
     get_reg_off(LR);
     get_reg_off(PC);
 
-    get_reg_off(R0_new);
-    get_reg_off(R1_new);
-    get_reg_off(R2_new);
-    get_reg_off(R3_new);
-    get_reg_off(R4_new);
-    get_reg_off(R5_new);
-    get_reg_off(R6_new);
-    get_reg_off(R7_new);
-    get_reg_off(R8_new);
-    get_reg_off(R9_new);
-    get_reg_off(R10_new);
-    get_reg_off(R11_new);
-    get_reg_off(R12_new);
-    get_reg_off(SP_new);
-    get_reg_off(LR_new);
-    get_reg_off(PC_new);
-
 	/* eflag */
     get_reg_off(zf);
     get_reg_off(nf);
     get_reg_off(of);
     get_reg_off(cf);
 
-    get_reg_off(zf_new);
-    get_reg_off(nf_new);
-    get_reg_off(of_new);
-    get_reg_off(cf_new);
-
-
-    get_reg_off(pfmem08_0);
-    get_reg_off(pfmem08_1);
-    get_reg_off(pfmem08_2);
-    get_reg_off(pfmem08_3);
-    get_reg_off(pfmem08_4);
-    get_reg_off(pfmem08_5);
-    get_reg_off(pfmem08_6);
-    get_reg_off(pfmem08_7);
-    get_reg_off(pfmem08_8);
-    get_reg_off(pfmem08_9);
-    get_reg_off(pfmem08_10);
-    get_reg_off(pfmem08_11);
-    get_reg_off(pfmem08_12);
-    get_reg_off(pfmem08_13);
-    get_reg_off(pfmem08_14);
-    get_reg_off(pfmem08_15);
-    get_reg_off(pfmem08_16);
-    get_reg_off(pfmem08_17);
-    get_reg_off(pfmem08_18);
-    get_reg_off(pfmem08_19);
-
-
-    get_reg_off(pfmem16_0);
-    get_reg_off(pfmem16_1);
-    get_reg_off(pfmem16_2);
-    get_reg_off(pfmem16_3);
-    get_reg_off(pfmem16_4);
-    get_reg_off(pfmem16_5);
-    get_reg_off(pfmem16_6);
-    get_reg_off(pfmem16_7);
-    get_reg_off(pfmem16_8);
-    get_reg_off(pfmem16_9);
-    get_reg_off(pfmem16_10);
-    get_reg_off(pfmem16_11);
-    get_reg_off(pfmem16_12);
-    get_reg_off(pfmem16_13);
-    get_reg_off(pfmem16_14);
-    get_reg_off(pfmem16_15);
-    get_reg_off(pfmem16_16);
-    get_reg_off(pfmem16_17);
-    get_reg_off(pfmem16_18);
-    get_reg_off(pfmem16_19);
-
-
-    get_reg_off(pfmem32_0);
-    get_reg_off(pfmem32_1);
-    get_reg_off(pfmem32_2);
-    get_reg_off(pfmem32_3);
-    get_reg_off(pfmem32_4);
-    get_reg_off(pfmem32_5);
-    get_reg_off(pfmem32_6);
-    get_reg_off(pfmem32_7);
-    get_reg_off(pfmem32_8);
-    get_reg_off(pfmem32_9);
-    get_reg_off(pfmem32_10);
-    get_reg_off(pfmem32_11);
-    get_reg_off(pfmem32_12);
-    get_reg_off(pfmem32_13);
-    get_reg_off(pfmem32_14);
-    get_reg_off(pfmem32_15);
-    get_reg_off(pfmem32_16);
-    get_reg_off(pfmem32_17);
-    get_reg_off(pfmem32_18);
-    get_reg_off(pfmem32_19);
-
-
-    get_reg_off(pfmem64_0);
-    get_reg_off(pfmem64_1);
-    get_reg_off(pfmem64_2);
-    get_reg_off(pfmem64_3);
-    get_reg_off(pfmem64_4);
-    get_reg_off(pfmem64_5);
-    get_reg_off(pfmem64_6);
-    get_reg_off(pfmem64_7);
-    get_reg_off(pfmem64_8);
-    get_reg_off(pfmem64_9);
-    get_reg_off(pfmem64_10);
-    get_reg_off(pfmem64_11);
-    get_reg_off(pfmem64_12);
-    get_reg_off(pfmem64_13);
-    get_reg_off(pfmem64_14);
-    get_reg_off(pfmem64_15);
-    get_reg_off(pfmem64_16);
-    get_reg_off(pfmem64_17);
-    get_reg_off(pfmem64_18);
-    get_reg_off(pfmem64_19);
-
     return dict;
 }
 
diff --git a/miasm2/jitter/arch/JitCore_arm.h b/miasm2/jitter/arch/JitCore_arm.h
index dde112ef..976ff124 100644
--- a/miasm2/jitter/arch/JitCore_arm.h
+++ b/miasm2/jitter/arch/JitCore_arm.h
@@ -1,7 +1,6 @@
 
 typedef struct {
 	uint32_t exception_flags;
-	uint32_t exception_flags_new;
 
 	/* gpregs */
 	uint32_t R0;
@@ -21,122 +20,12 @@ typedef struct {
 	uint32_t LR;
 	uint32_t PC;
 
-	uint32_t R0_new;
-	uint32_t R1_new;
-	uint32_t R2_new;
-	uint32_t R3_new;
-	uint32_t R4_new;
-	uint32_t R5_new;
-	uint32_t R6_new;
-	uint32_t R7_new;
-	uint32_t R8_new;
-	uint32_t R9_new;
-	uint32_t R10_new;
-	uint32_t R11_new;
-	uint32_t R12_new;
-	uint32_t SP_new;
-	uint32_t LR_new;
-	uint32_t PC_new;
-
 	/* eflag */
 	uint32_t zf;
 	uint32_t nf;
 	uint32_t of;
 	uint32_t cf;
 
-	uint32_t zf_new;
-	uint32_t nf_new;
-	uint32_t of_new;
-	uint32_t cf_new;
-
-
-	uint8_t pfmem08_0;
-	uint8_t pfmem08_1;
-	uint8_t pfmem08_2;
-	uint8_t pfmem08_3;
-	uint8_t pfmem08_4;
-	uint8_t pfmem08_5;
-	uint8_t pfmem08_6;
-	uint8_t pfmem08_7;
-	uint8_t pfmem08_8;
-	uint8_t pfmem08_9;
-	uint8_t pfmem08_10;
-	uint8_t pfmem08_11;
-	uint8_t pfmem08_12;
-	uint8_t pfmem08_13;
-	uint8_t pfmem08_14;
-	uint8_t pfmem08_15;
-	uint8_t pfmem08_16;
-	uint8_t pfmem08_17;
-	uint8_t pfmem08_18;
-	uint8_t pfmem08_19;
-
-
-	uint16_t pfmem16_0;
-	uint16_t pfmem16_1;
-	uint16_t pfmem16_2;
-	uint16_t pfmem16_3;
-	uint16_t pfmem16_4;
-	uint16_t pfmem16_5;
-	uint16_t pfmem16_6;
-	uint16_t pfmem16_7;
-	uint16_t pfmem16_8;
-	uint16_t pfmem16_9;
-	uint16_t pfmem16_10;
-	uint16_t pfmem16_11;
-	uint16_t pfmem16_12;
-	uint16_t pfmem16_13;
-	uint16_t pfmem16_14;
-	uint16_t pfmem16_15;
-	uint16_t pfmem16_16;
-	uint16_t pfmem16_17;
-	uint16_t pfmem16_18;
-	uint16_t pfmem16_19;
-
-
-	uint32_t pfmem32_0;
-	uint32_t pfmem32_1;
-	uint32_t pfmem32_2;
-	uint32_t pfmem32_3;
-	uint32_t pfmem32_4;
-	uint32_t pfmem32_5;
-	uint32_t pfmem32_6;
-	uint32_t pfmem32_7;
-	uint32_t pfmem32_8;
-	uint32_t pfmem32_9;
-	uint32_t pfmem32_10;
-	uint32_t pfmem32_11;
-	uint32_t pfmem32_12;
-	uint32_t pfmem32_13;
-	uint32_t pfmem32_14;
-	uint32_t pfmem32_15;
-	uint32_t pfmem32_16;
-	uint32_t pfmem32_17;
-	uint32_t pfmem32_18;
-	uint32_t pfmem32_19;
-
-
-	uint64_t pfmem64_0;
-	uint64_t pfmem64_1;
-	uint64_t pfmem64_2;
-	uint64_t pfmem64_3;
-	uint64_t pfmem64_4;
-	uint64_t pfmem64_5;
-	uint64_t pfmem64_6;
-	uint64_t pfmem64_7;
-	uint64_t pfmem64_8;
-	uint64_t pfmem64_9;
-	uint64_t pfmem64_10;
-	uint64_t pfmem64_11;
-	uint64_t pfmem64_12;
-	uint64_t pfmem64_13;
-	uint64_t pfmem64_14;
-	uint64_t pfmem64_15;
-	uint64_t pfmem64_16;
-	uint64_t pfmem64_17;
-	uint64_t pfmem64_18;
-	uint64_t pfmem64_19;
-
 }vm_cpu_t;
 
 
diff --git a/miasm2/jitter/arch/JitCore_mips32.c b/miasm2/jitter/arch/JitCore_mips32.c
index c8f8fb81..86624b76 100644
--- a/miasm2/jitter/arch/JitCore_mips32.c
+++ b/miasm2/jitter/arch/JitCore_mips32.c
@@ -356,7 +356,6 @@ PyObject* get_gpreg_offset_all(void)
     PyObject *o;
 
     get_reg_off(exception_flags);
-    get_reg_off(exception_flags_new);
 
 
     get_reg_off(ZERO);
@@ -396,132 +395,6 @@ PyObject* get_gpreg_offset_all(void)
     get_reg_off(R_LO);
     get_reg_off(R_HI);
 
-    get_reg_off(ZERO_new);
-    get_reg_off(AT_new);
-    get_reg_off(V0_new);
-    get_reg_off(V1_new);
-    get_reg_off(A0_new);
-    get_reg_off(A1_new);
-    get_reg_off(A2_new);
-    get_reg_off(A3_new);
-    get_reg_off(T0_new);
-    get_reg_off(T1_new);
-    get_reg_off(T2_new);
-    get_reg_off(T3_new);
-    get_reg_off(T4_new);
-    get_reg_off(T5_new);
-    get_reg_off(T6_new);
-    get_reg_off(T7_new);
-    get_reg_off(S0_new);
-    get_reg_off(S1_new);
-    get_reg_off(S2_new);
-    get_reg_off(S3_new);
-    get_reg_off(S4_new);
-    get_reg_off(S5_new);
-    get_reg_off(S6_new);
-    get_reg_off(S7_new);
-    get_reg_off(T8_new);
-    get_reg_off(T9_new);
-    get_reg_off(K0_new);
-    get_reg_off(K1_new);
-    get_reg_off(GP_new);
-    get_reg_off(SP_new);
-    get_reg_off(FP_new);
-    get_reg_off(RA_new);
-    get_reg_off(PC_new);
-    get_reg_off(PC_FETCH_new);
-    get_reg_off(R_LO_new);
-    get_reg_off(R_HI_new);
-
-
-
-    get_reg_off(pfmem08_0);
-    get_reg_off(pfmem08_1);
-    get_reg_off(pfmem08_2);
-    get_reg_off(pfmem08_3);
-    get_reg_off(pfmem08_4);
-    get_reg_off(pfmem08_5);
-    get_reg_off(pfmem08_6);
-    get_reg_off(pfmem08_7);
-    get_reg_off(pfmem08_8);
-    get_reg_off(pfmem08_9);
-    get_reg_off(pfmem08_10);
-    get_reg_off(pfmem08_11);
-    get_reg_off(pfmem08_12);
-    get_reg_off(pfmem08_13);
-    get_reg_off(pfmem08_14);
-    get_reg_off(pfmem08_15);
-    get_reg_off(pfmem08_16);
-    get_reg_off(pfmem08_17);
-    get_reg_off(pfmem08_18);
-    get_reg_off(pfmem08_19);
-
-
-    get_reg_off(pfmem16_0);
-    get_reg_off(pfmem16_1);
-    get_reg_off(pfmem16_2);
-    get_reg_off(pfmem16_3);
-    get_reg_off(pfmem16_4);
-    get_reg_off(pfmem16_5);
-    get_reg_off(pfmem16_6);
-    get_reg_off(pfmem16_7);
-    get_reg_off(pfmem16_8);
-    get_reg_off(pfmem16_9);
-    get_reg_off(pfmem16_10);
-    get_reg_off(pfmem16_11);
-    get_reg_off(pfmem16_12);
-    get_reg_off(pfmem16_13);
-    get_reg_off(pfmem16_14);
-    get_reg_off(pfmem16_15);
-    get_reg_off(pfmem16_16);
-    get_reg_off(pfmem16_17);
-    get_reg_off(pfmem16_18);
-    get_reg_off(pfmem16_19);
-
-
-    get_reg_off(pfmem32_0);
-    get_reg_off(pfmem32_1);
-    get_reg_off(pfmem32_2);
-    get_reg_off(pfmem32_3);
-    get_reg_off(pfmem32_4);
-    get_reg_off(pfmem32_5);
-    get_reg_off(pfmem32_6);
-    get_reg_off(pfmem32_7);
-    get_reg_off(pfmem32_8);
-    get_reg_off(pfmem32_9);
-    get_reg_off(pfmem32_10);
-    get_reg_off(pfmem32_11);
-    get_reg_off(pfmem32_12);
-    get_reg_off(pfmem32_13);
-    get_reg_off(pfmem32_14);
-    get_reg_off(pfmem32_15);
-    get_reg_off(pfmem32_16);
-    get_reg_off(pfmem32_17);
-    get_reg_off(pfmem32_18);
-    get_reg_off(pfmem32_19);
-
-
-    get_reg_off(pfmem64_0);
-    get_reg_off(pfmem64_1);
-    get_reg_off(pfmem64_2);
-    get_reg_off(pfmem64_3);
-    get_reg_off(pfmem64_4);
-    get_reg_off(pfmem64_5);
-    get_reg_off(pfmem64_6);
-    get_reg_off(pfmem64_7);
-    get_reg_off(pfmem64_8);
-    get_reg_off(pfmem64_9);
-    get_reg_off(pfmem64_10);
-    get_reg_off(pfmem64_11);
-    get_reg_off(pfmem64_12);
-    get_reg_off(pfmem64_13);
-    get_reg_off(pfmem64_14);
-    get_reg_off(pfmem64_15);
-    get_reg_off(pfmem64_16);
-    get_reg_off(pfmem64_17);
-    get_reg_off(pfmem64_18);
-    get_reg_off(pfmem64_19);
-
     return dict;
 }
 
diff --git a/miasm2/jitter/arch/JitCore_mips32.h b/miasm2/jitter/arch/JitCore_mips32.h
index c257b63c..55c63d3b 100644
--- a/miasm2/jitter/arch/JitCore_mips32.h
+++ b/miasm2/jitter/arch/JitCore_mips32.h
@@ -1,7 +1,6 @@
 
 typedef struct {
 	uint32_t exception_flags;
-	uint32_t exception_flags_new;
 
 	/* gpregs */
 
@@ -42,132 +41,6 @@ typedef struct {
 	uint32_t R_LO;
 	uint32_t R_HI;
 
-	uint32_t ZERO_new;
-	uint32_t AT_new;
-	uint32_t V0_new;
-	uint32_t V1_new;
-	uint32_t A0_new;
-	uint32_t A1_new;
-	uint32_t A2_new;
-	uint32_t A3_new;
-	uint32_t T0_new;
-	uint32_t T1_new;
-	uint32_t T2_new;
-	uint32_t T3_new;
-	uint32_t T4_new;
-	uint32_t T5_new;
-	uint32_t T6_new;
-	uint32_t T7_new;
-	uint32_t S0_new;
-	uint32_t S1_new;
-	uint32_t S2_new;
-	uint32_t S3_new;
-	uint32_t S4_new;
-	uint32_t S5_new;
-	uint32_t S6_new;
-	uint32_t S7_new;
-	uint32_t T8_new;
-	uint32_t T9_new;
-	uint32_t K0_new;
-	uint32_t K1_new;
-	uint32_t GP_new;
-	uint32_t SP_new;
-	uint32_t FP_new;
-	uint32_t RA_new;
-	uint32_t PC_new;
-	uint32_t PC_FETCH_new;
-	uint32_t R_LO_new;
-	uint32_t R_HI_new;
-
-
-
-	uint8_t pfmem08_0;
-	uint8_t pfmem08_1;
-	uint8_t pfmem08_2;
-	uint8_t pfmem08_3;
-	uint8_t pfmem08_4;
-	uint8_t pfmem08_5;
-	uint8_t pfmem08_6;
-	uint8_t pfmem08_7;
-	uint8_t pfmem08_8;
-	uint8_t pfmem08_9;
-	uint8_t pfmem08_10;
-	uint8_t pfmem08_11;
-	uint8_t pfmem08_12;
-	uint8_t pfmem08_13;
-	uint8_t pfmem08_14;
-	uint8_t pfmem08_15;
-	uint8_t pfmem08_16;
-	uint8_t pfmem08_17;
-	uint8_t pfmem08_18;
-	uint8_t pfmem08_19;
-
-
-	uint16_t pfmem16_0;
-	uint16_t pfmem16_1;
-	uint16_t pfmem16_2;
-	uint16_t pfmem16_3;
-	uint16_t pfmem16_4;
-	uint16_t pfmem16_5;
-	uint16_t pfmem16_6;
-	uint16_t pfmem16_7;
-	uint16_t pfmem16_8;
-	uint16_t pfmem16_9;
-	uint16_t pfmem16_10;
-	uint16_t pfmem16_11;
-	uint16_t pfmem16_12;
-	uint16_t pfmem16_13;
-	uint16_t pfmem16_14;
-	uint16_t pfmem16_15;
-	uint16_t pfmem16_16;
-	uint16_t pfmem16_17;
-	uint16_t pfmem16_18;
-	uint16_t pfmem16_19;
-
-
-	uint32_t pfmem32_0;
-	uint32_t pfmem32_1;
-	uint32_t pfmem32_2;
-	uint32_t pfmem32_3;
-	uint32_t pfmem32_4;
-	uint32_t pfmem32_5;
-	uint32_t pfmem32_6;
-	uint32_t pfmem32_7;
-	uint32_t pfmem32_8;
-	uint32_t pfmem32_9;
-	uint32_t pfmem32_10;
-	uint32_t pfmem32_11;
-	uint32_t pfmem32_12;
-	uint32_t pfmem32_13;
-	uint32_t pfmem32_14;
-	uint32_t pfmem32_15;
-	uint32_t pfmem32_16;
-	uint32_t pfmem32_17;
-	uint32_t pfmem32_18;
-	uint32_t pfmem32_19;
-
-
-	uint64_t pfmem64_0;
-	uint64_t pfmem64_1;
-	uint64_t pfmem64_2;
-	uint64_t pfmem64_3;
-	uint64_t pfmem64_4;
-	uint64_t pfmem64_5;
-	uint64_t pfmem64_6;
-	uint64_t pfmem64_7;
-	uint64_t pfmem64_8;
-	uint64_t pfmem64_9;
-	uint64_t pfmem64_10;
-	uint64_t pfmem64_11;
-	uint64_t pfmem64_12;
-	uint64_t pfmem64_13;
-	uint64_t pfmem64_14;
-	uint64_t pfmem64_15;
-	uint64_t pfmem64_16;
-	uint64_t pfmem64_17;
-	uint64_t pfmem64_18;
-	uint64_t pfmem64_19;
-
 
 	double F0;
 	double F1;
@@ -202,39 +75,6 @@ typedef struct {
 	double F30;
 	double F31;
 
-	double F0_new;
-	double F1_new;
-	double F2_new;
-	double F3_new;
-	double F4_new;
-	double F5_new;
-	double F6_new;
-	double F7_new;
-	double F8_new;
-	double F9_new;
-	double F10_new;
-	double F11_new;
-	double F12_new;
-	double F13_new;
-	double F14_new;
-	double F15_new;
-	double F16_new;
-	double F17_new;
-	double F18_new;
-	double F19_new;
-	double F20_new;
-	double F21_new;
-	double F22_new;
-	double F23_new;
-	double F24_new;
-	double F25_new;
-	double F26_new;
-	double F27_new;
-	double F28_new;
-	double F29_new;
-	double F30_new;
-	double F31_new;
-
 	uint32_t INDEX;
 	uint32_t CPR0_1;
 	uint32_t CPR0_2;
@@ -491,264 +331,6 @@ typedef struct {
 	uint32_t CPR0_253;
 	uint32_t CPR0_254;
 	uint32_t CPR0_255;
-
-	uint32_t INDEX_new;
-	uint32_t CPR0_1_new;
-	uint32_t CPR0_2_new;
-	uint32_t CPR0_3_new;
-	uint32_t CPR0_4_new;
-	uint32_t CPR0_5_new;
-	uint32_t CPR0_6_new;
-	uint32_t CPR0_7_new;
-	uint32_t CPR0_8_new;
-	uint32_t CPR0_9_new;
-	uint32_t CPR0_10_new;
-	uint32_t CPR0_11_new;
-	uint32_t CPR0_12_new;
-	uint32_t CPR0_13_new;
-	uint32_t CPR0_14_new;
-	uint32_t CPR0_15_new;
-	uint32_t ENTRYLO0_new;
-	uint32_t CPR0_17_new;
-	uint32_t CPR0_18_new;
-	uint32_t CPR0_19_new;
-	uint32_t CPR0_20_new;
-	uint32_t CPR0_21_new;
-	uint32_t CPR0_22_new;
-	uint32_t CPR0_23_new;
-	uint32_t ENTRYLO1_new;
-	uint32_t CPR0_25_new;
-	uint32_t CPR0_26_new;
-	uint32_t CPR0_27_new;
-	uint32_t CPR0_28_new;
-	uint32_t CPR0_29_new;
-	uint32_t CPR0_30_new;
-	uint32_t CPR0_31_new;
-	uint32_t CPR0_32_new;
-	uint32_t CPR0_33_new;
-	uint32_t CPR0_34_new;
-	uint32_t CPR0_35_new;
-	uint32_t CPR0_36_new;
-	uint32_t CPR0_37_new;
-	uint32_t CPR0_38_new;
-	uint32_t CPR0_39_new;
-	uint32_t PAGEMASK_new;
-	uint32_t CPR0_41_new;
-	uint32_t CPR0_42_new;
-	uint32_t CPR0_43_new;
-	uint32_t CPR0_44_new;
-	uint32_t CPR0_45_new;
-	uint32_t CPR0_46_new;
-	uint32_t CPR0_47_new;
-	uint32_t CPR0_48_new;
-	uint32_t CPR0_49_new;
-	uint32_t CPR0_50_new;
-	uint32_t CPR0_51_new;
-	uint32_t CPR0_52_new;
-	uint32_t CPR0_53_new;
-	uint32_t CPR0_54_new;
-	uint32_t CPR0_55_new;
-	uint32_t CPR0_56_new;
-	uint32_t CPR0_57_new;
-	uint32_t CPR0_58_new;
-	uint32_t CPR0_59_new;
-	uint32_t CPR0_60_new;
-	uint32_t CPR0_61_new;
-	uint32_t CPR0_62_new;
-	uint32_t CPR0_63_new;
-	uint32_t CPR0_64_new;
-	uint32_t CPR0_65_new;
-	uint32_t CPR0_66_new;
-	uint32_t CPR0_67_new;
-	uint32_t CPR0_68_new;
-	uint32_t CPR0_69_new;
-	uint32_t CPR0_70_new;
-	uint32_t CPR0_71_new;
-	uint32_t COUNT_new;
-	uint32_t CPR0_73_new;
-	uint32_t CPR0_74_new;
-	uint32_t CPR0_75_new;
-	uint32_t CPR0_76_new;
-	uint32_t CPR0_77_new;
-	uint32_t CPR0_78_new;
-	uint32_t CPR0_79_new;
-	uint32_t ENTRYHI_new;
-	uint32_t CPR0_81_new;
-	uint32_t CPR0_82_new;
-	uint32_t CPR0_83_new;
-	uint32_t CPR0_84_new;
-	uint32_t CPR0_85_new;
-	uint32_t CPR0_86_new;
-	uint32_t CPR0_87_new;
-	uint32_t CPR0_88_new;
-	uint32_t CPR0_89_new;
-	uint32_t CPR0_90_new;
-	uint32_t CPR0_91_new;
-	uint32_t CPR0_92_new;
-	uint32_t CPR0_93_new;
-	uint32_t CPR0_94_new;
-	uint32_t CPR0_95_new;
-	uint32_t CPR0_96_new;
-	uint32_t CPR0_97_new;
-	uint32_t CPR0_98_new;
-	uint32_t CPR0_99_new;
-	uint32_t CPR0_100_new;
-	uint32_t CPR0_101_new;
-	uint32_t CPR0_102_new;
-	uint32_t CPR0_103_new;
-	uint32_t CAUSE_new;
-	uint32_t CPR0_105_new;
-	uint32_t CPR0_106_new;
-	uint32_t CPR0_107_new;
-	uint32_t CPR0_108_new;
-	uint32_t CPR0_109_new;
-	uint32_t CPR0_110_new;
-	uint32_t CPR0_111_new;
-	uint32_t EPC_new;
-	uint32_t CPR0_113_new;
-	uint32_t CPR0_114_new;
-	uint32_t CPR0_115_new;
-	uint32_t CPR0_116_new;
-	uint32_t CPR0_117_new;
-	uint32_t CPR0_118_new;
-	uint32_t CPR0_119_new;
-	uint32_t CPR0_120_new;
-	uint32_t CPR0_121_new;
-	uint32_t CPR0_122_new;
-	uint32_t CPR0_123_new;
-	uint32_t CPR0_124_new;
-	uint32_t CPR0_125_new;
-	uint32_t CPR0_126_new;
-	uint32_t CPR0_127_new;
-	uint32_t CONFIG_new;
-	uint32_t CPR0_129_new;
-	uint32_t CPR0_130_new;
-	uint32_t CPR0_131_new;
-	uint32_t CPR0_132_new;
-	uint32_t CPR0_133_new;
-	uint32_t CPR0_134_new;
-	uint32_t CPR0_135_new;
-	uint32_t CPR0_136_new;
-	uint32_t CPR0_137_new;
-	uint32_t CPR0_138_new;
-	uint32_t CPR0_139_new;
-	uint32_t CPR0_140_new;
-	uint32_t CPR0_141_new;
-	uint32_t CPR0_142_new;
-	uint32_t CPR0_143_new;
-	uint32_t CPR0_144_new;
-	uint32_t CPR0_145_new;
-	uint32_t CPR0_146_new;
-	uint32_t CPR0_147_new;
-	uint32_t CPR0_148_new;
-	uint32_t CPR0_149_new;
-	uint32_t CPR0_150_new;
-	uint32_t CPR0_151_new;
-	uint32_t WATCHHI_new;
-	uint32_t CPR0_153_new;
-	uint32_t CPR0_154_new;
-	uint32_t CPR0_155_new;
-	uint32_t CPR0_156_new;
-	uint32_t CPR0_157_new;
-	uint32_t CPR0_158_new;
-	uint32_t CPR0_159_new;
-	uint32_t CPR0_160_new;
-	uint32_t CPR0_161_new;
-	uint32_t CPR0_162_new;
-	uint32_t CPR0_163_new;
-	uint32_t CPR0_164_new;
-	uint32_t CPR0_165_new;
-	uint32_t CPR0_166_new;
-	uint32_t CPR0_167_new;
-	uint32_t CPR0_168_new;
-	uint32_t CPR0_169_new;
-	uint32_t CPR0_170_new;
-	uint32_t CPR0_171_new;
-	uint32_t CPR0_172_new;
-	uint32_t CPR0_173_new;
-	uint32_t CPR0_174_new;
-	uint32_t CPR0_175_new;
-	uint32_t CPR0_176_new;
-	uint32_t CPR0_177_new;
-	uint32_t CPR0_178_new;
-	uint32_t CPR0_179_new;
-	uint32_t CPR0_180_new;
-	uint32_t CPR0_181_new;
-	uint32_t CPR0_182_new;
-	uint32_t CPR0_183_new;
-	uint32_t CPR0_184_new;
-	uint32_t CPR0_185_new;
-	uint32_t CPR0_186_new;
-	uint32_t CPR0_187_new;
-	uint32_t CPR0_188_new;
-	uint32_t CPR0_189_new;
-	uint32_t CPR0_190_new;
-	uint32_t CPR0_191_new;
-	uint32_t CPR0_192_new;
-	uint32_t CPR0_193_new;
-	uint32_t CPR0_194_new;
-	uint32_t CPR0_195_new;
-	uint32_t CPR0_196_new;
-	uint32_t CPR0_197_new;
-	uint32_t CPR0_198_new;
-	uint32_t CPR0_199_new;
-	uint32_t CPR0_200_new;
-	uint32_t CPR0_201_new;
-	uint32_t CPR0_202_new;
-	uint32_t CPR0_203_new;
-	uint32_t CPR0_204_new;
-	uint32_t CPR0_205_new;
-	uint32_t CPR0_206_new;
-	uint32_t CPR0_207_new;
-	uint32_t CPR0_208_new;
-	uint32_t CPR0_209_new;
-	uint32_t CPR0_210_new;
-	uint32_t CPR0_211_new;
-	uint32_t CPR0_212_new;
-	uint32_t CPR0_213_new;
-	uint32_t CPR0_214_new;
-	uint32_t CPR0_215_new;
-	uint32_t CPR0_216_new;
-	uint32_t CPR0_217_new;
-	uint32_t CPR0_218_new;
-	uint32_t CPR0_219_new;
-	uint32_t CPR0_220_new;
-	uint32_t CPR0_221_new;
-	uint32_t CPR0_222_new;
-	uint32_t CPR0_223_new;
-	uint32_t CPR0_224_new;
-	uint32_t CPR0_225_new;
-	uint32_t CPR0_226_new;
-	uint32_t CPR0_227_new;
-	uint32_t CPR0_228_new;
-	uint32_t CPR0_229_new;
-	uint32_t CPR0_230_new;
-	uint32_t CPR0_231_new;
-	uint32_t CPR0_232_new;
-	uint32_t CPR0_233_new;
-	uint32_t CPR0_234_new;
-	uint32_t CPR0_235_new;
-	uint32_t CPR0_236_new;
-	uint32_t CPR0_237_new;
-	uint32_t CPR0_238_new;
-	uint32_t CPR0_239_new;
-	uint32_t CPR0_240_new;
-	uint32_t CPR0_241_new;
-	uint32_t CPR0_242_new;
-	uint32_t CPR0_243_new;
-	uint32_t CPR0_244_new;
-	uint32_t CPR0_245_new;
-	uint32_t CPR0_246_new;
-	uint32_t CPR0_247_new;
-	uint32_t CPR0_248_new;
-	uint32_t CPR0_249_new;
-	uint32_t CPR0_250_new;
-	uint32_t CPR0_251_new;
-	uint32_t CPR0_252_new;
-	uint32_t CPR0_253_new;
-	uint32_t CPR0_254_new;
-	uint32_t CPR0_255_new;
-
 }vm_cpu_t;
 
 void dump_gpregs(vm_cpu_t* vmcpu);
diff --git a/miasm2/jitter/arch/JitCore_msp430.c b/miasm2/jitter/arch/JitCore_msp430.c
index 3a34248a..c6f6aa92 100644
--- a/miasm2/jitter/arch/JitCore_msp430.c
+++ b/miasm2/jitter/arch/JitCore_msp430.c
@@ -317,7 +317,7 @@ PyObject* get_gpreg_offset_all(void)
     PyObject *dict = PyDict_New();
     PyObject *o;
     get_reg_off(exception_flags);
-    get_reg_off(exception_flags_new);
+
     get_reg_off(PC);
     get_reg_off(SP);
     get_reg_off(R3);
@@ -333,22 +333,7 @@ PyObject* get_gpreg_offset_all(void)
     get_reg_off(R13);
     get_reg_off(R14);
     get_reg_off(R15);
-    get_reg_off(PC_new);
-    get_reg_off(SP_new);
-    get_reg_off(SR_new);
-    get_reg_off(R3_new);
-    get_reg_off(R4_new);
-    get_reg_off(R5_new);
-    get_reg_off(R6_new);
-    get_reg_off(R7_new);
-    get_reg_off(R8_new);
-    get_reg_off(R9_new);
-    get_reg_off(R10_new);
-    get_reg_off(R11_new);
-    get_reg_off(R12_new);
-    get_reg_off(R13_new);
-    get_reg_off(R14_new);
-    get_reg_off(R15_new);
+
     get_reg_off(zf);
     get_reg_off(nf);
     get_reg_off(of);
@@ -359,96 +344,7 @@ PyObject* get_gpreg_offset_all(void)
     get_reg_off(scg0);
     get_reg_off(scg1);
     get_reg_off(res);
-    get_reg_off(zf_new);
-    get_reg_off(nf_new);
-    get_reg_off(of_new);
-    get_reg_off(cf_new);
-    get_reg_off(cpuoff_new);
-    get_reg_off(gie_new);
-    get_reg_off(osc_new);
-    get_reg_off(scg0_new);
-    get_reg_off(scg1_new);
-    get_reg_off(res_new);
-    get_reg_off(pfmem08_0);
-    get_reg_off(pfmem08_1);
-    get_reg_off(pfmem08_2);
-    get_reg_off(pfmem08_3);
-    get_reg_off(pfmem08_4);
-    get_reg_off(pfmem08_5);
-    get_reg_off(pfmem08_6);
-    get_reg_off(pfmem08_7);
-    get_reg_off(pfmem08_8);
-    get_reg_off(pfmem08_9);
-    get_reg_off(pfmem08_10);
-    get_reg_off(pfmem08_11);
-    get_reg_off(pfmem08_12);
-    get_reg_off(pfmem08_13);
-    get_reg_off(pfmem08_14);
-    get_reg_off(pfmem08_15);
-    get_reg_off(pfmem08_16);
-    get_reg_off(pfmem08_17);
-    get_reg_off(pfmem08_18);
-    get_reg_off(pfmem08_19);
-    get_reg_off(pfmem16_0);
-    get_reg_off(pfmem16_1);
-    get_reg_off(pfmem16_2);
-    get_reg_off(pfmem16_3);
-    get_reg_off(pfmem16_4);
-    get_reg_off(pfmem16_5);
-    get_reg_off(pfmem16_6);
-    get_reg_off(pfmem16_7);
-    get_reg_off(pfmem16_8);
-    get_reg_off(pfmem16_9);
-    get_reg_off(pfmem16_10);
-    get_reg_off(pfmem16_11);
-    get_reg_off(pfmem16_12);
-    get_reg_off(pfmem16_13);
-    get_reg_off(pfmem16_14);
-    get_reg_off(pfmem16_15);
-    get_reg_off(pfmem16_16);
-    get_reg_off(pfmem16_17);
-    get_reg_off(pfmem16_18);
-    get_reg_off(pfmem16_19);
-    get_reg_off(pfmem32_0);
-    get_reg_off(pfmem32_1);
-    get_reg_off(pfmem32_2);
-    get_reg_off(pfmem32_3);
-    get_reg_off(pfmem32_4);
-    get_reg_off(pfmem32_5);
-    get_reg_off(pfmem32_6);
-    get_reg_off(pfmem32_7);
-    get_reg_off(pfmem32_8);
-    get_reg_off(pfmem32_9);
-    get_reg_off(pfmem32_10);
-    get_reg_off(pfmem32_11);
-    get_reg_off(pfmem32_12);
-    get_reg_off(pfmem32_13);
-    get_reg_off(pfmem32_14);
-    get_reg_off(pfmem32_15);
-    get_reg_off(pfmem32_16);
-    get_reg_off(pfmem32_17);
-    get_reg_off(pfmem32_18);
-    get_reg_off(pfmem32_19);
-    get_reg_off(pfmem64_0);
-    get_reg_off(pfmem64_1);
-    get_reg_off(pfmem64_2);
-    get_reg_off(pfmem64_3);
-    get_reg_off(pfmem64_4);
-    get_reg_off(pfmem64_5);
-    get_reg_off(pfmem64_6);
-    get_reg_off(pfmem64_7);
-    get_reg_off(pfmem64_8);
-    get_reg_off(pfmem64_9);
-    get_reg_off(pfmem64_10);
-    get_reg_off(pfmem64_11);
-    get_reg_off(pfmem64_12);
-    get_reg_off(pfmem64_13);
-    get_reg_off(pfmem64_14);
-    get_reg_off(pfmem64_15);
-    get_reg_off(pfmem64_16);
-    get_reg_off(pfmem64_17);
-    get_reg_off(pfmem64_18);
-    get_reg_off(pfmem64_19);
+
     return dict;
 }
 
diff --git a/miasm2/jitter/arch/JitCore_msp430.h b/miasm2/jitter/arch/JitCore_msp430.h
index 179554ad..03b0bb25 100644
--- a/miasm2/jitter/arch/JitCore_msp430.h
+++ b/miasm2/jitter/arch/JitCore_msp430.h
@@ -1,7 +1,6 @@
 
 typedef struct {
 	uint32_t exception_flags;
-	uint32_t exception_flags_new;
 
 	/* gpregs */
 	uint32_t PC;
@@ -20,23 +19,6 @@ typedef struct {
 	uint32_t R14;
 	uint32_t R15;
 
-	uint32_t PC_new;
-	uint32_t SP_new;
-	uint32_t SR_new;
-	uint32_t R3_new;
-	uint32_t R4_new;
-	uint32_t R5_new;
-	uint32_t R6_new;
-	uint32_t R7_new;
-	uint32_t R8_new;
-	uint32_t R9_new;
-	uint32_t R10_new;
-	uint32_t R11_new;
-	uint32_t R12_new;
-	uint32_t R13_new;
-	uint32_t R14_new;
-	uint32_t R15_new;
-
 	/* eflag */
 	uint32_t zf;
 	uint32_t nf;
@@ -50,108 +32,6 @@ typedef struct {
 	uint32_t scg1;
 	uint32_t res;
 
-
-	uint32_t zf_new;
-	uint32_t nf_new;
-	uint32_t of_new;
-	uint32_t cf_new;
-
-	uint32_t cpuoff_new;
-	uint32_t gie_new;
-	uint32_t osc_new;
-	uint32_t scg0_new;
-	uint32_t scg1_new;
-	uint32_t res_new;
-
-
-	uint8_t pfmem08_0;
-	uint8_t pfmem08_1;
-	uint8_t pfmem08_2;
-	uint8_t pfmem08_3;
-	uint8_t pfmem08_4;
-	uint8_t pfmem08_5;
-	uint8_t pfmem08_6;
-	uint8_t pfmem08_7;
-	uint8_t pfmem08_8;
-	uint8_t pfmem08_9;
-	uint8_t pfmem08_10;
-	uint8_t pfmem08_11;
-	uint8_t pfmem08_12;
-	uint8_t pfmem08_13;
-	uint8_t pfmem08_14;
-	uint8_t pfmem08_15;
-	uint8_t pfmem08_16;
-	uint8_t pfmem08_17;
-	uint8_t pfmem08_18;
-	uint8_t pfmem08_19;
-
-
-	uint16_t pfmem16_0;
-	uint16_t pfmem16_1;
-	uint16_t pfmem16_2;
-	uint16_t pfmem16_3;
-	uint16_t pfmem16_4;
-	uint16_t pfmem16_5;
-	uint16_t pfmem16_6;
-	uint16_t pfmem16_7;
-	uint16_t pfmem16_8;
-	uint16_t pfmem16_9;
-	uint16_t pfmem16_10;
-	uint16_t pfmem16_11;
-	uint16_t pfmem16_12;
-	uint16_t pfmem16_13;
-	uint16_t pfmem16_14;
-	uint16_t pfmem16_15;
-	uint16_t pfmem16_16;
-	uint16_t pfmem16_17;
-	uint16_t pfmem16_18;
-	uint16_t pfmem16_19;
-
-
-	uint32_t pfmem32_0;
-	uint32_t pfmem32_1;
-	uint32_t pfmem32_2;
-	uint32_t pfmem32_3;
-	uint32_t pfmem32_4;
-	uint32_t pfmem32_5;
-	uint32_t pfmem32_6;
-	uint32_t pfmem32_7;
-	uint32_t pfmem32_8;
-	uint32_t pfmem32_9;
-	uint32_t pfmem32_10;
-	uint32_t pfmem32_11;
-	uint32_t pfmem32_12;
-	uint32_t pfmem32_13;
-	uint32_t pfmem32_14;
-	uint32_t pfmem32_15;
-	uint32_t pfmem32_16;
-	uint32_t pfmem32_17;
-	uint32_t pfmem32_18;
-	uint32_t pfmem32_19;
-
-
-	uint64_t pfmem64_0;
-	uint64_t pfmem64_1;
-	uint64_t pfmem64_2;
-	uint64_t pfmem64_3;
-	uint64_t pfmem64_4;
-	uint64_t pfmem64_5;
-	uint64_t pfmem64_6;
-	uint64_t pfmem64_7;
-	uint64_t pfmem64_8;
-	uint64_t pfmem64_9;
-	uint64_t pfmem64_10;
-	uint64_t pfmem64_11;
-	uint64_t pfmem64_12;
-	uint64_t pfmem64_13;
-	uint64_t pfmem64_14;
-	uint64_t pfmem64_15;
-	uint64_t pfmem64_16;
-	uint64_t pfmem64_17;
-	uint64_t pfmem64_18;
-	uint64_t pfmem64_19;
-
-
 }vm_cpu_t;
 
 //#define RETURN_PC return PyLong_FromUnsignedLongLong(vmcpu->PC);
diff --git a/miasm2/jitter/arch/JitCore_x86.c b/miasm2/jitter/arch/JitCore_x86.c
index ba80fec1..cd24522d 100644
--- a/miasm2/jitter/arch/JitCore_x86.c
+++ b/miasm2/jitter/arch/JitCore_x86.c
@@ -547,7 +547,6 @@ PyObject* get_gpreg_offset_all(void)
     PyObject *o;
 
     get_reg_off(exception_flags);
-    get_reg_off(exception_flags_new);
 
     get_reg_off(RAX);
     get_reg_off(RBX);
@@ -566,23 +565,6 @@ PyObject* get_gpreg_offset_all(void)
     get_reg_off(R14);
     get_reg_off(R15);
     get_reg_off(RIP);
-    get_reg_off(RAX_new);
-    get_reg_off(RBX_new);
-    get_reg_off(RCX_new);
-    get_reg_off(RDX_new);
-    get_reg_off(RSI_new);
-    get_reg_off(RDI_new);
-    get_reg_off(RSP_new);
-    get_reg_off(RBP_new);
-    get_reg_off(R8_new);
-    get_reg_off(R9_new);
-    get_reg_off(R10_new);
-    get_reg_off(R11_new);
-    get_reg_off(R12_new);
-    get_reg_off(R13_new);
-    get_reg_off(R14_new);
-    get_reg_off(R15_new);
-    get_reg_off(RIP_new);
     get_reg_off(zf);
     get_reg_off(nf);
     get_reg_off(pf);
@@ -590,13 +572,6 @@ PyObject* get_gpreg_offset_all(void)
     get_reg_off(cf);
     get_reg_off(af);
     get_reg_off(df);
-    get_reg_off(zf_new);
-    get_reg_off(nf_new);
-    get_reg_off(pf_new);
-    get_reg_off(of_new);
-    get_reg_off(cf_new);
-    get_reg_off(af_new);
-    get_reg_off(df_new);
     get_reg_off(tf);
     get_reg_off(i_f);
     get_reg_off(iopl_f);
@@ -607,16 +582,6 @@ PyObject* get_gpreg_offset_all(void)
     get_reg_off(vif);
     get_reg_off(vip);
     get_reg_off(i_d);
-    get_reg_off(tf_new);
-    get_reg_off(i_f_new);
-    get_reg_off(iopl_f_new);
-    get_reg_off(nt_new);
-    get_reg_off(rf_new);
-    get_reg_off(vm_new);
-    get_reg_off(ac_new);
-    get_reg_off(vif_new);
-    get_reg_off(vip_new);
-    get_reg_off(i_d_new);
     get_reg_off(my_tick);
     get_reg_off(cond);
 
@@ -628,14 +593,6 @@ PyObject* get_gpreg_offset_all(void)
     get_reg_off(float_st5);
     get_reg_off(float_st6);
     get_reg_off(float_st7);
-    get_reg_off(float_st0_new);
-    get_reg_off(float_st1_new);
-    get_reg_off(float_st2_new);
-    get_reg_off(float_st3_new);
-    get_reg_off(float_st4_new);
-    get_reg_off(float_st5_new);
-    get_reg_off(float_st6_new);
-    get_reg_off(float_st7_new);
 
     get_reg_off(ES);
     get_reg_off(CS);
@@ -643,93 +600,6 @@ PyObject* get_gpreg_offset_all(void)
     get_reg_off(DS);
     get_reg_off(FS);
     get_reg_off(GS);
-    get_reg_off(ES_new);
-    get_reg_off(CS_new);
-    get_reg_off(SS_new);
-    get_reg_off(DS_new);
-    get_reg_off(FS_new);
-    get_reg_off(GS_new);
-
-    get_reg_off(pfmem08_0);
-    get_reg_off(pfmem08_1);
-    get_reg_off(pfmem08_2);
-    get_reg_off(pfmem08_3);
-    get_reg_off(pfmem08_4);
-    get_reg_off(pfmem08_5);
-    get_reg_off(pfmem08_6);
-    get_reg_off(pfmem08_7);
-    get_reg_off(pfmem08_8);
-    get_reg_off(pfmem08_9);
-    get_reg_off(pfmem08_10);
-    get_reg_off(pfmem08_11);
-    get_reg_off(pfmem08_12);
-    get_reg_off(pfmem08_13);
-    get_reg_off(pfmem08_14);
-    get_reg_off(pfmem08_15);
-    get_reg_off(pfmem08_16);
-    get_reg_off(pfmem08_17);
-    get_reg_off(pfmem08_18);
-    get_reg_off(pfmem08_19);
-    get_reg_off(pfmem16_0);
-    get_reg_off(pfmem16_1);
-    get_reg_off(pfmem16_2);
-    get_reg_off(pfmem16_3);
-    get_reg_off(pfmem16_4);
-    get_reg_off(pfmem16_5);
-    get_reg_off(pfmem16_6);
-    get_reg_off(pfmem16_7);
-    get_reg_off(pfmem16_8);
-    get_reg_off(pfmem16_9);
-    get_reg_off(pfmem16_10);
-    get_reg_off(pfmem16_11);
-    get_reg_off(pfmem16_12);
-    get_reg_off(pfmem16_13);
-    get_reg_off(pfmem16_14);
-    get_reg_off(pfmem16_15);
-    get_reg_off(pfmem16_16);
-    get_reg_off(pfmem16_17);
-    get_reg_off(pfmem16_18);
-    get_reg_off(pfmem16_19);
-    get_reg_off(pfmem32_0);
-    get_reg_off(pfmem32_1);
-    get_reg_off(pfmem32_2);
-    get_reg_off(pfmem32_3);
-    get_reg_off(pfmem32_4);
-    get_reg_off(pfmem32_5);
-    get_reg_off(pfmem32_6);
-    get_reg_off(pfmem32_7);
-    get_reg_off(pfmem32_8);
-    get_reg_off(pfmem32_9);
-    get_reg_off(pfmem32_10);
-    get_reg_off(pfmem32_11);
-    get_reg_off(pfmem32_12);
-    get_reg_off(pfmem32_13);
-    get_reg_off(pfmem32_14);
-    get_reg_off(pfmem32_15);
-    get_reg_off(pfmem32_16);
-    get_reg_off(pfmem32_17);
-    get_reg_off(pfmem32_18);
-    get_reg_off(pfmem32_19);
-    get_reg_off(pfmem64_0);
-    get_reg_off(pfmem64_1);
-    get_reg_off(pfmem64_2);
-    get_reg_off(pfmem64_3);
-    get_reg_off(pfmem64_4);
-    get_reg_off(pfmem64_5);
-    get_reg_off(pfmem64_6);
-    get_reg_off(pfmem64_7);
-    get_reg_off(pfmem64_8);
-    get_reg_off(pfmem64_9);
-    get_reg_off(pfmem64_10);
-    get_reg_off(pfmem64_11);
-    get_reg_off(pfmem64_12);
-    get_reg_off(pfmem64_13);
-    get_reg_off(pfmem64_14);
-    get_reg_off(pfmem64_15);
-    get_reg_off(pfmem64_16);
-    get_reg_off(pfmem64_17);
-    get_reg_off(pfmem64_18);
-    get_reg_off(pfmem64_19);
 
     get_reg_off(MM0);
     get_reg_off(MM1);
@@ -739,19 +609,9 @@ PyObject* get_gpreg_offset_all(void)
     get_reg_off(MM5);
     get_reg_off(MM6);
     get_reg_off(MM7);
-    get_reg_off(MM0_new);
-    get_reg_off(MM1_new);
-    get_reg_off(MM2_new);
-    get_reg_off(MM3_new);
-    get_reg_off(MM4_new);
-    get_reg_off(MM5_new);
-    get_reg_off(MM6_new);
-    get_reg_off(MM7_new);
 
     get_reg_off(tsc1);
     get_reg_off(tsc2);
-    get_reg_off(tsc1_new);
-    get_reg_off(tsc2_new);
 
     return dict;
 }
diff --git a/miasm2/jitter/arch/JitCore_x86.h b/miasm2/jitter/arch/JitCore_x86.h
index 1e58d536..d4282640 100644
--- a/miasm2/jitter/arch/JitCore_x86.h
+++ b/miasm2/jitter/arch/JitCore_x86.h
@@ -1,9 +1,7 @@
 
 typedef struct {
 	uint32_t exception_flags;
-	uint32_t exception_flags_new;
 	uint32_t interrupt_num;
-	uint32_t interrupt_num_new;
 
 
 	/* gpregs */
@@ -26,25 +24,6 @@ typedef struct {
 
 	uint64_t RIP;
 
-	uint64_t RAX_new;
-	uint64_t RBX_new;
-	uint64_t RCX_new;
-	uint64_t RDX_new;
-	uint64_t RSI_new;
-	uint64_t RDI_new;
-	uint64_t RSP_new;
-	uint64_t RBP_new;
-	uint64_t R8_new;
-	uint64_t R9_new;
-	uint64_t R10_new;
-	uint64_t R11_new;
-	uint64_t R12_new;
-	uint64_t R13_new;
-	uint64_t R14_new;
-	uint64_t R15_new;
-
-	uint64_t RIP_new;
-
 	/* eflag */
 	uint64_t zf;
 	uint64_t nf;
@@ -54,14 +33,6 @@ typedef struct {
 	uint64_t af;
 	uint64_t df;
 
-	uint64_t zf_new;
-	uint64_t nf_new;
-	uint64_t pf_new;
-	uint64_t of_new;
-	uint64_t cf_new;
-	uint64_t af_new;
-	uint64_t df_new;
-
 	uint64_t tf;
 	uint64_t i_f;
 	uint64_t iopl_f;
@@ -73,17 +44,6 @@ typedef struct {
 	uint64_t vip;
 	uint64_t i_d;
 
-	uint64_t tf_new;
-	uint64_t i_f_new;
-	uint64_t iopl_f_new;
-	uint64_t nt_new;
-	uint64_t rf_new;
-	uint64_t vm_new;
-	uint64_t ac_new;
-	uint64_t vif_new;
-	uint64_t vip_new;
-	uint64_t i_d_new;
-
 	uint64_t my_tick;
 
 	uint64_t cond;
@@ -97,47 +57,25 @@ typedef struct {
 	double float_st6;
 	double float_st7;
 
-	double float_st0_new;
-	double float_st1_new;
-	double float_st2_new;
-	double float_st3_new;
-	double float_st4_new;
-	double float_st5_new;
-	double float_st6_new;
-	double float_st7_new;
-
 	unsigned int float_c0;
 	unsigned int float_c1;
 	unsigned int float_c2;
 	unsigned int float_c3;
 
-	unsigned int float_c0_new;
-	unsigned int float_c1_new;
-	unsigned int float_c2_new;
-	unsigned int float_c3_new;
 
 	unsigned int float_stack_ptr;
-	unsigned int float_stack_ptr_new;
 
 	unsigned int reg_float_control;
-	unsigned int reg_float_control_new;
 
 	unsigned int reg_float_eip;
-	unsigned int reg_float_eip_new;
 	unsigned int reg_float_cs;
-	unsigned int reg_float_cs_new;
 	unsigned int reg_float_address;
-	unsigned int reg_float_address_new;
 	unsigned int reg_float_ds;
-	unsigned int reg_float_ds_new;
 
 
 	uint64_t tsc1;
 	uint64_t tsc2;
 
-	uint64_t tsc1_new;
-	uint64_t tsc2_new;
-
 
 	uint64_t ES;
 	uint64_t CS;
@@ -146,108 +84,8 @@ typedef struct {
 	uint64_t FS;
 	uint64_t GS;
 
-	uint64_t ES_new;
-	uint64_t CS_new;
-	uint64_t SS_new;
-	uint64_t DS_new;
-	uint64_t FS_new;
-	uint64_t GS_new;
-
 	unsigned int cr0;
-	unsigned int cr0_new;
-
 	unsigned int cr3;
-	unsigned int cr3_new;
-
-
-
-	uint8_t pfmem08_0;
-	uint8_t pfmem08_1;
-	uint8_t pfmem08_2;
-	uint8_t pfmem08_3;
-	uint8_t pfmem08_4;
-	uint8_t pfmem08_5;
-	uint8_t pfmem08_6;
-	uint8_t pfmem08_7;
-	uint8_t pfmem08_8;
-	uint8_t pfmem08_9;
-	uint8_t pfmem08_10;
-	uint8_t pfmem08_11;
-	uint8_t pfmem08_12;
-	uint8_t pfmem08_13;
-	uint8_t pfmem08_14;
-	uint8_t pfmem08_15;
-	uint8_t pfmem08_16;
-	uint8_t pfmem08_17;
-	uint8_t pfmem08_18;
-	uint8_t pfmem08_19;
-
-
-	uint16_t pfmem16_0;
-	uint16_t pfmem16_1;
-	uint16_t pfmem16_2;
-	uint16_t pfmem16_3;
-	uint16_t pfmem16_4;
-	uint16_t pfmem16_5;
-	uint16_t pfmem16_6;
-	uint16_t pfmem16_7;
-	uint16_t pfmem16_8;
-	uint16_t pfmem16_9;
-	uint16_t pfmem16_10;
-	uint16_t pfmem16_11;
-	uint16_t pfmem16_12;
-	uint16_t pfmem16_13;
-	uint16_t pfmem16_14;
-	uint16_t pfmem16_15;
-	uint16_t pfmem16_16;
-	uint16_t pfmem16_17;
-	uint16_t pfmem16_18;
-	uint16_t pfmem16_19;
-
-
-	uint32_t pfmem32_0;
-	uint32_t pfmem32_1;
-	uint32_t pfmem32_2;
-	uint32_t pfmem32_3;
-	uint32_t pfmem32_4;
-	uint32_t pfmem32_5;
-	uint32_t pfmem32_6;
-	uint32_t pfmem32_7;
-	uint32_t pfmem32_8;
-	uint32_t pfmem32_9;
-	uint32_t pfmem32_10;
-	uint32_t pfmem32_11;
-	uint32_t pfmem32_12;
-	uint32_t pfmem32_13;
-	uint32_t pfmem32_14;
-	uint32_t pfmem32_15;
-	uint32_t pfmem32_16;
-	uint32_t pfmem32_17;
-	uint32_t pfmem32_18;
-	uint32_t pfmem32_19;
-
-
-	uint64_t pfmem64_0;
-	uint64_t pfmem64_1;
-	uint64_t pfmem64_2;
-	uint64_t pfmem64_3;
-	uint64_t pfmem64_4;
-	uint64_t pfmem64_5;
-	uint64_t pfmem64_6;
-	uint64_t pfmem64_7;
-	uint64_t pfmem64_8;
-	uint64_t pfmem64_9;
-	uint64_t pfmem64_10;
-	uint64_t pfmem64_11;
-	uint64_t pfmem64_12;
-	uint64_t pfmem64_13;
-	uint64_t pfmem64_14;
-	uint64_t pfmem64_15;
-	uint64_t pfmem64_16;
-	uint64_t pfmem64_17;
-	uint64_t pfmem64_18;
-	uint64_t pfmem64_19;
-
 
 	uint64_t MM0;
 	uint64_t MM1;
@@ -258,15 +96,6 @@ typedef struct {
 	uint64_t MM6;
 	uint64_t MM7;
 
-	uint64_t MM0_new;
-	uint64_t MM1_new;
-	uint64_t MM2_new;
-	uint64_t MM3_new;
-	uint64_t MM4_new;
-	uint64_t MM5_new;
-	uint64_t MM6_new;
-	uint64_t MM7_new;
-
 	uint32_t segm_base[0x10000];
 
 }vm_cpu_t;
diff --git a/miasm2/jitter/codegen.py b/miasm2/jitter/codegen.py
index c1f1e392..7bdbf890 100644
--- a/miasm2/jitter/codegen.py
+++ b/miasm2/jitter/codegen.py
@@ -6,17 +6,6 @@ from miasm2.core.asmbloc import expr_is_label, asm_block_bad, asm_label
 # Miasm to C translator
 translator = Translator.to_language("C")
 
-PREFETCH_ID = []
-PREFETCH_ID_SIZE = {}
-for size in [8, 16, 32, 64]:
-    PREFETCH_ID_SIZE[size] = []
-    for i in xrange(20):
-        name = 'pfmem%.2d_%d' % (size, i)
-        c = m2_expr.ExprId(name, size)
-        # globals()[name] = c
-        PREFETCH_ID.append(c)
-        PREFETCH_ID_SIZE[size].append(c)
-
 SIZE_TO_MASK = {x: 2**x - 1 for x in (1, 2, 3, 7, 8, 16, 32, 64)}
 
 MASK_INT = 0xffffffffffffffff
@@ -127,15 +116,9 @@ class CGen(object):
 
     def init_arch_C(self):
         self.id_to_c_id = {}
-        for reg in self.ir_arch.arch.regs.all_regs_ids + PREFETCH_ID:
+        for reg in self.ir_arch.arch.regs.all_regs_ids:
             self.id_to_c_id[reg] = m2_expr.ExprId('mycpu->%s' % reg, reg.size)
 
-        self.id_to_new_c_id = {}
-
-        for reg in self.ir_arch.arch.regs.all_regs_ids + PREFETCH_ID:
-            self.id_to_new_c_id[reg] = m2_expr.ExprId(
-                'mycpu->%s_new' % reg, reg.size)
-
         self.C_PC = self.id_to_c(self.PC)
 
     def dst_to_c(self, src):
@@ -146,15 +129,9 @@ class CGen(object):
     def patch_c_id(self, expr):
         return expr.replace_expr(self.id_to_c_id)
 
-    def patch_c_new_id(self, expr):
-        return expr.replace_expr(self.id_to_new_c_id)
-
     def id_to_c(self, expr):
         return translator.from_expr(self.patch_c_id(expr))
 
-    def id_to_cnew(self, expr):
-        return translator.from_expr(self.patch_c_new_id(expr))
-
     def get_post_instr_label(self, offset):
         return self.ir_arch.symbol_pool.getby_name_create("lbl_gen_post_instr_%.8X" % (offset))
 
@@ -197,25 +174,44 @@ class CGen(object):
         assignblk.C_prefetch = out
         return out
 
+    def add_local_var(self, dst_var, dst_index, expr):
+        size = expr.size
+        if size < 8:
+            size = 8
+        if size not in dst_index:
+            raise RuntimeError("Unsupported operand size %s", size)
+        var_num = dst_index[size]
+        dst = m2_expr.ExprId("var_%.2d_%.2d" % (size, var_num), size)
+        dst_index[size] += 1
+        dst_var[expr] = dst
+        return dst
+
     def gen_assignments(self, assignblk, prefetchers):
+        out_var = []
         out_main = []
         out_mem = []
         out_updt = []
-        id_to_update = set()
+
+        dst_index = {8: 0, 16: 0, 32: 0, 64: 0}
+        dst_var = {}
+
+        for var in prefetchers.itervalues():
+            out_var.append("uint%d_t %s;" % (var.size, var))
 
         for dst, src in sorted(assignblk.iteritems()):
             src = src.replace_expr(prefetchers)
             if dst is self.ir_arch.IRDst:
                 pass
             elif isinstance(dst, m2_expr.ExprId):
-                id_to_update.add(dst)
-                str_dst = self.id_to_cnew(dst)
+                new_dst = self.add_local_var(dst_var, dst_index, dst)
                 if dst in self.ir_arch.arch.regs.regs_flt_expr:
                     # Dont mask float affectation
-                    out_main.append('%s = (%s);' % (str_dst, self.id_to_c(src)))
+                    out_main.append(
+                        '%s = (%s);' % (self.id_to_c(new_dst), self.id_to_c(src)))
                 else:
                     out_main.append(
-                        '%s = (%s)&0x%X;' % (str_dst, self.id_to_c(src),
+                        '%s = (%s)&0x%X;' % (self.id_to_c(new_dst),
+                                             self.id_to_c(src),
                                              SIZE_TO_MASK[src.size]))
             elif isinstance(dst, m2_expr.ExprMem):
                 ptr = dst.arg.replace_expr(prefetchers)
@@ -228,15 +224,19 @@ class CGen(object):
         for dst, new_dst in dst_var.iteritems():
             if dst is self.ir_arch.IRDst:
                 continue
-            out_updt.append('%s = %s;' % (self.id_to_c(expr), self.id_to_cnew(expr)))
+            out_updt.append('%s = %s;' % (self.id_to_c(dst), self.id_to_c(new_dst)))
+            out_var.append("uint%d_t %s;" % (new_dst.size, new_dst))
 
+        assignblk.C_var = out_var
         assignblk.C_main = out_main
         assignblk.C_mem = out_mem
         assignblk.C_updt = out_updt
 
     def gen_c_assignblk(self, assignblk):
         mem_read, mem_write = False, False
-        local_prefetch = {}
+
+        mem_index = {8: 0, 16: 0, 32: 0, 64: 0}
+        mem_var = {}
         prefetch_index = {8: 0, 16: 0, 32: 0, 64: 0}
 
         # Prefetch memory read
@@ -244,9 +244,11 @@ class CGen(object):
             if not isinstance(expr, m2_expr.ExprMem):
                 continue
             mem_read = True
-            index = prefetch_index[expr.size]
-            prefetch_index[expr.size] += 1
-            local_prefetch[expr] = PREFETCH_ID_SIZE[expr.size][index]
+            var_num = mem_index[expr.size]
+            mem_index[expr.size] += 1
+            var = m2_expr.ExprId(
+                "prefetch_%.2d_%.2d" % (expr.size, var_num), expr.size)
+            mem_var[expr] = var
 
         # Check if assignblk can write mem
         mem_write = any(isinstance(expr, m2_expr.ExprMem)
@@ -256,7 +258,7 @@ class CGen(object):
         assignblk.mem_read = mem_read
 
         # Generate memory prefetch
-        return local_prefetch
+        return mem_var
 
     def gen_check_memory_exception(self, address):
         dst = self.dst_to_c(address)
@@ -388,7 +390,9 @@ class CGen(object):
         @c_dst: irdst C code
         """
         out = []
-
+        out.append("{")
+        out.append("// var")
+        out += assignblk.C_var
         out.append("// Prefetch")
         out += assignblk.C_prefetch
         out.append("// Dst")
@@ -423,6 +427,8 @@ class CGen(object):
         if assignblk.set_exception:
             out += self.gen_check_cpu_exception(assignblk.instr_addr)
 
+        out.append("}")
+
         return out
 
     def is_exception_operator(self, operator):