summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/mips/vudasm.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/mips/vudasm.h')
-rw-r--r--src/devices/cpu/mips/vudasm.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/devices/cpu/mips/vudasm.h b/src/devices/cpu/mips/vudasm.h
new file mode 100644
index 00000000000..0ff2ad67adc
--- /dev/null
+++ b/src/devices/cpu/mips/vudasm.h
@@ -0,0 +1,39 @@
+// license:BSD-3-Clause
+// copyright-holders:Ryan Holtz
+/******************************************************************************
+*
+* Sony Playstation 2 Vector Unit disassembler
+*
+*/
+
+#ifndef MAME_CPU_MIPS_VUDASM_H
+#define MAME_CPU_MIPS_VUDASM_H
+
+#pragma once
+
+class sonyvu_disassembler : public util::disasm_interface
+{
+public:
+ sonyvu_disassembler() = default;
+ virtual ~sonyvu_disassembler() = default;
+
+ virtual u32 opcode_alignment() const override;
+ virtual offs_t disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer &params) override;
+
+private:
+ void dasm_upper(uint32_t pc, uint32_t op, std::ostream &stream);
+ void dasm_lower(uint32_t pc, uint32_t op, std::ostream &stream);
+ std::string signed_5bit(uint16_t val);
+ std::string signed_11bit(uint16_t val);
+ std::string signed_11bit_x8(uint16_t val);
+ std::string signed_15bit(uint16_t val);
+
+ static const char * DEST_STR[16];
+ static const char * DEST_COMMA_STR[16];
+ static const char * BC_STR[16];
+ static const char * BC_COMMA_STR[16];
+ static const char * VFREG[32];
+ static const char * VIREG[32];
+};
+
+#endif // MAME_CPU_MIPS_VUDASM_H \ No newline at end of file