|
|
| version 1.16, 2004/03/08 12:56:22 | version 1.21, 2005/02/04 05:32:24 |
|---|---|
| Line 100 exec_1step(void) | Line 100 exec_1step(void) |
| CPU_STATSAVE.cpu_inst = CPU_STATSAVE.cpu_inst_default; | CPU_STATSAVE.cpu_inst = CPU_STATSAVE.cpu_inst_default; |
| #if defined(TRACE) && IPTRACE | #if defined(TRACE) && IPTRACE |
| if (CPU_CS == 0x000c) { | |
| trcs[trpos & (IPTRACE - 1)] = CPU_CS; | trcs[trpos & (IPTRACE - 1)] = CPU_CS; |
| treip[trpos & (IPTRACE - 1)] = CPU_EIP; | treip[trpos & (IPTRACE - 1)] = CPU_EIP; |
| trpos++; | trpos++; |
| } | |
| #endif | #endif |
| #if defined(IA32_INSTRUCTION_TRACE) | #if defined(IA32_INSTRUCTION_TRACE) |
| Line 205 exec_1step(void) | Line 207 exec_1step(void) |
| if (CPU_CX != 0) { | if (CPU_CX != 0) { |
| if (!(insttable_info[op] & REP_CHECKZF)) { | if (!(insttable_info[op] & REP_CHECKZF)) { |
| /* rep */ | /* rep */ |
| do { | for (;;) { |
| (*insttable_1byte[CPU_INST_OP32][op])(); | (*insttable_1byte[CPU_INST_OP32][op])(); |
| } while (--CPU_CX); | if (--CPU_CX == 0) |
| break; | |
| if (CPU_REMCLOCK <= 0) { | |
| CPU_EIP = CPU_PREV_EIP; | |
| break; | |
| } | |
| } | |
| } else if (CPU_INST_REPUSE != 0xf2) { | } else if (CPU_INST_REPUSE != 0xf2) { |
| /* repe */ | /* repe */ |
| do { | for (;;) { |
| (*insttable_1byte[CPU_INST_OP32][op])(); | (*insttable_1byte[CPU_INST_OP32][op])(); |
| } while (--CPU_CX && (CPU_FLAGL & Z_FLAG)); | if (--CPU_CX == 0 || CC_NZ) |
| break; | |
| if (CPU_REMCLOCK <= 0) { | |
| CPU_EIP = CPU_PREV_EIP; | |
| break; | |
| } | |
| } | |
| } else { | } else { |
| /* repne */ | /* repne */ |
| do { | for (;;) { |
| (*insttable_1byte[CPU_INST_OP32][op])(); | (*insttable_1byte[CPU_INST_OP32][op])(); |
| } while (--CPU_CX && !(CPU_FLAGL & Z_FLAG)); | if (--CPU_CX == 0 || CC_Z) |
| break; | |
| if (CPU_REMCLOCK <= 0) { | |
| CPU_EIP = CPU_PREV_EIP; | |
| break; | |
| } | |
| } | |
| } | } |
| } | } |
| } else { | } else { |
| if (CPU_ECX != 0) { | if (CPU_ECX != 0) { |
| if (!(insttable_info[op] & REP_CHECKZF)) { | if (!(insttable_info[op] & REP_CHECKZF)) { |
| /* rep */ | /* rep */ |
| do { | for (;;) { |
| (*insttable_1byte[CPU_INST_OP32][op])(); | (*insttable_1byte[CPU_INST_OP32][op])(); |
| } while (--CPU_ECX); | if (--CPU_ECX == 0) |
| break; | |
| if (CPU_REMCLOCK <= 0) { | |
| CPU_EIP = CPU_PREV_EIP; | |
| break; | |
| } | |
| } | |
| } else if (CPU_INST_REPUSE != 0xf2) { | } else if (CPU_INST_REPUSE != 0xf2) { |
| /* repe */ | /* repe */ |
| do { | for (;;) { |
| (*insttable_1byte[CPU_INST_OP32][op])(); | (*insttable_1byte[CPU_INST_OP32][op])(); |
| } while (--CPU_ECX && (CPU_FLAGL & Z_FLAG)); | if (--CPU_ECX == 0 || CC_NZ) |
| break; | |
| if (CPU_REMCLOCK <= 0) { | |
| CPU_EIP = CPU_PREV_EIP; | |
| break; | |
| } | |
| } | |
| } else { | } else { |
| /* repne */ | /* repne */ |
| do { | for (;;) { |
| (*insttable_1byte[CPU_INST_OP32][op])(); | (*insttable_1byte[CPU_INST_OP32][op])(); |
| } while (--CPU_ECX && !(CPU_FLAGL & Z_FLAG)); | if (--CPU_ECX == 0 || CC_Z) |
| break; | |
| if (CPU_REMCLOCK <= 0) { | |
| CPU_EIP = CPU_PREV_EIP; | |
| break; | |
| } | |
| } | |
| } | } |
| } | } |
| } | } |