mirror of
https://github.com/libretro/Play-.git
synced 2024-11-27 18:50:28 +00:00
42 lines
804 B
C++
42 lines
804 B
C++
#pragma once
|
|
|
|
#include "Types.h"
|
|
#include "MipsJitter.h"
|
|
|
|
class CMIPS;
|
|
|
|
enum MIPS_REGSIZE
|
|
{
|
|
MIPS_REGSIZE_32 = 0,
|
|
MIPS_REGSIZE_64 = 1,
|
|
};
|
|
|
|
enum MIPS_BRANCH_TYPE
|
|
{
|
|
MIPS_BRANCH_NONE = 0,
|
|
MIPS_BRANCH_NORMAL = 1,
|
|
MIPS_BRANCH_NODELAY = 2,
|
|
};
|
|
|
|
class CMIPSInstructionFactory
|
|
{
|
|
public:
|
|
CMIPSInstructionFactory(MIPS_REGSIZE);
|
|
virtual ~CMIPSInstructionFactory() = default;
|
|
virtual void CompileInstruction(uint32, CMipsJitter*, CMIPS*) = 0;
|
|
|
|
protected:
|
|
void ComputeMemAccessAddr();
|
|
void Branch(Jitter::CONDITION);
|
|
void BranchLikely(Jitter::CONDITION);
|
|
|
|
void Illegal();
|
|
void SetupQuickVariables(uint32, CMipsJitter*, CMIPS*);
|
|
|
|
CMipsJitter* m_codeGen = nullptr;
|
|
CMIPS* m_pCtx = nullptr;
|
|
uint32 m_nOpcode = 0;
|
|
uint32 m_nAddress = 0;
|
|
MIPS_REGSIZE m_regSize;
|
|
};
|