128 lines
4.2 KiB
C++
128 lines
4.2 KiB
C++
#include <map>
|
|
#include <string>
|
|
|
|
#include "instruction.hh"
|
|
#include "mneumonic.hh"
|
|
|
|
namespace tostring {
|
|
const std::unordered_map<op_t, std::string_view> op {
|
|
{op::ADC, mneumonic::op::ADC},
|
|
{op::AND, mneumonic::op::AND},
|
|
{op::ASL, mneumonic::op::ASL},
|
|
{op::BBR0, mneumonic::op::BBR0},
|
|
{op::BBR1, mneumonic::op::BBR1},
|
|
{op::BBR2, mneumonic::op::BBR2},
|
|
{op::BBR3, mneumonic::op::BBR3},
|
|
{op::BBR4, mneumonic::op::BBR4},
|
|
{op::BBR5, mneumonic::op::BBR5},
|
|
{op::BBR6, mneumonic::op::BBR6},
|
|
{op::BBR7, mneumonic::op::BBR7},
|
|
{op::BBS0, mneumonic::op::BBS0},
|
|
{op::BBS1, mneumonic::op::BBS1},
|
|
{op::BBS2, mneumonic::op::BBS2},
|
|
{op::BBS3, mneumonic::op::BBS3},
|
|
{op::BBS4, mneumonic::op::BBS4},
|
|
{op::BBS5, mneumonic::op::BBS5},
|
|
{op::BBS6, mneumonic::op::BBS6},
|
|
{op::BBS7, mneumonic::op::BBS7},
|
|
{op::BCC, mneumonic::op::BCC},
|
|
{op::BCS, mneumonic::op::BCS},
|
|
{op::BEQ, mneumonic::op::BEQ},
|
|
{op::BIT, mneumonic::op::BIT},
|
|
{op::BMI, mneumonic::op::BMI},
|
|
{op::BNE, mneumonic::op::BNE},
|
|
{op::BPL, mneumonic::op::BPL},
|
|
{op::BRA, mneumonic::op::BRA},
|
|
{op::BRK, mneumonic::op::BRK},
|
|
{op::BVC, mneumonic::op::BVC},
|
|
{op::BVS, mneumonic::op::BVS},
|
|
{op::CLC, mneumonic::op::CLC},
|
|
{op::CLD, mneumonic::op::CLD},
|
|
{op::CLI, mneumonic::op::CLI},
|
|
{op::CLV, mneumonic::op::CLV},
|
|
{op::CMP, mneumonic::op::CMP},
|
|
{op::CPX, mneumonic::op::CPX},
|
|
{op::CPY, mneumonic::op::CPY},
|
|
{op::DEC, mneumonic::op::DEC},
|
|
{op::DEX, mneumonic::op::DEX},
|
|
{op::DEY, mneumonic::op::DEY},
|
|
{op::EOR, mneumonic::op::EOR},
|
|
{op::INC, mneumonic::op::INC},
|
|
{op::INX, mneumonic::op::INX},
|
|
{op::INY, mneumonic::op::INY},
|
|
{op::JMP, mneumonic::op::JMP},
|
|
{op::JSR, mneumonic::op::JSR},
|
|
{op::LDA, mneumonic::op::LDA},
|
|
{op::LDX, mneumonic::op::LDX},
|
|
{op::LDY, mneumonic::op::LDY},
|
|
{op::LSR, mneumonic::op::LSR},
|
|
{op::NOP, mneumonic::op::NOP},
|
|
{op::ORA, mneumonic::op::ORA},
|
|
{op::PHA, mneumonic::op::PHA},
|
|
{op::PHP, mneumonic::op::PHP},
|
|
{op::PHX, mneumonic::op::PHX},
|
|
{op::PHY, mneumonic::op::PHY},
|
|
{op::PLA, mneumonic::op::PLA},
|
|
{op::PLP, mneumonic::op::PLP},
|
|
{op::PLX, mneumonic::op::PLX},
|
|
{op::PLY, mneumonic::op::PLY},
|
|
{op::RMB0, mneumonic::op::RMB0},
|
|
{op::RMB1, mneumonic::op::RMB1},
|
|
{op::RMB2, mneumonic::op::RMB2},
|
|
{op::RMB3, mneumonic::op::RMB3},
|
|
{op::RMB4, mneumonic::op::RMB4},
|
|
{op::RMB5, mneumonic::op::RMB5},
|
|
{op::RMB6, mneumonic::op::RMB6},
|
|
{op::RMB7, mneumonic::op::RMB7},
|
|
{op::ROL, mneumonic::op::ROL},
|
|
{op::ROR, mneumonic::op::ROR},
|
|
{op::RTI, mneumonic::op::RTI},
|
|
{op::RTS, mneumonic::op::RTS},
|
|
{op::SBC, mneumonic::op::SBC},
|
|
{op::SEC, mneumonic::op::SEC},
|
|
{op::SED, mneumonic::op::SED},
|
|
{op::SEI, mneumonic::op::SEI},
|
|
{op::SMB0, mneumonic::op::SMB0},
|
|
{op::SMB1, mneumonic::op::SMB1},
|
|
{op::SMB2, mneumonic::op::SMB2},
|
|
{op::SMB3, mneumonic::op::SMB3},
|
|
{op::SMB4, mneumonic::op::SMB4},
|
|
{op::SMB5, mneumonic::op::SMB5},
|
|
{op::SMB6, mneumonic::op::SMB6},
|
|
{op::SMB7, mneumonic::op::SMB7},
|
|
{op::STA, mneumonic::op::STA},
|
|
{op::STP, mneumonic::op::STP},
|
|
{op::STX, mneumonic::op::STX},
|
|
{op::STY, mneumonic::op::STY},
|
|
{op::STZ, mneumonic::op::STZ},
|
|
{op::TAX, mneumonic::op::TAX},
|
|
{op::TAY, mneumonic::op::TAY},
|
|
{op::TRB, mneumonic::op::TRB},
|
|
{op::TSB, mneumonic::op::TSB},
|
|
{op::TSX, mneumonic::op::TSX},
|
|
{op::TXA, mneumonic::op::TXA},
|
|
{op::TXS, mneumonic::op::TXS},
|
|
{op::TYA, mneumonic::op::TYA},
|
|
{op::WAI, mneumonic::op::WAI},
|
|
};
|
|
|
|
const std::unordered_map<amode_t, std::string_view> mode {
|
|
{mode::A, mneumonic::mode::A},
|
|
{mode::AII, mneumonic::mode::AII},
|
|
{mode::AIX, mneumonic::mode::AIX},
|
|
{mode::AIY, mneumonic::mode::AIY},
|
|
{mode::AI, mneumonic::mode::AI},
|
|
{mode::ACC, mneumonic::mode::ACC},
|
|
{mode::IMM, mneumonic::mode::IMM},
|
|
{mode::I, mneumonic::mode::I},
|
|
{mode::R, mneumonic::mode::R},
|
|
{mode::S, mneumonic::mode::S},
|
|
{mode::ZP, mneumonic::mode::ZP},
|
|
{mode::ZPII, mneumonic::mode::ZPII},
|
|
{mode::ZPX, mneumonic::mode::ZPX},
|
|
{mode::ZPY, mneumonic::mode::ZPY},
|
|
{mode::ZPI, mneumonic::mode::ZPI},
|
|
{mode::ZPIY, mneumonic::mode::ZPIY},
|
|
};
|
|
}
|