From 0d5cc6062bd4d69445d1804183a5cf8fbb2fa271 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Tue, 28 Dec 2010 16:42:21 -0800 Subject: emulator: Add input registers --- emulator.cpp | 13 ++++++++++--- emulator.h | 4 +++- 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 m_out_regs; std::vector m_private_regs; std::vector m_immediate_regs; + std::vector m_input_regs; }; #endif //EMULATOR_H -- cgit v1.2.3