📄 sim-trace.c
字号:
save_data (sd, data, trace_fmt_word, sizeof (d2), &d2); save_data (sd, data, trace_fmt_word, sizeof (d3), &d3);}voidtrace_input_bool1 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, int d0){ TRACE_DATA *data = CPU_TRACE_DATA (cpu); TRACE_IDX (data) = trace_idx; save_data (sd, data, trace_fmt_bool, sizeof (d0), &d0);}voidtrace_input_addr1 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, address_word d0){ TRACE_DATA *data = CPU_TRACE_DATA (cpu); TRACE_IDX (data) = trace_idx; save_data (sd, data, trace_fmt_addr, sizeof (d0), &d0);}voidtrace_input_fp1 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, fp_word f0){ TRACE_DATA *data = CPU_TRACE_DATA (cpu); TRACE_IDX (data) = trace_idx; save_data (sd, data, trace_fmt_fp, sizeof (fp_word), &f0);}voidtrace_input_fp2 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, fp_word f0, fp_word f1){ TRACE_DATA *data = CPU_TRACE_DATA (cpu); TRACE_IDX (data) = trace_idx; save_data (sd, data, trace_fmt_fp, sizeof (fp_word), &f0); save_data (sd, data, trace_fmt_fp, sizeof (fp_word), &f1);}voidtrace_input_fp3 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, fp_word f0, fp_word f1, fp_word f2){ TRACE_DATA *data = CPU_TRACE_DATA (cpu); TRACE_IDX (data) = trace_idx; save_data (sd, data, trace_fmt_fp, sizeof (fp_word), &f0); save_data (sd, data, trace_fmt_fp, sizeof (fp_word), &f1); save_data (sd, data, trace_fmt_fp, sizeof (fp_word), &f2);}voidtrace_input_fpu1 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, sim_fpu *f0){ double d; TRACE_DATA *data = CPU_TRACE_DATA (cpu); TRACE_IDX (data) = trace_idx; d = sim_fpu_2d (f0); save_data (sd, data, trace_fmt_fp, sizeof (double), &d);}voidtrace_input_fpu2 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, sim_fpu *f0, sim_fpu *f1){ double d; TRACE_DATA *data = CPU_TRACE_DATA (cpu); TRACE_IDX (data) = trace_idx; d = sim_fpu_2d (f0); save_data (sd, data, trace_fmt_fp, sizeof (double), &d); d = sim_fpu_2d (f1); save_data (sd, data, trace_fmt_fp, sizeof (double), &d);}voidtrace_input_fpu3 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, sim_fpu *f0, sim_fpu *f1, sim_fpu *f2){ double d; TRACE_DATA *data = CPU_TRACE_DATA (cpu); TRACE_IDX (data) = trace_idx; d = sim_fpu_2d (f0); save_data (sd, data, trace_fmt_fp, sizeof (double), &d); d = sim_fpu_2d (f1); save_data (sd, data, trace_fmt_fp, sizeof (double), &d); d = sim_fpu_2d (f2); save_data (sd, data, trace_fmt_fp, sizeof (double), &d);}voidtrace_result_word1 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, unsigned_word r0){ TRACE_DATA *data = CPU_TRACE_DATA (cpu); int last_input; /* Append any results to the end of the inputs */ last_input = TRACE_INPUT_IDX (data); save_data (sd, data, trace_fmt_word, sizeof (unsigned_word), &r0); trace_results (sd, cpu, trace_idx, last_input);} voidtrace_result0 (SIM_DESC sd, sim_cpu *cpu, int trace_idx){ TRACE_DATA *data = CPU_TRACE_DATA (cpu); int last_input; /* Append any results to the end of the inputs */ last_input = TRACE_INPUT_IDX (data); trace_results (sd, cpu, trace_idx, last_input);} voidtrace_result_word2 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, unsigned_word r0, unsigned_word r1){ TRACE_DATA *data = CPU_TRACE_DATA (cpu); int last_input; /* Append any results to the end of the inputs */ last_input = TRACE_INPUT_IDX (data); save_data (sd, data, trace_fmt_word, sizeof (r0), &r0); save_data (sd, data, trace_fmt_word, sizeof (r1), &r1); trace_results (sd, cpu, trace_idx, last_input);} voidtrace_result_word4 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, unsigned_word r0, unsigned_word r1, unsigned_word r2, unsigned_word r3){ TRACE_DATA *data = CPU_TRACE_DATA (cpu); int last_input; /* Append any results to the end of the inputs */ last_input = TRACE_INPUT_IDX (data); save_data (sd, data, trace_fmt_word, sizeof (r0), &r0); save_data (sd, data, trace_fmt_word, sizeof (r1), &r1); save_data (sd, data, trace_fmt_word, sizeof (r2), &r2); save_data (sd, data, trace_fmt_word, sizeof (r3), &r3); trace_results (sd, cpu, trace_idx, last_input);} voidtrace_result_bool1 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, int r0){ TRACE_DATA *data = CPU_TRACE_DATA (cpu); int last_input; /* Append any results to the end of the inputs */ last_input = TRACE_INPUT_IDX (data); save_data (sd, data, trace_fmt_bool, sizeof (r0), &r0); trace_results (sd, cpu, trace_idx, last_input);} voidtrace_result_addr1 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, address_word r0){ TRACE_DATA *data = CPU_TRACE_DATA (cpu); int last_input; /* Append any results to the end of the inputs */ last_input = TRACE_INPUT_IDX (data); save_data (sd, data, trace_fmt_addr, sizeof (r0), &r0); trace_results (sd, cpu, trace_idx, last_input);} voidtrace_result_fp1 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, fp_word f0){ TRACE_DATA *data = CPU_TRACE_DATA (cpu); int last_input; /* Append any results to the end of the inputs */ last_input = TRACE_INPUT_IDX (data); save_data (sd, data, trace_fmt_fp, sizeof (fp_word), &f0); trace_results (sd, cpu, trace_idx, last_input);} voidtrace_result_fp2 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, fp_word f0, fp_word f1){ TRACE_DATA *data = CPU_TRACE_DATA (cpu); int last_input; /* Append any results to the end of the inputs */ last_input = TRACE_INPUT_IDX (data); save_data (sd, data, trace_fmt_fp, sizeof (f0), &f0); save_data (sd, data, trace_fmt_fp, sizeof (f1), &f1); trace_results (sd, cpu, trace_idx, last_input);} voidtrace_result_fpu1 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, sim_fpu *f0){ double d; TRACE_DATA *data = CPU_TRACE_DATA (cpu); int last_input; /* Append any results to the end of the inputs */ last_input = TRACE_INPUT_IDX (data); d = sim_fpu_2d (f0); save_data (sd, data, trace_fmt_fp, sizeof (double), &d); trace_results (sd, cpu, trace_idx, last_input);} voidtrace_result_string1 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, char *s0){ TRACE_DATA *data = CPU_TRACE_DATA (cpu); int last_input; /* Append any results to the end of the inputs */ last_input = TRACE_INPUT_IDX (data); save_data (sd, data, trace_fmt_string, strlen (s0) + 1, s0); trace_results (sd, cpu, trace_idx, last_input);} voidtrace_result_word1_string1 (SIM_DESC sd, sim_cpu *cpu, int trace_idx, unsigned_word r0, char *s0){ TRACE_DATA *data = CPU_TRACE_DATA (cpu); int last_input; /* Append any results to the end of the inputs */ last_input = TRACE_INPUT_IDX (data); save_data (sd, data, trace_fmt_word, sizeof (unsigned_word), &r0); save_data (sd, data, trace_fmt_string, strlen (s0) + 1, s0); trace_results (sd, cpu, trace_idx, last_input);} voidtrace_vprintf (SIM_DESC sd, sim_cpu *cpu, const char *fmt, va_list ap){ if (cpu != NULL) { if (TRACE_FILE (CPU_TRACE_DATA (cpu)) != NULL) vfprintf (TRACE_FILE (CPU_TRACE_DATA (cpu)), fmt, ap); else sim_io_evprintf (sd, fmt, ap); } else { if (TRACE_FILE (STATE_TRACE_DATA (sd)) != NULL) vfprintf (TRACE_FILE (STATE_TRACE_DATA (sd)), fmt, ap); else sim_io_evprintf (sd, fmt, ap); }}/* The function trace_one_insn has been replaced by the function pair trace_prefix() + trace_generic(). It is still used. */voidtrace_one_insn (SIM_DESC sd, sim_cpu *cpu, address_word pc, int line_p, const char *filename, int linenum, const char *phase_wo_colon, const char *fmt, ...){ va_list ap; char phase[SIZE_PHASE+2]; strncpy (phase, phase_wo_colon, SIZE_PHASE); strcat (phase, ":"); if (!line_p) { trace_printf (sd, cpu, "%-*s %s:%-*d 0x%.*lx ", SIZE_PHASE+1, phase, filename, SIZE_LINE_NUMBER, linenum, SIZE_PC, (long)pc); va_start (ap, fmt); trace_vprintf (sd, cpu, fmt, ap); va_end (ap); trace_printf (sd, cpu, "\n"); } else { char buf[256]; buf[0] = 0; if (STATE_TEXT_SECTION (CPU_STATE (cpu)) && pc >= STATE_TEXT_START (CPU_STATE (cpu)) && pc < STATE_TEXT_END (CPU_STATE (cpu))) { const char *pc_filename = (const char *)0; const char *pc_function = (const char *)0; unsigned int pc_linenum = 0; if (bfd_find_nearest_line (STATE_PROG_BFD (CPU_STATE (cpu)), STATE_TEXT_SECTION (CPU_STATE (cpu)), (struct bfd_symbol **) 0, pc - STATE_TEXT_START (CPU_STATE (cpu)), &pc_filename, &pc_function, &pc_linenum)) { char *p = buf; if (pc_linenum) { sprintf (p, "#%-*d ", SIZE_LINE_NUMBER, pc_linenum); p += strlen (p); } else { sprintf (p, "%-*s ", SIZE_LINE_NUMBER+1, "---"); p += SIZE_LINE_NUMBER+2; } if (pc_function) { sprintf (p, "%s ", pc_function); p += strlen (p); } else if (pc_filename) { char *q = (char *) strrchr (pc_filename, '/'); sprintf (p, "%s ", (q) ? q+1 : pc_filename); p += strlen (p); } if (*p == ' ') *p = '\0'; } } trace_printf (sd, cpu, "%-*s 0x%.*x %-*.*s ", SIZE_PHASE+1, phase, SIZE_PC, (unsigned) pc, SIZE_LOCATION, SIZE_LOCATION, buf); va_start (ap, fmt); trace_vprintf (sd, cpu, fmt, ap); va_end (ap); trace_printf (sd, cpu, "\n"); }}voidtrace_printf VPARAMS ((SIM_DESC sd, sim_cpu *cpu, const char *fmt, ...)){#if !defined __STDC__ && !defined ALMOST_STDC SIM_DESC sd; sim_cpu *cpu; const char *fmt;#endif va_list ap; VA_START (ap, fmt);#if !defined __STDC__ && !defined ALMOST_STDC sd = va_arg (ap, SIM_DESC); cpu = va_arg (ap, sim_cpu *); fmt = va_arg (ap, const char *);#endif trace_vprintf (sd, cpu, fmt, ap); va_end (ap);}voiddebug_printf VPARAMS ((sim_cpu *cpu, const char *fmt, ...)){#if !defined __STDC__ && !defined ALMOST_STDC sim_cpu *cpu; const char *fmt;#endif va_list ap; VA_START (ap, fmt);#if !defined __STDC__ && !defined ALMOST_STDC cpu = va_arg (ap, sim_cpu *); fmt = va_arg (ap, const char *);#endif if (CPU_DEBUG_FILE (cpu) == NULL) (* STATE_CALLBACK (CPU_STATE (cpu))->evprintf_filtered) (STATE_CALLBACK (CPU_STATE (cpu)), fmt, ap); else vfprintf (CPU_DEBUG_FILE (cpu), fmt, ap); va_end (ap);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -