rpcsx/rpcs3/Emu/Cell/PPUInterpreter.h

45 lines
878 B
C
Raw Normal View History

#pragma once
2016-04-14 01:09:41 +02:00
#include "PPUOpcodes.h"
2014-08-22 23:15:02 +02:00
class ppu_thread;
using ppu_intrp_func_t = void(*)(ppu_thread& ppu_, ppu_opcode_t op, be_t<u32>* this_op, struct ppu_intrp_func* next_fn);
2017-12-19 22:01:03 +01:00
struct ppu_intrp_func
{
ppu_intrp_func_t fn;
};
2016-04-14 01:09:41 +02:00
template <typename IT>
struct ppu_interpreter_t;
2017-12-19 22:01:03 +01:00
namespace asmjit
{
struct ppu_builder;
}
struct ppu_interpreter_rt_base
{
protected:
std::unique_ptr<ppu_interpreter_t<ppu_intrp_func_t>> ptrs;
ppu_interpreter_rt_base() noexcept;
ppu_interpreter_rt_base(const ppu_interpreter_rt_base&) = delete;
ppu_interpreter_rt_base& operator=(const ppu_interpreter_rt_base&) = delete;
virtual ~ppu_interpreter_rt_base();
2016-04-14 01:09:41 +02:00
};
struct ppu_interpreter_rt : ppu_interpreter_rt_base
{
ppu_interpreter_rt() noexcept;
ppu_intrp_func_t decode(u32 op) const noexcept;
private:
ppu_decoder<ppu_interpreter_t<ppu_intrp_func_t>, ppu_intrp_func_t> table;
};