|
|
| version 1.26, 2011/01/15 17:17:23 | version 1.27, 2012/01/08 11:32:16 |
|---|---|
| Line 54 int ctx_index = 0; | Line 54 int ctx_index = 0; |
| int cpu_inst_trace = 0; | int cpu_inst_trace = 0; |
| #endif | #endif |
| #if defined(DEBUG) | |
| int cpu_debug_rep_cont = 0; | |
| CPU_REGS cpu_debug_rep_regs; | |
| #endif | |
| void | void |
| exec_1step(void) | exec_1step(void) |
| Line 84 exec_1step(void) | Line 89 exec_1step(void) |
| buf[0] = '\0'; | buf[0] = '\0'; |
| for (i = 0; i < len; i++) { | for (i = 0; i < len; i++) { |
| snprintf(tmp, sizeof(tmp), "%02x ", d->opcode[i]); | snprintf(tmp, sizeof(tmp), "%02x ", d->opbyte[i]); |
| milstr_ncat(buf, tmp, sizeof(buf)); | milstr_ncat(buf, tmp, sizeof(buf)); |
| } | } |
| for (; i < 8; i++) { | for (; i < 8; i++) { |
| Line 94 exec_1step(void) | Line 99 exec_1step(void) |
| buf[0] = '\0'; | buf[0] = '\0'; |
| for (; i < d->nopbytes; i++) { | for (; i < d->nopbytes; i++) { |
| snprintf(tmp, sizeof(tmp), "%02x ", d->opcode[i]); | snprintf(tmp, sizeof(tmp), "%02x ", d->opbyte[i]); |
| milstr_ncat(buf, tmp, sizeof(buf)); | milstr_ncat(buf, tmp, sizeof(buf)); |
| if ((i % 8) == 7) { | if ((i % 8) == 7) { |
| VERBOSE((" : %s", buf)); | VERBOSE((" : %s", buf)); |
| Line 154 exec_1step(void) | Line 159 exec_1step(void) |
| /* normal / rep, but not use */ | /* normal / rep, but not use */ |
| if (!(insttable_info[op] & INST_STRING) || !CPU_INST_REPUSE) { | if (!(insttable_info[op] & INST_STRING) || !CPU_INST_REPUSE) { |
| #if defined(DEBUG) | |
| cpu_debug_rep_cont = 0; | |
| #endif | |
| (*insttable_1byte[CPU_INST_OP32][op])(); | (*insttable_1byte[CPU_INST_OP32][op])(); |
| #if defined(IA32_SUPPORT_DEBUG_REGISTER) | #if defined(IA32_SUPPORT_DEBUG_REGISTER) |
| goto check_break_point; | goto check_break_point; |
| Line 164 exec_1step(void) | Line 172 exec_1step(void) |
| /* rep */ | /* rep */ |
| CPU_WORKCLOCK(5); | CPU_WORKCLOCK(5); |
| #if defined(DEBUG) | |
| if (!cpu_debug_rep_cont) { | |
| cpu_debug_rep_cont = 1; | |
| cpu_debug_rep_regs = CPU_STATSAVE.cpu_regs; | |
| } | |
| #endif | |
| if (!CPU_INST_AS32) { | if (!CPU_INST_AS32) { |
| if (CPU_CX != 0) { | if (CPU_CX != 0) { |
| if (!(insttable_info[op] & REP_CHECKZF)) { | if (!(insttable_info[op] & REP_CHECKZF)) { |
| /* rep */ | /* rep */ |
| for (;;) { | for (;;) { |
| (*insttable_1byte[CPU_INST_OP32][op])(); | (*insttable_1byte[CPU_INST_OP32][op])(); |
| if (--CPU_CX == 0) | if (--CPU_CX == 0) { |
| #if defined(DEBUG) | |
| cpu_debug_rep_cont = 0; | |
| #endif | |
| break; | break; |
| } | |
| if (CPU_REMCLOCK <= 0) { | if (CPU_REMCLOCK <= 0) { |
| CPU_EIP = CPU_PREV_EIP; | CPU_EIP = CPU_PREV_EIP; |
| break; | break; |
| Line 181 exec_1step(void) | Line 199 exec_1step(void) |
| /* repe */ | /* repe */ |
| for (;;) { | for (;;) { |
| (*insttable_1byte[CPU_INST_OP32][op])(); | (*insttable_1byte[CPU_INST_OP32][op])(); |
| if (--CPU_CX == 0 || CC_NZ) | if (--CPU_CX == 0 || CC_NZ) { |
| #if defined(DEBUG) | |
| cpu_debug_rep_cont = 0; | |
| #endif | |
| break; | break; |
| } | |
| if (CPU_REMCLOCK <= 0) { | if (CPU_REMCLOCK <= 0) { |
| CPU_EIP = CPU_PREV_EIP; | CPU_EIP = CPU_PREV_EIP; |
| break; | break; |
| Line 192 exec_1step(void) | Line 214 exec_1step(void) |
| /* repne */ | /* repne */ |
| for (;;) { | for (;;) { |
| (*insttable_1byte[CPU_INST_OP32][op])(); | (*insttable_1byte[CPU_INST_OP32][op])(); |
| if (--CPU_CX == 0 || CC_Z) | if (--CPU_CX == 0 || CC_Z) { |
| #if defined(DEBUG) | |
| cpu_debug_rep_cont = 0; | |
| #endif | |
| break; | break; |
| } | |
| if (CPU_REMCLOCK <= 0) { | if (CPU_REMCLOCK <= 0) { |
| CPU_EIP = CPU_PREV_EIP; | CPU_EIP = CPU_PREV_EIP; |
| break; | break; |
| Line 207 exec_1step(void) | Line 233 exec_1step(void) |
| /* rep */ | /* rep */ |
| for (;;) { | for (;;) { |
| (*insttable_1byte[CPU_INST_OP32][op])(); | (*insttable_1byte[CPU_INST_OP32][op])(); |
| if (--CPU_ECX == 0) | if (--CPU_ECX == 0) { |
| #if defined(DEBUG) | |
| cpu_debug_rep_cont = 0; | |
| #endif | |
| break; | break; |
| } | |
| if (CPU_REMCLOCK <= 0) { | if (CPU_REMCLOCK <= 0) { |
| CPU_EIP = CPU_PREV_EIP; | CPU_EIP = CPU_PREV_EIP; |
| break; | break; |
| Line 218 exec_1step(void) | Line 248 exec_1step(void) |
| /* repe */ | /* repe */ |
| for (;;) { | for (;;) { |
| (*insttable_1byte[CPU_INST_OP32][op])(); | (*insttable_1byte[CPU_INST_OP32][op])(); |
| if (--CPU_ECX == 0 || CC_NZ) | if (--CPU_ECX == 0 || CC_NZ) { |
| #if defined(DEBUG) | |
| cpu_debug_rep_cont = 0; | |
| #endif | |
| break; | break; |
| } | |
| if (CPU_REMCLOCK <= 0) { | if (CPU_REMCLOCK <= 0) { |
| CPU_EIP = CPU_PREV_EIP; | CPU_EIP = CPU_PREV_EIP; |
| break; | break; |
| Line 229 exec_1step(void) | Line 263 exec_1step(void) |
| /* repne */ | /* repne */ |
| for (;;) { | for (;;) { |
| (*insttable_1byte[CPU_INST_OP32][op])(); | (*insttable_1byte[CPU_INST_OP32][op])(); |
| if (--CPU_ECX == 0 || CC_Z) | if (--CPU_ECX == 0 || CC_Z) { |
| #if defined(DEBUG) | |
| cpu_debug_rep_cont = 0; | |
| #endif | |
| break; | break; |
| } | |
| if (CPU_REMCLOCK <= 0) { | if (CPU_REMCLOCK <= 0) { |
| CPU_EIP = CPU_PREV_EIP; | CPU_EIP = CPU_PREV_EIP; |
| break; | break; |