summaryrefslogtreecommitdiffstatshomepage
path: root/src/tools/unidasm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/unidasm.cpp')
-rw-r--r--src/tools/unidasm.cpp41
1 files changed, 31 insertions, 10 deletions
diff --git a/src/tools/unidasm.cpp b/src/tools/unidasm.cpp
index 50c5e5ba7e8..be64dc9cb72 100644
--- a/src/tools/unidasm.cpp
+++ b/src/tools/unidasm.cpp
@@ -27,8 +27,10 @@ using util::BIT;
#include "cpu/asap/asapdasm.h"
#include "cpu/avr8/avr8dasm.h"
#include "cpu/bcp/bcpdasm.h"
+#include "cpu/c33/c33dasm.h"
#include "cpu/capricorn/capricorn_dasm.h"
#include "cpu/ccpu/ccpudasm.h"
+#include "cpu/cdc160/cdc160d.h"
#include "cpu/cdc1700/cdc1700d.h"
#include "cpu/clipper/clipperd.h"
#include "cpu/cop400/cop410ds.h"
@@ -67,6 +69,7 @@ using util::BIT;
#include "cpu/hcd62121/hcd62121d.h"
#include "cpu/hd61700/hd61700d.h"
#include "cpu/hmcs40/hmcs40d.h"
+#include "cpu/hmcs400/hmcs400d.h"
#include "cpu/hp2100/hp2100d.h"
#include "cpu/hpc/hpcdasm.h"
#include "cpu/hphybrid/hphybrid_dasm.h"
@@ -94,11 +97,11 @@ using util::BIT;
#include "cpu/m6502/m6502d.h"
#include "cpu/m6502/m6509d.h"
#include "cpu/m6502/m6510d.h"
-#include "cpu/m6502/m65c02d.h"
#include "cpu/m6502/m65ce02d.h"
#include "cpu/m6502/m740d.h"
#include "cpu/m6502/r65c02d.h"
#include "cpu/m6502/r65c19d.h"
+#include "cpu/m6502/w65c02d.h"
#include "cpu/m6502/xavixd.h"
#include "cpu/m6502/xavix2000d.h"
#include "cpu/m6800/6800dasm.h"
@@ -121,19 +124,24 @@ using util::BIT;
#include "cpu/minx/minxd.h"
#include "cpu/mips/mips3dsm.h"
#include "cpu/mips/mips1dsm.h"
+#include "cpu/mipsx/mipsxdasm.h"
#include "cpu/mk1/mk1dasm.h"
#include "cpu/mn1400/mn1400d.h"
#include "cpu/mn1610/mn1610d.h"
#include "cpu/mn1880/mn1880d.h"
#include "cpu/mn10200/mn102dis.h"
+#include "cpu/mn10300/mn103dasm.h"
+#include "cpu/mpk1839/kl1839vm1dasm.h"
#include "cpu/msm65x2/msm65x2d.h"
#include "cpu/nanoprocessor/nanoprocessor_dasm.h"
#include "cpu/nec/necdasm.h"
#include "cpu/nios2/nios2dasm.h"
#include "cpu/nova/novadasm.h"
-#include "cpu/ns32000/ns32000dasm.h"
+#include "cpu/ns32000/ns32000d.h"
#include "cpu/nuon/nuondasm.h"
+#include "cpu/olms66k/nx8dasm.h"
#include "cpu/pace/pacedasm.h"
+#include "cpu/palm/palmd.h"
#include "cpu/patinhofeio/patinho_feio_dasm.h"
#include "cpu/pdp1/pdp1dasm.h"
#include "cpu/pdp8/pdp8dasm.h"
@@ -191,6 +199,7 @@ using util::BIT;
#include "cpu/unsp/unspdasm.h"
#include "cpu/upd177x/upd177xd.h"
#include "cpu/upd7725/dasm7725.h"
+#include "cpu/upd777/upd777dasm.h"
#include "cpu/upd7810/upd7810_dasm.h"
#include "cpu/upd78k/upd78k0d.h"
#include "cpu/upd78k/upd78k1d.h"
@@ -205,10 +214,12 @@ using util::BIT;
#include "cpu/vt50/vt50dasm.h"
#include "cpu/vt61/vt61dasm.h"
#include "cpu/we32000/we32100d.h"
+#include "cpu/xa/xadasm.h"
#include "cpu/xavix2/xavix2d.h"
#include "cpu/xtensa/xtensad.h"
#include "cpu/z180/z180dasm.h"
#include "cpu/z8/z8dasm.h"
+#include "cpu/z80/r800dasm.h"
#include "cpu/z80/z80dasm.h"
#include "cpu/z8000/8000dasm.h"
@@ -262,7 +273,6 @@ struct g65816_unidasm_t : g65816_disassembler::config
bool x_flag;
g65816_unidasm_t() { m_flag = false; x_flag = false; }
- virtual ~g65816_unidasm_t() override = default;
virtual bool get_m_flag() const override { return m_flag; }
virtual bool get_x_flag() const override { return x_flag; }
} g65816_unidasm;
@@ -338,11 +348,9 @@ struct z8000_unidasm_t : z8000_disassembler::config
struct hyperstone_unidasm_t : hyperstone_disassembler::config
{
bool h;
- u8 fp;
- hyperstone_unidasm_t() { h = false; fp = 0; }
+ hyperstone_unidasm_t() { h = false; }
virtual ~hyperstone_unidasm_t() = default;
- virtual u8 get_fp() const { return fp; }
virtual bool get_h() const { return h; }
} hyperstone_unidasm;
@@ -412,8 +420,11 @@ static const dasm_table_entry dasm_table[] =
{ "b5500", le, 0, []() -> util::disasm_interface * { return new b5500_disassembler; } },
{ "b6000", le, 0, []() -> util::disasm_interface * { return new b6000_disassembler; } },
{ "b6100", le, 0, []() -> util::disasm_interface * { return new b6100_disassembler; } },
+ { "c33", le, 0, []() -> util::disasm_interface * { return new c33_disassembler; } },
{ "capricorn", le, 0, []() -> util::disasm_interface * { return new capricorn_disassembler; } },
{ "ccpu", le, 0, []() -> util::disasm_interface * { return new ccpu_disassembler; } },
+ { "cdc160", be, -1, []() -> util::disasm_interface * { return new cdc160_disassembler; } },
+ { "cdc160a", be, -1, []() -> util::disasm_interface * { return new cdc160a_disassembler; } },
{ "cdc1700", be, -1, []() -> util::disasm_interface * { return new cdc1700_disassembler; } },
{ "cdp1801", le, 0, []() -> util::disasm_interface * { return new cosmac_disassembler(cosmac_disassembler::TYPE_1801); } },
{ "cdp1802", le, 0, []() -> util::disasm_interface * { return new cosmac_disassembler(cosmac_disassembler::TYPE_1802); } },
@@ -468,6 +479,7 @@ static const dasm_table_entry dasm_table[] =
{ "hd6309", be, 0, []() -> util::disasm_interface * { return new hd6309_disassembler; } },
{ "hd63701", be, 0, []() -> util::disasm_interface * { return new m680x_disassembler(63701); } },
{ "hmcs40", le, -1, []() -> util::disasm_interface * { return new hmcs40_disassembler; } },
+ { "hmcs400", le, -1, []() -> util::disasm_interface * { return new hmcs400_disassembler; } },
{ "hp2100", be, -1, []() -> util::disasm_interface * { return new hp2100_disassembler; } },
{ "hp21mx", be, -1, []() -> util::disasm_interface * { return new hp21mx_disassembler; } },
{ "hp_5061_3001", be, -1, []() -> util::disasm_interface * { return new hp_5061_3001_disassembler; } },
@@ -500,6 +512,7 @@ static const dasm_table_entry dasm_table[] =
{ "jaguargpu", be, 0, []() -> util::disasm_interface * { return new jaguar_disassembler(jaguar_disassembler::variant::GPU); } },
{ "konami", be, 0, []() -> util::disasm_interface * { return new konami_disassembler; } },
{ "ks0164", be, 0, []() -> util::disasm_interface * { return new ks0164_disassembler; } },
+ { "kl1839vm1", be, 0, []() -> util::disasm_interface * { return new kl1839vm1_disassembler; } },
{ "lc57", be, 0, []() -> util::disasm_interface * { return new lc57_disassembler; } },
{ "lc58", be, -1, []() -> util::disasm_interface * { return new lc58_disassembler; } },
{ "lc8670", be, 0, []() -> util::disasm_interface * { return new lc8670_disassembler; } },
@@ -514,7 +527,6 @@ static const dasm_table_entry dasm_table[] =
{ "m6502", le, 0, []() -> util::disasm_interface * { return new m6502_disassembler; } },
{ "m6509", le, 0, []() -> util::disasm_interface * { return new m6509_disassembler; } },
{ "m6510", le, 0, []() -> util::disasm_interface * { return new m6510_disassembler; } },
- { "m65c02", le, 0, []() -> util::disasm_interface * { return new m65c02_disassembler; } },
{ "m65ce02", le, 0, []() -> util::disasm_interface * { return new m65ce02_disassembler; } },
{ "m6800", be, 0, []() -> util::disasm_interface * { return new m680x_disassembler(6800); } },
{ "m68000", be, 0, []() -> util::disasm_interface * { return new m68k_disassembler(m68k_disassembler::TYPE_68000); } },
@@ -533,7 +545,7 @@ static const dasm_table_entry dasm_table[] =
{ "m740", le, 0, []() -> util::disasm_interface * { return new m740_disassembler(&m740_unidasm); } },
{ "mb86233", le, -2, []() -> util::disasm_interface * { return new mb86233_disassembler; } },
{ "mb86235", le, -3, []() -> util::disasm_interface * { return new mb86235_disassembler; } },
- { "mb88", le, 0, []() -> util::disasm_interface * { return new mb88_disassembler; } },
+ { "mb88xx", le, 0, []() -> util::disasm_interface * { return new mb88_disassembler; } },
{ "mc88100", be, 0, []() -> util::disasm_interface * { return new mc88100_disassembler; } },
{ "mc88110", be, 0, []() -> util::disasm_interface * { return new mc88110_disassembler; } },
{ "mcs48", le, 0, []() -> util::disasm_interface * { return new mcs48_disassembler(false, false); } },
@@ -542,11 +554,13 @@ static const dasm_table_entry dasm_table[] =
{ "mips1le", le, 0, []() -> util::disasm_interface * { return new mips1_disassembler; } },
{ "mips3be", be, 0, []() -> util::disasm_interface * { return new mips3_disassembler; } },
{ "mips3le", le, 0, []() -> util::disasm_interface * { return new mips3_disassembler; } },
+ { "mipsx", be, 0, []() -> util::disasm_interface * { return new mipsx_disassembler; } },
{ "mk1", le, 0, []() -> util::disasm_interface * { return new mk1_disassembler; } },
{ "mm5799", le, 0, []() -> util::disasm_interface * { return new mm5799_disassembler; } },
{ "mm76", le, 0, []() -> util::disasm_interface * { return new mm76_disassembler; } },
{ "mm78", le, 0, []() -> util::disasm_interface * { return new mm78_disassembler; } },
{ "mn10200", le, 0, []() -> util::disasm_interface * { return new mn10200_disassembler; } },
+ { "mn10300", le, 0, []() -> util::disasm_interface * { return new mn10300_disassembler; } },
{ "mn1400", le, 0, []() -> util::disasm_interface * { return new mn1400_disassembler; } },
{ "mn1610", be, -1, []() -> util::disasm_interface * { return new mn1610_disassembler; } },
{ "mn1613", be, -1, []() -> util::disasm_interface * { return new mn1613_disassembler; } },
@@ -561,7 +575,11 @@ static const dasm_table_entry dasm_table[] =
{ "ns32000", le, 0, []() -> util::disasm_interface * { return new ns32000_disassembler; } },
{ "nuon", be, 0, []() -> util::disasm_interface * { return new nuon_disassembler; } },
{ "nsc8105", be, 0, []() -> util::disasm_interface * { return new m680x_disassembler(8105); } },
+ { "nx8_500s", le, 0, []() -> util::disasm_interface * { return new nx8_500s_disassembler; } },
+ { "p8xc552", le, 0, []() -> util::disasm_interface * { return new p8xc552_disassembler; } },
+ { "p8xc562", le, 0, []() -> util::disasm_interface * { return new p8xc562_disassembler; } },
{ "pace", le, -1, []() -> util::disasm_interface * { return new pace_disassembler; } },
+ { "palm", be, 0, []() -> util::disasm_interface * { return new palm_disassembler; } },
{ "patinho_feio", le, 0, []() -> util::disasm_interface * { return new patinho_feio_disassembler; } },
{ "pdp1", be, -2, []() -> util::disasm_interface * { return new pdp1_disassembler; } },
{ "pdp8", be, -1, []() -> util::disasm_interface * { return new pdp8_disassembler; } },
@@ -581,6 +599,7 @@ static const dasm_table_entry dasm_table[] =
{ "psxcpu", le, 0, []() -> util::disasm_interface * { return new psxcpu_disassembler; } },
{ "r65c02", le, 0, []() -> util::disasm_interface * { return new r65c02_disassembler; } },
{ "r65c19", le, 0, []() -> util::disasm_interface * { return new r65c19_disassembler; } },
+ { "r800", le, 0, []() -> util::disasm_interface * { return new r800_disassembler; } },
{ "romp", be, 0, []() -> util::disasm_interface * { return new romp_disassembler; } },
{ "rsp", le, 0, []() -> util::disasm_interface * { return new rsp_disassembler; } },
{ "rupi44", le, 0, []() -> util::disasm_interface * { return new rupi44_disassembler; } },
@@ -657,6 +676,7 @@ static const dasm_table_entry dasm_table[] =
{ "unsp12", be, -1, []() -> util::disasm_interface * { return new unsp_12_disassembler; } },
{ "unsp20", be, -1, []() -> util::disasm_interface * { return new unsp_20_disassembler; } },
{ "upd177x", be, -1, []() -> util::disasm_interface * { return new upd177x_disassembler; } },
+ { "upd777", be, -1, []() -> util::disasm_interface * { return new upd777_disassembler; } },
{ "upd7725", be, -2, []() -> util::disasm_interface * { return new necdsp_disassembler; } },
{ "upd7801", le, 0, []() -> util::disasm_interface * { return new upd7801_disassembler; } },
{ "upd78c05", le, 0, []() -> util::disasm_interface * { return new upd78c05_disassembler; } },
@@ -709,10 +729,12 @@ static const dasm_table_entry dasm_table[] =
{ "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; } },
+ { "w65c02", le, 0, []() -> util::disasm_interface * { return new w65c02_disassembler; } },
{ "we32100", be, 0, []() -> util::disasm_interface * { return new we32100_disassembler; } },
{ "x86_16", le, 0, []() -> util::disasm_interface * { i386_unidasm.mode = 16; return new i386_disassembler(&i386_unidasm); } },
{ "x86_32", le, 0, []() -> util::disasm_interface * { i386_unidasm.mode = 32; return new i386_disassembler(&i386_unidasm); } },
{ "x86_64", le, 0, []() -> util::disasm_interface * { i386_unidasm.mode = 64; return new i386_disassembler(&i386_unidasm); } },
+ { "xa", le, 0, []() -> util::disasm_interface * { return new xa_dasm; } },
{ "xavix", le, 0, []() -> util::disasm_interface * { return new xavix_disassembler; } },
{ "xavix2000", le, 0, []() -> util::disasm_interface * { return new xavix2000_disassembler; } },
{ "xavix2", le, 0, []() -> util::disasm_interface * { return new xavix2_disassembler; } },
@@ -1297,8 +1319,7 @@ int disasm_file(util::random_read &file, u64 length, options &opts)
base_buffer.data.resize(rounded_size + 8, 0x00);
base_buffer.size = length;
base_buffer.base_pc = opts.basepc;
- std::size_t actual;
- std::error_condition filerr = file.read_at(opts.skip, &base_buffer.data[0], length - opts.skip, actual);
+ auto const [filerr, actual] = read_at(file, opts.skip, &base_buffer.data[0], length - opts.skip);
if(filerr) {
std::fprintf(stderr, "Error reading from file '%s' (%s)\n", opts.filename, filerr.message().c_str());
return 1;