Miasm2
 All Classes Namespaces Files Functions Variables Typedefs Properties Macros
JitCore_x86.h
Go to the documentation of this file.
1 
2 typedef struct {
3  uint32_t exception_flags;
4  uint32_t exception_flags_new;
5 
6 
7  /* gpregs */
8  uint64_t RAX;
9  uint64_t RBX;
10  uint64_t RCX;
11  uint64_t RDX;
12  uint64_t RSI;
13  uint64_t RDI;
14  uint64_t RSP;
15  uint64_t RBP;
16  uint64_t R8;
17  uint64_t R9;
18  uint64_t R10;
19  uint64_t R11;
20  uint64_t R12;
21  uint64_t R13;
22  uint64_t R14;
23  uint64_t R15;
24 
25  uint64_t RIP;
26 
27  uint64_t RAX_new;
28  uint64_t RBX_new;
29  uint64_t RCX_new;
30  uint64_t RDX_new;
31  uint64_t RSI_new;
32  uint64_t RDI_new;
33  uint64_t RSP_new;
34  uint64_t RBP_new;
35  uint64_t R8_new;
36  uint64_t R9_new;
37  uint64_t R10_new;
38  uint64_t R11_new;
39  uint64_t R12_new;
40  uint64_t R13_new;
41  uint64_t R14_new;
42  uint64_t R15_new;
43 
44  uint64_t RIP_new;
45 
46  /* eflag */
47  uint64_t zf;
48  uint64_t nf;
49  uint64_t pf;
50  uint64_t of;
51  uint64_t cf;
52  uint64_t af;
53  uint64_t df;
54 
55  uint64_t zf_new;
56  uint64_t nf_new;
57  uint64_t pf_new;
58  uint64_t of_new;
59  uint64_t cf_new;
60  uint64_t af_new;
61  uint64_t df_new;
62 
63  uint64_t tf;
64  uint64_t i_f;
65  uint64_t iopl_f;
66  uint64_t nt;
67  uint64_t rf;
68  uint64_t vm;
69  uint64_t ac;
70  uint64_t vif;
71  uint64_t vip;
72  uint64_t i_d;
73 
74  uint64_t tf_new;
75  uint64_t i_f_new;
76  uint64_t iopl_f_new;
77  uint64_t nt_new;
78  uint64_t rf_new;
79  uint64_t vm_new;
80  uint64_t ac_new;
81  uint64_t vif_new;
82  uint64_t vip_new;
83  uint64_t i_d_new;
84 
85  uint64_t my_tick;
86 
87  uint64_t cond;
88 
89  double float_st0;
90  double float_st1;
91  double float_st2;
92  double float_st3;
93  double float_st4;
94  double float_st5;
95  double float_st6;
96  double float_st7;
97 
98  double float_st0_new;
99  double float_st1_new;
106 
107  unsigned int float_c0;
108  unsigned int float_c1;
109  unsigned int float_c2;
110  unsigned int float_c3;
111 
112  unsigned int float_c0_new;
113  unsigned int float_c1_new;
114  unsigned int float_c2_new;
115  unsigned int float_c3_new;
116 
117  unsigned int float_stack_ptr;
118  unsigned int float_stack_ptr_new;
119 
120  unsigned int reg_float_control;
121  unsigned int reg_float_control_new;
122 
123  unsigned int reg_float_eip;
124  unsigned int reg_float_eip_new;
125  unsigned int reg_float_cs;
126  unsigned int reg_float_cs_new;
127  unsigned int reg_float_address;
128  unsigned int reg_float_address_new;
129  unsigned int reg_float_ds;
130  unsigned int reg_float_ds_new;
131 
132 
133  unsigned int tsc1;
134  unsigned int tsc2;
135 
136  unsigned int tsc1_new;
137  unsigned int tsc2_new;
138 
139 
140  uint64_t ES;
141  uint64_t CS;
142  uint64_t SS;
143  uint64_t DS;
144  uint64_t FS;
145  uint64_t GS;
146 
147  uint64_t ES_new;
148  uint64_t CS_new;
149  uint64_t SS_new;
150  uint64_t DS_new;
151  uint64_t FS_new;
152  uint64_t GS_new;
153 
154  unsigned int cr0;
155  unsigned int cr0_new;
156 
157  unsigned int cr3;
158  unsigned int cr3_new;
159 
160 
161 
162  uint8_t pfmem08_0;
163  uint8_t pfmem08_1;
164  uint8_t pfmem08_2;
165  uint8_t pfmem08_3;
166  uint8_t pfmem08_4;
167  uint8_t pfmem08_5;
168  uint8_t pfmem08_6;
169  uint8_t pfmem08_7;
170  uint8_t pfmem08_8;
171  uint8_t pfmem08_9;
172  uint8_t pfmem08_10;
173  uint8_t pfmem08_11;
174  uint8_t pfmem08_12;
175  uint8_t pfmem08_13;
176  uint8_t pfmem08_14;
177  uint8_t pfmem08_15;
178  uint8_t pfmem08_16;
179  uint8_t pfmem08_17;
180  uint8_t pfmem08_18;
181  uint8_t pfmem08_19;
182 
183 
184  uint16_t pfmem16_0;
185  uint16_t pfmem16_1;
186  uint16_t pfmem16_2;
187  uint16_t pfmem16_3;
188  uint16_t pfmem16_4;
189  uint16_t pfmem16_5;
190  uint16_t pfmem16_6;
191  uint16_t pfmem16_7;
192  uint16_t pfmem16_8;
193  uint16_t pfmem16_9;
194  uint16_t pfmem16_10;
195  uint16_t pfmem16_11;
196  uint16_t pfmem16_12;
197  uint16_t pfmem16_13;
198  uint16_t pfmem16_14;
199  uint16_t pfmem16_15;
200  uint16_t pfmem16_16;
201  uint16_t pfmem16_17;
202  uint16_t pfmem16_18;
203  uint16_t pfmem16_19;
204 
205 
206  uint32_t pfmem32_0;
207  uint32_t pfmem32_1;
208  uint32_t pfmem32_2;
209  uint32_t pfmem32_3;
210  uint32_t pfmem32_4;
211  uint32_t pfmem32_5;
212  uint32_t pfmem32_6;
213  uint32_t pfmem32_7;
214  uint32_t pfmem32_8;
215  uint32_t pfmem32_9;
216  uint32_t pfmem32_10;
217  uint32_t pfmem32_11;
218  uint32_t pfmem32_12;
219  uint32_t pfmem32_13;
220  uint32_t pfmem32_14;
221  uint32_t pfmem32_15;
222  uint32_t pfmem32_16;
223  uint32_t pfmem32_17;
224  uint32_t pfmem32_18;
225  uint32_t pfmem32_19;
226 
227 
228  uint64_t pfmem64_0;
229  uint64_t pfmem64_1;
230  uint64_t pfmem64_2;
231  uint64_t pfmem64_3;
232  uint64_t pfmem64_4;
233  uint64_t pfmem64_5;
234  uint64_t pfmem64_6;
235  uint64_t pfmem64_7;
236  uint64_t pfmem64_8;
237  uint64_t pfmem64_9;
238  uint64_t pfmem64_10;
239  uint64_t pfmem64_11;
240  uint64_t pfmem64_12;
241  uint64_t pfmem64_13;
242  uint64_t pfmem64_14;
243  uint64_t pfmem64_15;
244  uint64_t pfmem64_16;
245  uint64_t pfmem64_17;
246  uint64_t pfmem64_18;
247  uint64_t pfmem64_19;
248 
249 
250  uint64_t MM0;
251  uint64_t MM1;
252  uint64_t MM2;
253  uint64_t MM3;
254  uint64_t MM4;
255  uint64_t MM5;
256  uint64_t MM6;
257  uint64_t MM7;
258 
259  uint64_t MM0_new;
260  uint64_t MM1_new;
261  uint64_t MM2_new;
262  uint64_t MM3_new;
263  uint64_t MM4_new;
264  uint64_t MM5_new;
265  uint64_t MM6_new;
266  uint64_t MM7_new;
267 
268  uint32_t segm_base[0x10000];
269 
270 }vm_cpu_t;
271 
272 
273 
274 
275 void dump_gpregs(vm_cpu_t* vmcpu);
276 uint64_t segm2addr(JitCpu* jitcpu, uint64_t segm, uint64_t addr);
277 
278 
279 uint64_t udiv64(vm_cpu_t* vmcpu, uint64_t a, uint64_t b);
280 uint64_t umod64(vm_cpu_t* vmcpu, uint64_t a, uint64_t b);
281 int64_t idiv64(vm_cpu_t* vmcpu, int64_t a, int64_t b);
282 int64_t imod64(vm_cpu_t* vmcpu, int64_t a, int64_t b);
283 
284 uint32_t udiv32(vm_cpu_t* vmcpu, uint32_t a, uint32_t b);
285 uint32_t umod32(vm_cpu_t* vmcpu, uint32_t a, uint32_t b);
286 int32_t idiv32(vm_cpu_t* vmcpu, int32_t a, int32_t b);
287 int32_t imod32(vm_cpu_t* vmcpu, int32_t a, int32_t b);
288 
289 uint16_t udiv16(vm_cpu_t* vmcpu, uint16_t a, uint16_t b);
290 uint16_t umod16(vm_cpu_t* vmcpu, uint16_t a, uint16_t b);
291 int16_t idiv16(vm_cpu_t* vmcpu, int16_t a, int16_t b);
292 int16_t imod16(vm_cpu_t* vmcpu, int16_t a, int16_t b);
293 
294 //#define RETURN_PC return PyLong_FromUnsignedLongLong(vmcpu->RIP);
295 #define RETURN_PC return BlockDst;
uint64_t iopl_f
Definition: JitCore_x86.h:65
unsigned int reg_float_cs
Definition: JitCore_x86.h:125
unsigned int tsc2_new
Definition: JitCore_x86.h:137
uint64_t DS
Definition: JitCore_x86.h:143
uint64_t RBP_new
Definition: JitCore_x86.h:34
uint64_t udiv64(vm_cpu_t *vmcpu, uint64_t a, uint64_t b)
unsigned int reg_float_address_new
Definition: JitCore_x86.h:128
uint64_t nt_new
Definition: JitCore_x86.h:77
uint64_t MM4_new
Definition: JitCore_x86.h:263
uint64_t CS_new
Definition: JitCore_x86.h:148
double float_st6
Definition: JitCore_x86.h:95
uint64_t RSI
Definition: JitCore_x86.h:12
uint64_t RCX_new
Definition: JitCore_x86.h:29
uint64_t RAX
Definition: JitCore_x86.h:8
uint64_t vif_new
Definition: JitCore_x86.h:81
double float_st7_new
Definition: JitCore_x86.h:105
uint64_t RAX_new
Definition: JitCore_x86.h:27
unsigned int cr3
Definition: JitCore_x86.h:157
uint64_t R15_new
Definition: JitCore_x86.h:42
uint64_t RDI_new
Definition: JitCore_x86.h:32
unsigned int float_c3_new
Definition: JitCore_x86.h:115
uint64_t GS_new
Definition: JitCore_x86.h:152
uint64_t pf
Definition: JitCore_x86.h:49
uint64_t R10_new
Definition: JitCore_x86.h:37
uint64_t RBX_new
Definition: JitCore_x86.h:28
uint64_t MM1
Definition: JitCore_x86.h:251
uint64_t i_f_new
Definition: JitCore_x86.h:75
uint64_t cond
Definition: JitCore_x86.h:87
uint64_t R13
Definition: JitCore_x86.h:21
uint64_t R11
Definition: JitCore_x86.h:19
uint64_t MM0
Definition: JitCore_x86.h:250
uint64_t RSP
Definition: JitCore_x86.h:14
uint64_t iopl_f_new
Definition: JitCore_x86.h:76
int32_t imod32(vm_cpu_t *vmcpu, int32_t a, int32_t b)
unsigned int float_c2
Definition: JitCore_x86.h:109
uint64_t nf_new
Definition: JitCore_x86.h:56
double float_st2
Definition: JitCore_x86.h:91
uint64_t MM3
Definition: JitCore_x86.h:253
uint64_t R13_new
Definition: JitCore_x86.h:40
uint64_t R8
Definition: JitCore_x86.h:16
uint64_t rf_new
Definition: JitCore_x86.h:78
uint64_t zf
Definition: JitCore_x86.h:47
uint64_t vip_new
Definition: JitCore_x86.h:82
uint64_t MM3_new
Definition: JitCore_x86.h:262
uint64_t RCX
Definition: JitCore_x86.h:10
double float_st4
Definition: JitCore_x86.h:93
uint64_t R12
Definition: JitCore_x86.h:20
unsigned int reg_float_control_new
Definition: JitCore_x86.h:121
uint64_t R14
Definition: JitCore_x86.h:22
uint64_t af
Definition: JitCore_x86.h:52
uint64_t R12_new
Definition: JitCore_x86.h:39
uint64_t MM4
Definition: JitCore_x86.h:254
uint32_t udiv32(vm_cpu_t *vmcpu, uint32_t a, uint32_t b)
double float_st2_new
Definition: JitCore_x86.h:100
uint64_t MM5
Definition: JitCore_x86.h:255
uint64_t segm2addr(JitCpu *jitcpu, uint64_t segm, uint64_t addr)
Definition: JitCore_x86.c:233
double float_st5_new
Definition: JitCore_x86.h:103
double float_st1_new
Definition: JitCore_x86.h:99
double float_st7
Definition: JitCore_x86.h:96
unsigned int reg_float_address
Definition: JitCore_x86.h:127
uint64_t SS_new
Definition: JitCore_x86.h:149
double float_st5
Definition: JitCore_x86.h:94
double float_st0_new
Definition: JitCore_x86.h:98
uint64_t ac_new
Definition: JitCore_x86.h:80
uint16_t umod16(vm_cpu_t *vmcpu, uint16_t a, uint16_t b)
uint64_t vm
Definition: JitCore_x86.h:68
double float_st1
Definition: JitCore_x86.h:90
uint64_t MM7
Definition: JitCore_x86.h:257
uint64_t RDX
Definition: JitCore_x86.h:11
uint64_t RIP
Definition: JitCore_x86.h:25
unsigned int float_c1_new
Definition: JitCore_x86.h:113
unsigned int cr0_new
Definition: JitCore_x86.h:155
double float_st4_new
Definition: JitCore_x86.h:102
double float_st0
Definition: JitCore_x86.h:89
unsigned int reg_float_eip
Definition: JitCore_x86.h:123
double float_st3
Definition: JitCore_x86.h:92
uint64_t R8_new
Definition: JitCore_x86.h:35
uint64_t CS
Definition: JitCore_x86.h:141
uint64_t tf_new
Definition: JitCore_x86.h:74
uint64_t cf
Definition: JitCore_x86.h:51
unsigned int float_stack_ptr_new
Definition: JitCore_x86.h:118
uint64_t ES_new
Definition: JitCore_x86.h:147
uint64_t rf
Definition: JitCore_x86.h:67
uint64_t ES
Definition: JitCore_x86.h:140
uint64_t nf
Definition: JitCore_x86.h:48
uint64_t RDX_new
Definition: JitCore_x86.h:30
uint64_t MM6
Definition: JitCore_x86.h:256
uint64_t MM7_new
Definition: JitCore_x86.h:266
unsigned int float_c3
Definition: JitCore_x86.h:110
uint64_t tf
Definition: JitCore_x86.h:63
uint64_t vm_new
Definition: JitCore_x86.h:79
unsigned int float_c0_new
Definition: JitCore_x86.h:112
unsigned int reg_float_ds
Definition: JitCore_x86.h:129
uint64_t vip
Definition: JitCore_x86.h:71
int16_t imod16(vm_cpu_t *vmcpu, int16_t a, int16_t b)
int64_t imod64(vm_cpu_t *vmcpu, int64_t a, int64_t b)
uint64_t FS
Definition: JitCore_x86.h:144
unsigned int reg_float_control
Definition: JitCore_x86.h:120
uint64_t nt
Definition: JitCore_x86.h:66
uint64_t MM6_new
Definition: JitCore_x86.h:265
unsigned int reg_float_ds_new
Definition: JitCore_x86.h:130
uint64_t of_new
Definition: JitCore_x86.h:58
uint64_t GS
Definition: JitCore_x86.h:145
uint64_t R14_new
Definition: JitCore_x86.h:41
unsigned int tsc1
Definition: JitCore_x86.h:133
unsigned int cr0
Definition: JitCore_x86.h:154
unsigned int float_c2_new
Definition: JitCore_x86.h:114
unsigned int float_stack_ptr
Definition: JitCore_x86.h:117
uint64_t R9
Definition: JitCore_x86.h:17
int64_t idiv64(vm_cpu_t *vmcpu, int64_t a, int64_t b)
unsigned int reg_float_cs_new
Definition: JitCore_x86.h:126
uint16_t udiv16(vm_cpu_t *vmcpu, uint16_t a, uint16_t b)
uint64_t RSP_new
Definition: JitCore_x86.h:33
uint64_t MM0_new
Definition: JitCore_x86.h:259
unsigned int cr3_new
Definition: JitCore_x86.h:158
uint64_t umod64(vm_cpu_t *vmcpu, uint64_t a, uint64_t b)
void dump_gpregs(vm_cpu_t *vmcpu)
uint64_t RIP_new
Definition: JitCore_x86.h:44
uint64_t zf_new
Definition: JitCore_x86.h:55
uint64_t vif
Definition: JitCore_x86.h:70
uint64_t af_new
Definition: JitCore_x86.h:60
int16_t idiv16(vm_cpu_t *vmcpu, int16_t a, int16_t b)
uint64_t DS_new
Definition: JitCore_x86.h:150
unsigned int tsc2
Definition: JitCore_x86.h:134
unsigned int float_c1
Definition: JitCore_x86.h:108
uint64_t R11_new
Definition: JitCore_x86.h:38
uint64_t RSI_new
Definition: JitCore_x86.h:31
uint64_t RDI
Definition: JitCore_x86.h:13
uint64_t pf_new
Definition: JitCore_x86.h:57
int32_t idiv32(vm_cpu_t *vmcpu, int32_t a, int32_t b)
uint64_t R10
Definition: JitCore_x86.h:18
uint64_t df_new
Definition: JitCore_x86.h:61
uint64_t MM5_new
Definition: JitCore_x86.h:264
uint64_t MM2_new
Definition: JitCore_x86.h:261
double float_st3_new
Definition: JitCore_x86.h:101
uint64_t i_d_new
Definition: JitCore_x86.h:83
uint64_t df
Definition: JitCore_x86.h:53
uint64_t R15
Definition: JitCore_x86.h:23
Definition: JitCore.h:93
uint64_t MM2
Definition: JitCore_x86.h:252
unsigned int tsc1_new
Definition: JitCore_x86.h:136
uint64_t MM1_new
Definition: JitCore_x86.h:260
uint64_t of
Definition: JitCore_x86.h:50
uint64_t FS_new
Definition: JitCore_x86.h:151
uint64_t SS
Definition: JitCore_x86.h:142
unsigned int float_c0
Definition: JitCore_x86.h:107
uint64_t cf_new
Definition: JitCore_x86.h:59
uint64_t i_f
Definition: JitCore_x86.h:64
unsigned int reg_float_eip_new
Definition: JitCore_x86.h:124
uint64_t i_d
Definition: JitCore_x86.h:72
uint32_t umod32(vm_cpu_t *vmcpu, uint32_t a, uint32_t b)
uint64_t my_tick
Definition: JitCore_x86.h:85
uint64_t ac
Definition: JitCore_x86.h:69
uint64_t RBX
Definition: JitCore_x86.h:9
uint64_t R9_new
Definition: JitCore_x86.h:36
tuple exception_flags
Definition: regs.py:7
uint64_t RBP
Definition: JitCore_x86.h:15
double float_st6_new
Definition: JitCore_x86.h:104