Revision 6e0d8677 target-i386/op.c
b/target-i386/op.c | ||
---|---|---|
263 | 263 |
|
264 | 264 |
#endif |
265 | 265 |
|
266 |
/* string ops helpers */ |
|
267 |
|
|
268 |
void OPPROTO op_addl_ESI_T0(void) |
|
269 |
{ |
|
270 |
ESI = (uint32_t)(ESI + T0); |
|
271 |
} |
|
272 |
|
|
273 |
void OPPROTO op_addw_ESI_T0(void) |
|
274 |
{ |
|
275 |
ESI = (ESI & ~0xffff) | ((ESI + T0) & 0xffff); |
|
276 |
} |
|
277 |
|
|
278 |
void OPPROTO op_addl_EDI_T0(void) |
|
279 |
{ |
|
280 |
EDI = (uint32_t)(EDI + T0); |
|
281 |
} |
|
282 |
|
|
283 |
void OPPROTO op_addw_EDI_T0(void) |
|
284 |
{ |
|
285 |
EDI = (EDI & ~0xffff) | ((EDI + T0) & 0xffff); |
|
286 |
} |
|
287 |
|
|
288 |
void OPPROTO op_decl_ECX(void) |
|
289 |
{ |
|
290 |
ECX = (uint32_t)(ECX - 1); |
|
291 |
} |
|
292 |
|
|
293 |
void OPPROTO op_decw_ECX(void) |
|
294 |
{ |
|
295 |
ECX = (ECX & ~0xffff) | ((ECX - 1) & 0xffff); |
|
296 |
} |
|
297 |
|
|
298 |
#ifdef TARGET_X86_64 |
|
299 |
void OPPROTO op_addq_ESI_T0(void) |
|
300 |
{ |
|
301 |
ESI = (ESI + T0); |
|
302 |
} |
|
303 |
|
|
304 |
void OPPROTO op_addq_EDI_T0(void) |
|
305 |
{ |
|
306 |
EDI = (EDI + T0); |
|
307 |
} |
|
308 |
|
|
309 |
void OPPROTO op_decq_ECX(void) |
|
310 |
{ |
|
311 |
ECX--; |
|
312 |
} |
|
313 |
#endif |
|
314 |
|
|
315 | 266 |
/* bcd */ |
316 | 267 |
|
317 | 268 |
void OPPROTO op_aam(void) |
... | ... | |
460 | 411 |
FORCE_RET(); |
461 | 412 |
} |
462 | 413 |
|
463 |
void OPPROTO op_jz_T0_label(void) |
|
464 |
{ |
|
465 |
if (!T0) |
|
466 |
GOTO_LABEL_PARAM(1); |
|
467 |
FORCE_RET(); |
|
468 |
} |
|
469 |
|
|
470 | 414 |
/* slow set cases (compute x86 flags) */ |
471 | 415 |
void OPPROTO op_seto_T0_cc(void) |
472 | 416 |
{ |
... | ... | |
527 | 471 |
T0 ^= 1; |
528 | 472 |
} |
529 | 473 |
|
530 |
void OPPROTO op_mov_T0_cc(void) |
|
531 |
{ |
|
532 |
T0 = cc_table[CC_OP].compute_all(); |
|
533 |
} |
|
534 |
|
|
535 | 474 |
/* XXX: clear VIF/VIP in all ops ? */ |
536 | 475 |
|
537 | 476 |
void OPPROTO op_movl_eflags_T0(void) |
Also available in: Unified diff