Revision 686f3f26
b/target-i386/ops_template.h | ||
---|---|---|
513 | 513 |
count++; |
514 | 514 |
res >>= 1; |
515 | 515 |
} |
516 |
T0 = count;
|
|
516 |
T1 = count;
|
|
517 | 517 |
CC_DST = 1; /* ZF = 0 */ |
518 | 518 |
} else { |
519 | 519 |
CC_DST = 0; /* ZF = 1 */ |
... | ... | |
531 | 531 |
count--; |
532 | 532 |
res <<= 1; |
533 | 533 |
} |
534 |
T0 = count;
|
|
534 |
T1 = count;
|
|
535 | 535 |
CC_DST = 1; /* ZF = 0 */ |
536 | 536 |
} else { |
537 | 537 |
CC_DST = 0; /* ZF = 1 */ |
b/target-i386/translate.c | ||
---|---|---|
3708 | 3708 |
modrm = ldub_code(s->pc++); |
3709 | 3709 |
reg = (modrm >> 3) & 7; |
3710 | 3710 |
gen_ldst_modrm(s, modrm, ot, OR_TMP0, 0); |
3711 |
/* NOTE: in order to handle the 0 case, we must load the |
|
3712 |
result. It could be optimized with a generated jump */ |
|
3713 |
gen_op_mov_TN_reg[ot][1][reg](); |
|
3711 | 3714 |
gen_op_bsx_T0_cc[ot - OT_WORD][b & 1](); |
3712 |
/* NOTE: we always write back the result. Intel doc says it is |
|
3713 |
undefined if T0 == 0 */ |
|
3714 |
gen_op_mov_reg_T0[ot][reg](); |
|
3715 |
gen_op_mov_reg_T1[ot][reg](); |
|
3715 | 3716 |
s->cc_op = CC_OP_LOGICB + ot; |
3716 | 3717 |
break; |
3717 | 3718 |
/************************/ |
Also available in: Unified diff