unidasm: Add disassembler for DEC VAX architecture
This commit is contained in:
parent
3845178bb4
commit
fb6b0f0cc4
@ -3251,6 +3251,16 @@ if opt_tool(CPUS, "DSP56000") then
|
||||
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dsp56000/dsp56000d.h")
|
||||
end
|
||||
|
||||
--------------------------------------------------
|
||||
-- DEC VAX, disassembler only
|
||||
--@src/devices/cpu/vax/vax.h,CPUS["VAX"] = true
|
||||
--------------------------------------------------
|
||||
|
||||
if opt_tool(CPUS, "VAX") then
|
||||
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/vax/vaxdasm.cpp")
|
||||
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/vax/vaxdasm.h")
|
||||
end
|
||||
|
||||
--------------------------------------------------
|
||||
-- DEC VT50/VT52
|
||||
--@src/devices/cpu/vt50/vt50.h,CPUS["VT50"] = true
|
||||
|
1120
src/devices/cpu/vax/vaxdasm.cpp
Normal file
1120
src/devices/cpu/vax/vaxdasm.cpp
Normal file
File diff suppressed because it is too large
Load Diff
38
src/devices/cpu/vax/vaxdasm.h
Normal file
38
src/devices/cpu/vax/vaxdasm.h
Normal file
@ -0,0 +1,38 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:AJR
|
||||
|
||||
#ifndef MAME_CPU_VAX_VAXDASM_H
|
||||
#define MAME_CPU_VAX_VAXDASM_H
|
||||
|
||||
#pragma once
|
||||
|
||||
class vax_disassembler : public util::disasm_interface
|
||||
{
|
||||
public:
|
||||
enum class mode : u8;
|
||||
|
||||
struct opdef
|
||||
{
|
||||
std::string_view mnemonic;
|
||||
mode operand[6];
|
||||
u32 flags;
|
||||
};
|
||||
|
||||
// construction/destruction
|
||||
vax_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:
|
||||
// internal helpers
|
||||
void format_immediate(std::ostream &stream, u32 i) const;
|
||||
void format_signed(std::ostream &stream, s32 value) const;
|
||||
void format_relative(std::ostream &stream, u32 pc, s32 displ) const;
|
||||
void format_register_mask(std::ostream &stream, u16 mask) const;
|
||||
offs_t disassemble_inst(std::ostream &stream, const opdef &inst, offs_t &pc, offs_t ppc, const data_buffer &opcodes) const;
|
||||
};
|
||||
|
||||
#endif // MAME_CPU_VAX_VAXDASM_H
|
@ -185,6 +185,7 @@ using util::BIT;
|
||||
#include "cpu/v60/v60d.h"
|
||||
#include "cpu/v810/v810dasm.h"
|
||||
#include "cpu/v850/v850dasm.h"
|
||||
#include "cpu/vax/vaxdasm.h"
|
||||
#include "cpu/vt50/vt50dasm.h"
|
||||
#include "cpu/vt61/vt61dasm.h"
|
||||
#include "cpu/we32000/we32100d.h"
|
||||
@ -638,6 +639,7 @@ static const dasm_table_entry dasm_table[] =
|
||||
{ "v850", le, 0, []() -> util::disasm_interface * { return new v850_disassembler; } },
|
||||
{ "v850es", le, 0, []() -> util::disasm_interface * { return new v850es_disassembler; } },
|
||||
{ "v850e2", le, 0, []() -> util::disasm_interface * { return new v850e2_disassembler; } },
|
||||
{ "vax", le, 0, []() -> util::disasm_interface * { return new vax_disassembler; } },
|
||||
{ "vt50", le, 0, []() -> util::disasm_interface * { return new vt50_disassembler; } },
|
||||
{ "vt52", le, 0, []() -> util::disasm_interface * { return new vt52_disassembler; } },
|
||||
{ "vt61", le, -1, []() -> util::disasm_interface * { return new vt61_disassembler; } },
|
||||
|
Loading…
Reference in New Issue
Block a user