diff options
Diffstat (limited to 'src/devices/cpu/i960/i960dis.h')
-rw-r--r-- | src/devices/cpu/i960/i960dis.h | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/src/devices/cpu/i960/i960dis.h b/src/devices/cpu/i960/i960dis.h index 94e364fd666..2bc52697648 100644 --- a/src/devices/cpu/i960/i960dis.h +++ b/src/devices/cpu/i960/i960dis.h @@ -1,18 +1,33 @@ // license:BSD-3-Clause // copyright-holders:Farfetch'd, R. Belmont -#ifndef __I960DIS_H__ -#define __I960DIS_H__ +#ifndef MAME_CPU_I960_I960DIS_H +#define MAME_CPU_I960_I960DIS_H -struct disassemble_t +#pragma once + +class i960_disassembler : public util::disasm_interface { - disassemble_t(std::ostream &s, unsigned long ip, const uint8_t *opr) - : stream(s), IP(ip), oprom(opr) { } - - std::ostream &stream; // output stream - unsigned long IP; - unsigned long IPinc; - const uint8_t *oprom; - uint32_t disflags; +public: + i960_disassembler() = default; + virtual ~i960_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 ¶ms) override; + +private: + struct mnemonic_t + { + const char *mnem; + unsigned short type; + }; + + static const mnemonic_t mnemonic[256]; + static const mnemonic_t mnem_reg[100]; + static const char *const constnames[32]; + static const char *const regnames[32]; + + std::string dis_decode_reg(u32 iCode, unsigned char cnt); + }; -#endif /* __I960DIS_H__ */ +#endif |