📄 arm7tdmi-olut.cpp
字号:
/*************************************************************************** DSemu - The Next Generation ** Portable ARM7TDMI core: Opcode lookup table [arm7tdmi-olut.cpp] ** Copyright Imran Nazar, 2005; released under the BSD public licence. ***************************************************************************/#include "arm7tdmi.h"//---Conditional execution lookup table------------------------------------// Addressed on bits 31-28 of the opcode// Each of these instructions returns 0 or 1 dependent on the flags.const ARM7TDMI::intfptr ARM7TDMI::condLUT[16]={ condEQ, condNE, condCS, condCC, condMI, condPL, condVS, condVC, condHI, condLS, condGE, condLT, condGT, condLE, condAL, condNV};//---The 4096-entry opcode table-------------------------------------------// Addressed on bits [27-20][7-4] of the opcode// No coprocessor support exists in ARM7TDMI, hence the opcodes are UNI.// Opcodes undefined in ARMv4 but replaced in ARMv5 are marked.const ARM7TDMI::opfptr ARM7TDMI::OLUT[4096]={ /*0x00*/ opANDlli , opANDllr , opANDlri , opANDlrr , opANDari , opANDarr , opANDrri , opANDrrr , opANDlli , opMUL , opANDlri , opSTRHptrm , opANDari , opUND, // Defined in ARM5 opANDrri , opUND, // Defined in ARM5 /*0x01*/ opANDSlli , opANDSllr , opANDSlri , opANDSlrr , opANDSari , opANDSarr , opANDSrri , opANDSrrr , opANDSlli , opMULS , opANDSlri , opLDRHptrm , opANDSari , opLDRSBptrm , opANDSrri , opLDRSHptrm , /*0x02*/ opEORlli , opEORllr , opEORlri , opEORlrr , opEORari , opEORarr , opEORrri , opEORrrr , opEORlli , opMLA , opEORlri , opSTRHptrm , opEORari , opUND, // Defined in ARM5 opEORrri , opUND, // Defined in ARM5 /*0x03*/ opEORSlli , opEORSllr , opEORSlri , opEORSlrr , opEORSari , opEORSarr , opEORSrri , opEORSrrr , opEORSlli , opMLAS , opEORSlri , opLDRHptrm , opEORSari , opLDRSBptrm , opEORSrri , opLDRSHptrm , /*0x04*/ opSUBlli , opSUBllr , opSUBlri , opSUBlrr , opSUBari , opSUBarr , opSUBrri , opSUBrrr , opSUBlli , opUNP , // Unallocated opSUBlri , opSTRHptim , opSUBari , opUND, // Defined in ARM5 opSUBrri , opUND, // Defined in ARM5 /*0x05*/ opSUBSlli , opSUBSllr , opSUBSlri , opSUBSlrr , opSUBSari , opSUBSarr , opSUBSrri , opSUBSrrr , opSUBSlli , opUNL , // Unallocated [reindexed] opSUBSlri , opLDRHptim , opSUBSari , opLDRSBptim , opSUBSrri , opLDRSHptim , /*0x06*/ opRSBlli , opRSBllr , opRSBlri , opRSBlrr , opRSBari , opRSBarr , opRSBrri , opRSBrrr , opRSBlli , opUNP , // Unallocated opRSBlri , opSTRHptim , opRSBari , opUND, // Defined in ARM5 opRSBrri , opUND, // Defined in ARM5 /*0x07*/ opRSBSlli , opRSBSllr , opRSBSlri , opRSBSlrr , opRSBSari , opRSBSarr , opRSBSrri , opRSBSrrr , opRSBSlli , opUNP , // Unallocated opRSBSlri , opLDRHptim , opRSBSari , opLDRSBptim , opRSBSrri , opLDRSHptim , /*0x08*/ opADDlli , opADDllr , opADDlri , opADDlrr , opADDari , opADDarr , opADDrri , opADDrrr , opADDlli , opUMULL , opADDlri , opSTRHptrp , opADDari , opUND, // Defined in ARM5 opADDrri , opUND, // Defined in ARM5 /*0x09*/ opADDSlli , opADDSllr , opADDSlri , opADDSlrr , opADDSari , opADDSarr , opADDSrri , opADDSrrr , opADDSlli , opUMULLS , opADDSlri , opLDRHptrp , opADDSari , opLDRSBptrp , opADDSrri , opLDRSHptrp , /*0x0A*/ opADClli , opADCllr , opADClri , opADClrr , opADCari , opADCarr , opADCrri , opADCrrr , opADClli , opUMLAL , opADClri , opSTRHptrp , opADCari , opUND, // Defined in ARM5 opADCrri , opUND, // Defined in ARM5 /*0x0B*/ opADCSlli , opADCSllr , opADCSlri , opADCSlrr , opADCSari , opADCSarr , opADCSrri , opADCSrrr , opADCSlli , opUMLALS , opADCSlri , opLDRHptrp , opADCSari , opLDRSBptrp , opADCSrri , opLDRSHptrp , /*0x0C*/ opSBClli , opSBCllr , opSBClri , opSBClrr , opSBCari , opSBCarr , opSBCrri , opSBCrrr , opSBClli , opSMULL , opSBClri , opSTRHptip , opSBCari , opUND, // Defined in ARM5 opSBCrri , opUND, // Defined in ARM5 /*0x0D*/ opSBCSlli , opSBCSllr , opSBCSlri , opSBCSlrr , opSBCSari , opSBCSarr , opSBCSrri , opSBCSrrr , opSBCSlli , opSMULLS , opSBCSlri , opLDRHptip , opSBCSari , opLDRSBptip , opSBCSrri , opLDRSHptip , /*0x0E*/ opRSClli , opRSCllr , opRSClri , opRSClrr , opRSCari , opRSCarr , opRSCrri , opRSCrrr , opRSClli , opSMLAL , opRSClri , opSTRHptip , opRSCari , opUND, // Defined in ARM5 opRSCrri , opUND, // Defined in ARM5 /*0x0F*/ opRSCSlli , opRSCSllr , opRSCSlri , opRSCSlrr , opRSCSari , opRSCSarr , opRSCSrri , opRSCSrrr , opRSCSlli , opSMLALS , opRSCSlri , opLDRHptip , opRSCSari , opLDRSBptip , opRSCSrri , opLDRSHptip , /*0x10*/ opMRSrc , opUNP , // Unallocated opUNP , // Unallocated opUNP , // Unallocated opUNP , // Unallocated opUND , // Defined in ARM5 opUNP , // Unallocated opUNP , // Unallocated opUND , // Defined in ARM5 opSWP , opUND , // Defined in ARM5 opSTRHofrm , opUND , // Defined in ARM5 opUND , // Defined in ARM5 opUND , // Defined in ARM5 opUND , // Defined in ARM5 /*0x11*/ opTSTSlli , opTSTSllr , opTSTSlri , opTSTSlrr , opTSTSari , opTSTSarr , opTSTSrri , opTSTSrrr , opTSTSlli , opUNP , // Unallocated opTSTSlri , opLDRHofrm , opTSTSari , opLDRSBofrm , opTSTSrri , opLDRSHofrm , /*0x12*/ opMSRrc , opBX , opUNP , // Unallocated opUND , // Defined in ARM5T opUNP , // Unallocated opUNP , // Defined in ARM5E! opUNP , // Unallocated opUND , // Defined in ARM5 opUNP , // Defined in ARM5E! opUNP , // Unallocated opUNP , // Defined in ARM5E! opSTRHprrm , opUNP , // Defined in ARM5E! opUND, // Defined in ARM5 opUNP , // Defined in ARM5E! opUND, // Defined in ARM5 /*0x13*/ opTEQSlli , opTEQSllr , opTEQSlri , opTEQSlrr , opTEQSari , opTEQSarr , opTEQSrri , opTEQSrrr , opTEQSlli , opUNP , // Unallocated opTEQSlri , opLDRHprrm , opTEQSari , opLDRSBprrm , opTEQSrri , opLDRSHprrm , /*0x14*/ opMRSrs , opUNP , // Unallocated opUNP , // Unallocated opUNP , // Unallocated opUNP , // Unallocated opUNP , // Defined in ARM5E! opUNP , // Unallocated opUNP , // Unallocated opUNP , // Defined in ARM5E! opSWPB , opUNP , // Defined in ARM5E! opSTRHofim , opUNP , // Defined in ARM5E! opUND, // Defined in ARM5 opUNP , // Defined in ARM5E! opUND, // Defined in ARM5 /*0x15*/ opCMPSlli , opCMPSllr , opCMPSlri , opCMPSlrr , opCMPSari , opCMPSarr , opCMPSrri , opCMPSrrr , opCMPSlli , opUNP , // Unallocated opCMPSlri , opLDRHofim , opCMPSari , opLDRSBofim , opCMPSrri , opLDRSHofim , /*0x16*/ opMSRrs , opUND , // Defined in ARM5 opUNP , // Unallocated opUNP , // Unallocated opUNP , // Unallocated opUNP , // Defined in ARM5E! opUNP , // Unallocated opUNP , // Unallocated opUND, // Defined in ARM5 opUNP , // Unallocated opUND, // Defined in ARM5 opSTRHprim , opUND, // Defined in ARM5 opUND, // Defined in ARM5 opUND, // Defined in ARM5 opUND, // Defined in ARM5 /*0x17*/ opCMNSlli , opCMNSllr , opCMNSlri , opCMNSlrr , opCMNSari , opCMNSarr , opCMNSrri , opCMNSrrr , opCMNSlli , opUNP , // Unallocated opCMNSlri , opLDRHprim , opCMNSari , opLDRSBprim , opCMNSrri , opLDRSHprim , /*0x18*/ opORRlli , opORRllr , opORRlri , opORRlrr , opORRari , opORRarr , opORRrri , opORRrrr , opORRlli , opUNP , // Unallocated opORRlri , opSTRHofrp , opORRari , opUND, // Defined in ARM5 opORRrri , opUND, // Defined in ARM5 /*0x19*/ opORRSlli , opORRSllr , opORRSlri , opORRSlrr , opORRSari , opORRSarr , opORRSrri , opORRSrrr , opORRSlli , opUNP , // Unallocated opORRSlri , opLDRHofrp , opORRSari , opLDRSBofrp , opORRSrri , opLDRSHofrp , /*0x1A*/ opMOVlli , opMOVllr , opMOVlri , opMOVlrr , opMOVari , opMOVarr , opMOVrri , opMOVrrr , opMOVlli , opUNP , // Unallocated opMOVlri , opSTRHprrp , opMOVari , opUND, // Defined in ARM5 opMOVrri , opUND, // Defined in ARM5 /*0x1B*/ opMOVSlli , opMOVSllr , opMOVSlri , opMOVSlrr , opMOVSari , opMOVSarr , opMOVSrri , opMOVSrrr , opMOVSlli , opUNP , // Unallocated opMOVSlri , opLDRHprrp , opMOVSari , opLDRSBprrp , opMOVSrri , opLDRSHprrp , /*0x1C*/ opBIClli , opBICllr , opBIClri , opBIClrr , opBICari , opBICarr , opBICrri , opBICrrr , opBIClli , opUNP , // Unallocated opBIClri , opSTRHofip , opBICari , opUND, // Defined in ARM5 opBICrri , opUND, // Defined in ARM5 /*0x1D*/ opBICSlli , opBICSllr , opBICSlri , opBICSlrr , opBICSari , opBICSarr , opBICSrri , opBICSrrr , opBICSlli , opUNP , // Unallocated opBICSlri , opLDRHofip , opBICSari , opLDRSBofip , opBICSrri , opLDRSHofip , /*0x1E*/ opMVNlli , opMVNllr , opMVNlri , opMVNlrr , opMVNari , opMVNarr , opMVNrri , opMVNrrr , opMVNlli , opUNP , // Unallocated opMVNlri , opSTRHprip , opMVNari , opUND, // Defined in ARM5 opMVNrri , opUND, // Defined in ARM5 /*0x1F*/ opMVNSlli , opMVNSllr , opMVNSlri , opMVNSlrr , opMVNSari , opMVNSarr , opMVNSrri , opMVNSrrr , opMVNSlli , opUNP , // Unallocated opMVNSlri , opLDRHprip , opMVNSari , opLDRSBprip , opMVNSrri , opLDRSHprip , /*0x20*/ opANDimm , opANDimm , opANDimm , opANDimm , opANDimm , opANDimm , opANDimm , opANDimm , opANDimm , opANDimm , opANDimm , opANDimm , opANDimm , opANDimm , opANDimm , opANDimm , /*0x21*/ opANDSimm , opANDSimm , opANDSimm , opANDSimm , opANDSimm , opANDSimm , opANDSimm , opANDSimm , opANDSimm , opANDSimm , opANDSimm , opANDSimm , opANDSimm , opANDSimm , opANDSimm , opANDSimm , /*0x22*/ opEORimm , opEORimm , opEORimm , opEORimm , opEORimm , opEORimm , opEORimm , opEORimm , opEORimm , opEORimm , opEORimm , opEORimm , opEORimm , opEORimm , opEORimm , opEORimm , /*0x23*/ opEORSimm , opEORSimm , opEORSimm , opEORSimm , opEORSimm , opEORSimm , opEORSimm , opEORSimm , opEORSimm , opEORSimm , opEORSimm , opEORSimm , opEORSimm , opEORSimm , opEORSimm , opEORSimm , /*0x24*/ opSUBimm , opSUBimm , opSUBimm , opSUBimm , opSUBimm , opSUBimm , opSUBimm , opSUBimm , opSUBimm ,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -