dsp-asm/stmt_string.cpp
Zack Buhman ddf46ce8fd stmt_ins: refactor
The overall intent is to make writing a decompiler require less code
duplication.

"bits.hpp" and "stmt_enum.hpp" are replaced with "stmt_ins.hpp" which
is generated directly from dsp-notes.csv.
2023-09-03 04:46:34 +00:00

160 lines
3.4 KiB
C++

#include "stmt_string.hpp"
#include "stmt_ins.hpp"
#define i(v) (static_cast<int>(v))
namespace dsp {
namespace op {
const std::string x_src_string[] = {
[i(x_src_t::m0 )] = "m0" ,
[i(x_src_t::m1 )] = "m1" ,
[i(x_src_t::m2 )] = "m2" ,
[i(x_src_t::m3 )] = "m3" ,
[i(x_src_t::mc0)] = "mc0",
[i(x_src_t::mc1)] = "mc1",
[i(x_src_t::mc2)] = "mc2",
[i(x_src_t::mc3)] = "mc3",
};
const std::string y_src_string[] = {
[i(y_src_t::m0 )] = "m0" ,
[i(y_src_t::m1 )] = "m1" ,
[i(y_src_t::m2 )] = "m2" ,
[i(y_src_t::m3 )] = "m3" ,
[i(y_src_t::mc0)] = "mc0",
[i(y_src_t::mc1)] = "mc1",
[i(y_src_t::mc2)] = "mc2",
[i(y_src_t::mc3)] = "mc3",
};
const std::string d1_dst_string[] = {
[i(d1_dst_t::mc0)] = "mc0",
[i(d1_dst_t::mc1)] = "mc1",
[i(d1_dst_t::mc2)] = "mc2",
[i(d1_dst_t::mc3)] = "mc3",
[i(d1_dst_t::rx )] = "rx" ,
[i(d1_dst_t::pl )] = "pl" ,
[i(d1_dst_t::ra0)] = "ra0",
[i(d1_dst_t::wa0)] = "wa0",
[i(d1_dst_t::lop)] = "lop",
[i(d1_dst_t::top)] = "top",
[i(d1_dst_t::ct0)] = "ct0",
[i(d1_dst_t::ct1)] = "ct1",
[i(d1_dst_t::ct2)] = "ct2",
[i(d1_dst_t::ct3)] = "ct3",
};
const std::string d1_src_string[] = {
[i(d1_src_t::m0 )] = "m0" ,
[i(d1_src_t::m1 )] = "m1" ,
[i(d1_src_t::m2 )] = "m2" ,
[i(d1_src_t::m3 )] = "m3" ,
[i(d1_src_t::mc0)] = "mc0",
[i(d1_src_t::mc1)] = "mc1",
[i(d1_src_t::mc2)] = "mc2",
[i(d1_src_t::mc3)] = "mc3",
[i(d1_src_t::all)] = "all",
[i(d1_src_t::alh)] = "alh",
};
}
namespace load {
const std::string dst_string[] = {
[i(dst_t::mc0)] = "mc0",
[i(dst_t::mc1)] = "mc1",
[i(dst_t::mc2)] = "mc2",
[i(dst_t::mc3)] = "mc3",
[i(dst_t::rx )] = "rx" ,
[i(dst_t::pl )] = "pl" ,
[i(dst_t::ra0)] = "ra0",
[i(dst_t::wa0)] = "wa0",
[i(dst_t::lop)] = "lop",
[i(dst_t::pc )] = "pc" ,
};
const std::string cond_string[] = {
[i(cond_t::z )] = "z" ,
[i(cond_t::nz )] = "nz" ,
[i(cond_t::s )] = "s" ,
[i(cond_t::ns )] = "ns" ,
[i(cond_t::c )] = "c" ,
[i(cond_t::nc )] = "nc" ,
[i(cond_t::t0 )] = "t0",
[i(cond_t::nt0)] = "nt0",
[i(cond_t::zs )] = "zs",
[i(cond_t::nzs)] = "nzs",
};
} // load
namespace dma {
const std::string hold_mode_string[] = {
[i(false)] = "dma",
[i(true )] = "dmah",
};
const std::string add_mode_string[] = {
[i(add_t::_0 )] = "0" ,
[i(add_t::_1 )] = "1" ,
[i(add_t::_2 )] = "2" ,
[i(add_t::_4 )] = "4" ,
[i(add_t::_8 )] = "8" ,
[i(add_t::_16)] = "16",
[i(add_t::_32)] = "32",
[i(add_t::_64)] = "64",
};
const std::string src_string[] = {
[i(src_t::mc0)] = "mc0",
[i(src_t::mc1)] = "mc1",
[i(src_t::mc2)] = "mc2",
[i(src_t::mc3)] = "mc3"
};
const std::string dst_string[] = {
[i(dst_t::mc0)] = "mc0",
[i(dst_t::mc1)] = "mc1",
[i(dst_t::mc2)] = "mc2",
[i(dst_t::mc3)] = "mc3",
[i(dst_t::prg)] = "prg",
};
const std::string length_ram_string[] = {
[i(ram_t::m0 )] = "m0" ,
[i(ram_t::m1 )] = "m1" ,
[i(ram_t::m2 )] = "m2" ,
[i(ram_t::m3 )] = "m3" ,
[i(ram_t::mc0)] = "mc0",
[i(ram_t::mc1)] = "mc1",
[i(ram_t::mc2)] = "mc2",
[i(ram_t::mc3)] = "mc3",
};
} // dma
namespace jump {
const std::string cond_string[] = {
[i(cond_t::z )] = "z" ,
[i(cond_t::nz )] = "nz",
[i(cond_t::s )] = "s" ,
[i(cond_t::ns )] = "ns",
[i(cond_t::c )] = "c" ,
[i(cond_t::nc )] = "nc",
[i(cond_t::t0 )] = "t0",
[i(cond_t::nt0)] = "nt0",
[i(cond_t::zs )] = "zs",
[i(cond_t::nzs)] = "nzs",
};
} // jump
}
#undef i