Files
ircolib/core/broadway.hpp
T

39 lines
933 B
C++

#pragma once
#include <ircolib/types.hpp>
#include <capstone/capstone.h>
#include <xbyak/xbyak.h>
#include <array>
namespace weee::core {
struct mem;
struct broadway {
broadway();
void set_pc(ircolib::u32);
void run(mem &);
private:
ircolib::u32 fetch(mem &);
void print_disasm(ircolib::u32);
void execute(ircolib::u32, mem &);
bool disasm_available = true;
ircolib::u32 pc = 0, lr = 0, ctr = 0;
std::array<ircolib::u32, 32> gpr{};
// ircolib::u32 const_gpr_lookup{};
csh capstone;
// Xbyak::CodeGenerator code;
// instructions
void addis(ircolib::u32);
void addi(ircolib::u32);
void ori(ircolib::u32);
void bx(ircolib::u32);
void bcx(ircolib::u32);
void move_spr(ircolib::u32);
void stw(ircolib::u32, mem &);
void stwu(ircolib::u32, mem &);
void sth(ircolib::u32, mem &);
void lwz(ircolib::u32, mem &);
};
} // namespace weee::core