summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/dsp56k/opcode.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/dsp56k/opcode.h')
-rw-r--r--src/devices/cpu/dsp56k/opcode.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/devices/cpu/dsp56k/opcode.h b/src/devices/cpu/dsp56k/opcode.h
new file mode 100644
index 00000000000..66423716ffb
--- /dev/null
+++ b/src/devices/cpu/dsp56k/opcode.h
@@ -0,0 +1,47 @@
+// license:BSD-3-Clause
+// copyright-holders:Andrew Gardner
+#ifndef __DSP56K_OPCODE_H__
+#define __DSP56K_OPCODE_H__
+
+#include "emu.h"
+#include "inst.h"
+#include "pmove.h"
+
+#include "dsp56k.h"
+
+//
+// An Opcode contains an instruction and a parallel move operation.
+//
+namespace DSP56K
+{
+class Instruction;
+class ParallelMove;
+
+class Opcode
+{
+public:
+ Opcode(UINT16 w0, UINT16 w1);
+ virtual ~Opcode();
+
+ std::string disassemble() const;
+ void evaluate(dsp56k_core* cpustate) const;
+ size_t size() const;
+ size_t evalSize() const;
+
+ // Peek through to the instruction
+ const reg_id& instSource() const;
+ const reg_id& instDestination() const;
+ size_t instAccumulatorBitsModified() const;
+
+private:
+ auto_pointer<Instruction> m_instruction;
+ auto_pointer<ParallelMove> m_parallelMove;
+
+ UINT16 m_word0;
+ //UINT16 m_word1;
+
+ std::string dcString() const;
+};
+
+}
+#endif