rpcsx/rpcs3/Emu/ARMv7/ARMv7Opcodes.h

50 lines
820 B
C++

#pragma once
static const char* g_arm_reg_name[16] =
{
"r0", "r1", "r2", "r3",
"r4", "r5", "r6", "r7",
"r8", "r9", "r10", "r11",
"r12", "sp", "lr", "pc",
};
namespace ARMv7_opcodes
{
enum ARMv7_T1Opcodes
{
T1_CBZ = 0xb,
T1_B = 0xd,
T1_PUSH = 0x1d,
T1_POP = 0x5e,
T1_NOP = 0xBF00,
};
enum ARMv7_T2Opcodes
{
T2_B = 0x1c,
T2_PUSH = 0xe92d,
T2_POP = 0xe8bd,
};
enum ARMv7_T3Opcodes
{
T3_B = 0x1e,
};
}
class ARMv7Opcodes
{
public:
virtual void NULL_OP() = 0;
virtual void NOP() = 0;
virtual void PUSH(u16 regs_list) = 0;
virtual void POP(u16 regs_list) = 0;
virtual void B(u8 cond, u32 imm, u8 intstr_size) = 0;
virtual void CBZ(u8 op, u32 imm, u8 rn, u8 intstr_size) = 0;
virtual void BL(u32 imm, u8 intstr_size)=0;
virtual void UNK(const u16 code0, const u16 code1) = 0;
};