mirror of
https://github.com/holub/mame
synced 2025-06-03 11:26:56 +03:00
unidasm: Add disassembler for Mitsubishi/Renesas M16C architecture
This commit is contained in:
parent
5ab956906b
commit
e1bf43e670
@ -1556,11 +1556,20 @@ if opt_tool(CPUS, "MELPS4") then
|
||||
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/melps4/melps4d.h")
|
||||
end
|
||||
|
||||
--------------------------------------------------
|
||||
-- Mitsubishi M16C, disassembler only
|
||||
--------------------------------------------------
|
||||
|
||||
if opt_tool(CPUS, "M16C") then
|
||||
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m16c/m16cdasm.cpp")
|
||||
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m16c/m16cdasm.h")
|
||||
end
|
||||
|
||||
--------------------------------------------------
|
||||
-- Mitsubishi M32C, disassembler only
|
||||
--------------------------------------------------
|
||||
|
||||
if opt_tool(CPUS, "M23C") then
|
||||
if opt_tool(CPUS, "M32C") then
|
||||
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m32c/m32cdasm.cpp")
|
||||
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m32c/m32cdasm.h")
|
||||
end
|
||||
|
1193
src/devices/cpu/m16c/m16cdasm.cpp
Normal file
1193
src/devices/cpu/m16c/m16cdasm.cpp
Normal file
File diff suppressed because it is too large
Load Diff
52
src/devices/cpu/m16c/m16cdasm.h
Normal file
52
src/devices/cpu/m16c/m16cdasm.h
Normal file
@ -0,0 +1,52 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:AJR
|
||||
|
||||
#ifndef MAME_CPU_M16C_M16CDASM_H
|
||||
#define MAME_CPU_M16C_M16CDASM_H
|
||||
|
||||
#pragma once
|
||||
|
||||
class m16c_disassembler : public util::disasm_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
m16c_disassembler();
|
||||
|
||||
protected:
|
||||
// disassembler overrides
|
||||
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:
|
||||
// static tables
|
||||
static const char *const s_regs[2][6];
|
||||
static const char *const s_cregs[8];
|
||||
static const char *const s_byte_ops[8];
|
||||
static const char *const s_bit_ops[14];
|
||||
static const char *const s_cnds[16];
|
||||
static const char *const s_imm76_ops[2][9];
|
||||
static const char *const s_nibmov_ops[4];
|
||||
static const char *const s_decimal_ops[2][4];
|
||||
|
||||
// formatting helpers
|
||||
void format_imm8(std::ostream &stream, u8 imm) const;
|
||||
void format_imm16(std::ostream &stream, u16 imm) const;
|
||||
void format_label(std::ostream &stream, u32 label) const;
|
||||
void format_imm_signed(std::ostream &stream, s16 imm) const;
|
||||
void format_relative(std::ostream &stream, const char *reg, s32 disp) const;
|
||||
|
||||
// internal helpers
|
||||
void dasm_ea(std::ostream &stream, offs_t &pc, const data_buffer &opcodes, u8 mode, bool size) const;
|
||||
void dasm_general(std::ostream &stream, offs_t &pc, const data_buffer &opcodes, bool size) const;
|
||||
void dasm_quick(std::ostream &stream, offs_t &pc, const data_buffer &opcodes, bool size) const;
|
||||
void dasm_shift(std::ostream &stream, offs_t &pc, const data_buffer &opcodes, bool size) const;
|
||||
void dasm_74(std::ostream &stream, offs_t &pc, const data_buffer &opcodes, bool size) const;
|
||||
void dasm_76(std::ostream &stream, offs_t &pc, const data_buffer &opcodes, bool size) const;
|
||||
void dasm_7a(std::ostream &stream, offs_t &pc, const data_buffer &opcodes, bool size) const;
|
||||
void dasm_7c(std::ostream &stream, offs_t &pc, const data_buffer &opcodes) const;
|
||||
void dasm_7d(std::ostream &stream, offs_t &pc, offs_t &flags, const data_buffer &opcodes) const;
|
||||
void dasm_7e(std::ostream &stream, offs_t &pc, const data_buffer &opcodes) const;
|
||||
void dasm_eb(std::ostream &stream, offs_t &pc, offs_t &flags, const data_buffer &opcodes) const;
|
||||
};
|
||||
|
||||
#endif // MAME_CPU_M16C_M16CDASM_H
|
@ -84,6 +84,7 @@ using util::BIT;
|
||||
#include "cpu/lc8670/lc8670dsm.h"
|
||||
#include "cpu/lh5801/5801dasm.h"
|
||||
#include "cpu/lr35902/lr35902d.h"
|
||||
#include "cpu/m16c/m16cdasm.h"
|
||||
#include "cpu/m32c/m32cdasm.h"
|
||||
#include "cpu/m37710/m7700ds.h"
|
||||
#include "cpu/m6502/m4510d.h"
|
||||
@ -498,6 +499,7 @@ static const dasm_table_entry dasm_table[] =
|
||||
{ "lh5801", le, 0, []() -> util::disasm_interface * { return new lh5801_disassembler; } },
|
||||
{ "lr35902", le, 0, []() -> util::disasm_interface * { return new lr35902_disassembler; } },
|
||||
{ "m146805", be, 0, []() -> util::disasm_interface * { return new m146805_disassembler; } },
|
||||
{ "m16c", le, 0, []() -> util::disasm_interface * { return new m16c_disassembler; } },
|
||||
{ "m32c", le, 0, []() -> util::disasm_interface * { return new m32c_disassembler; } },
|
||||
{ "m37710", le, 0, []() -> util::disasm_interface * { return new m7700_disassembler(&m7700_unidasm); } },
|
||||
{ "m4510", le, 0, []() -> util::disasm_interface * { return new m4510_disassembler; } },
|
||||
|
Loading…
Reference in New Issue
Block a user