aboutsummaryrefslogtreecommitdiff
path: root/riscv/interactive.cc
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2015-06-03 21:24:48 +0800
committerMike Frysinger <vapier@gentoo.org>2015-06-03 21:24:48 +0800
commit080e64a6a23b1ca2be9d603bc642c128d413dd7d (patch)
tree1eb1f66fac3cc1393221b26467f38c381f7558e2 /riscv/interactive.cc
parentc1273bcbaf659f5bb54fb85e1292b21d70503bc4 (diff)
downloadspike-080e64a6a23b1ca2be9d603bc642c128d413dd7d.zip
spike-080e64a6a23b1ca2be9d603bc642c128d413dd7d.tar.gz
spike-080e64a6a23b1ca2be9d603bc642c128d413dd7d.tar.bz2
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.
Diffstat (limited to 'riscv/interactive.cc')
-rw-r--r--riscv/interactive.cc28
1 files changed, 14 insertions, 14 deletions
diff --git a/riscv/interactive.cc b/riscv/interactive.cc
index 2dd1cad..abdcc39 100644
--- a/riscv/interactive.cc
+++ b/riscv/interactive.cc
@@ -48,6 +48,20 @@ static std::string readline(int fd)
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())
{
std::cerr << ": " << std::flush;
@@ -67,20 +81,6 @@ void sim_t::interactive()
while (ss >> 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
{
if(funcs.count(cmd))