diff options
Diffstat (limited to 'src/tools/unidasm.cpp')
-rw-r--r-- | src/tools/unidasm.cpp | 41 |
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; |