Browse Source

move interactive function init out of main loop

These values don't change between runs, so there's no point in recreating
them on every instruction step.  Pull it out to the top to simplify.
pull/23/head
Mike Frysinger 11 years ago
parent
commit
080e64a6a2
  1. 28
      riscv/interactive.cc

28
riscv/interactive.cc

@ -48,6 +48,20 @@ static std::string readline(int fd)
void sim_t::interactive() void sim_t::interactive()
{ {
typedef void (sim_t::*interactive_func)(const std::string&, const std::vector<std::string>&);
std::map<std::string,interactive_func> funcs;
funcs["r"] = &sim_t::interactive_run_noisy;
funcs["rs"] = &sim_t::interactive_run_silent;
funcs["reg"] = &sim_t::interactive_reg;
funcs["fregs"] = &sim_t::interactive_fregs;
funcs["fregd"] = &sim_t::interactive_fregd;
funcs["mem"] = &sim_t::interactive_mem;
funcs["str"] = &sim_t::interactive_str;
funcs["until"] = &sim_t::interactive_until;
funcs["while"] = &sim_t::interactive_until;
funcs["q"] = &sim_t::interactive_quit;
while (!htif->done()) while (!htif->done())
{ {
std::cerr << ": " << std::flush; std::cerr << ": " << std::flush;
@ -67,20 +81,6 @@ void sim_t::interactive()
while (ss >> tmp) while (ss >> tmp)
args.push_back(tmp); args.push_back(tmp);
typedef void (sim_t::*interactive_func)(const std::string&, const std::vector<std::string>&);
std::map<std::string,interactive_func> funcs;
funcs["r"] = &sim_t::interactive_run_noisy;
funcs["rs"] = &sim_t::interactive_run_silent;
funcs["reg"] = &sim_t::interactive_reg;
funcs["fregs"] = &sim_t::interactive_fregs;
funcs["fregd"] = &sim_t::interactive_fregd;
funcs["mem"] = &sim_t::interactive_mem;
funcs["str"] = &sim_t::interactive_str;
funcs["until"] = &sim_t::interactive_until;
funcs["while"] = &sim_t::interactive_until;
funcs["q"] = &sim_t::interactive_quit;
try try
{ {
if(funcs.count(cmd)) if(funcs.count(cmd))

Loading…
Cancel
Save