summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Stellard <tstellar@gmail.com>2010-12-28 16:42:21 -0800
committerTom Stellard <tstellar@gmail.com>2010-12-28 16:42:21 -0800
commit0d5cc6062bd4d69445d1804183a5cf8fbb2fa271 (patch)
tree36ac3e56fc1edbf8620fa1876e25775784abaf97
parent2a0ffd147e0158f9eb16ad173603da9eddd691a1 (diff)
emulator: Add input registers
-rw-r--r--emulator.cpp13
-rw-r--r--emulator.h4
2 files changed, 13 insertions, 4 deletions
diff --git a/emulator.cpp b/emulator.cpp
index 607ec63..a2f663a 100644
--- a/emulator.cpp
+++ b/emulator.cpp
@@ -13,12 +13,14 @@ emulator::emulator(
program_loader * loader,
int num_temp_regs,
int num_const_regs,
- int num_out_regs)
+ int num_out_regs,
+ int num_input_regs)
:
m_loader(loader),
m_temp_regs(num_temp_regs),
m_const_regs(num_const_regs, new float_value()),
- m_out_regs(num_out_regs)
+ m_out_regs(num_out_regs),
+ m_input_regs(num_input_regs, new float_value())
{ }
bool
@@ -45,6 +47,9 @@ emulator::set_constants(float value)
for(it = m_const_regs.begin(); it < m_const_regs.end(); ++it) {
(*it)->set_value(value);
}
+ for(it = m_input_regs.begin(); it < m_input_regs.end(); ++it) {
+ (*it)->set_value(value);
+ }
}
value *
@@ -66,8 +71,10 @@ emulator::get_value(register_address addr)
}
case REGISTER_TYPE_OUT: return m_out_regs[index]->clone();
case REGISTER_TYPE_IMMEDIATE: return m_immediate_regs[index]->clone();
+ case REGISTER_TYPE_IN: return m_input_regs[index]->clone();
default:
- assert(0);
+ std::cerr << __FUNCTION__ << " unknown register type: "
+ << addr.m_type << "\n";
return NULL;
}
}
diff --git a/emulator.h b/emulator.h
index b8f6986..c3fcd1f 100644
--- a/emulator.h
+++ b/emulator.h
@@ -14,7 +14,8 @@ public:
program_loader * loader,
int num_temp_regs,
int num_const_regs,
- int num_out_regs);
+ int num_out_regs,
+ int num_input_regs);
bool run();
@@ -32,6 +33,7 @@ private:
std::vector<value *> m_out_regs;
std::vector<value *> m_private_regs;
std::vector<float_value*> m_immediate_regs;
+ std::vector<float_value*> m_input_regs;
};
#endif //EMULATOR_H