⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arm-dp.cpp

📁 一个任天堂掌上游戏机NDS的源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
OPC opMVNarr() { addrDPrn; addrDParr; opMVN; return 2; }OPC opMVNrri() { addrDPrn; addrDPrri; opMVN; return 2; }OPC opMVNrrr() { addrDPrn; addrDPrrr; opMVN; return 2; }OPC opMVNimm() { addrDPrn; addrDPimm; opMVN; return 1; }OPC opANDSlli() { addrDPrn; addrDPlli; opAND; flagDPnz; cpsrDP; return 2; }OPC opANDSllr() { addrDPrn; addrDPllr; opAND; flagDPnz; cpsrDP; return 2; }OPC opANDSlri() { addrDPrn; addrDPlri; opAND; flagDPnz; cpsrDP; return 2; }OPC opANDSlrr() { addrDPrn; addrDPlrr; opAND; flagDPnz; cpsrDP; return 2; }OPC opANDSari() { addrDPrn; addrDPari; opAND; flagDPnz; cpsrDP; return 2; }OPC opANDSarr() { addrDPrn; addrDParr; opAND; flagDPnz; cpsrDP; return 2; }OPC opANDSrri() { addrDPrn; addrDPrri; opAND; flagDPnz; cpsrDP; return 2; }OPC opANDSrrr() { addrDPrn; addrDPrrr; opAND; flagDPnz; cpsrDP; return 2; }OPC opANDSimm() { addrDPrn; addrDPimm; opAND; flagDPnz; cpsrDP; return 1; }OPC opEORSlli() { addrDPrn; addrDPlli; opEOR; flagDPnz; cpsrDP; return 2; }OPC opEORSllr() { addrDPrn; addrDPllr; opEOR; flagDPnz; cpsrDP; return 2; }OPC opEORSlri() { addrDPrn; addrDPlri; opEOR; flagDPnz; cpsrDP; return 2; }OPC opEORSlrr() { addrDPrn; addrDPlrr; opEOR; flagDPnz; cpsrDP; return 2; }OPC opEORSari() { addrDPrn; addrDPari; opEOR; flagDPnz; cpsrDP; return 2; }OPC opEORSarr() { addrDPrn; addrDParr; opEOR; flagDPnz; cpsrDP; return 2; }OPC opEORSrri() { addrDPrn; addrDPrri; opEOR; flagDPnz; cpsrDP; return 2; }OPC opEORSrrr() { addrDPrn; addrDPrrr; opEOR; flagDPnz; cpsrDP; return 2; }OPC opEORSimm() { addrDPrn; addrDPimm; opEOR; flagDPnz; cpsrDP; return 1; }OPC opSUBSlli() { addrDPrn; addrDPlli; opSUB; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 2; }OPC opSUBSllr() { addrDPrn; addrDPllr; opSUB; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 2; }OPC opSUBSlri() { addrDPrn; addrDPlri; opSUB; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 2; }OPC opSUBSlrr() { addrDPrn; addrDPlrr; opSUB; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 2; }OPC opSUBSari() { addrDPrn; addrDPari; opSUB; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 2; }OPC opSUBSarr() { addrDPrn; addrDParr; opSUB; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 2; }OPC opSUBSrri() { addrDPrn; addrDPrri; opSUB; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 2; }OPC opSUBSrrr() { addrDPrn; addrDPrrr; opSUB; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 2; }OPC opSUBSimm() { addrDPrn; addrDPimm; opSUB; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 1; }OPC opRSBSlli() { addrDPrn; addrDPlli; opRSB; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 2; }OPC opRSBSllr() { addrDPrn; addrDPllr; opRSB; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 2; }OPC opRSBSlri() { addrDPrn; addrDPlri; opRSB; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 2; }OPC opRSBSlrr() { addrDPrn; addrDPlrr; opRSB; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 2; }OPC opRSBSari() { addrDPrn; addrDPari; opRSB; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 2; }OPC opRSBSarr() { addrDPrn; addrDParr; opRSB; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 2; }OPC opRSBSrri() { addrDPrn; addrDPrri; opRSB; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 2; }OPC opRSBSrrr() { addrDPrn; addrDPrrr; opRSB; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 2; }OPC opRSBSimm() { addrDPrn; addrDPimm; opRSB; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 1; }OPC opADDSlli() { addrDPrn; addrDPlli; opADD; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 2; }OPC opADDSllr() { addrDPrn; addrDPllr; opADD; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 2; }OPC opADDSlri() { addrDPrn; addrDPlri; opADD; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 2; }OPC opADDSlrr() { addrDPrn; addrDPlrr; opADD; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 2; }OPC opADDSari() { addrDPrn; addrDPari; opADD; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 2; }OPC opADDSarr() { addrDPrn; addrDParr; opADD; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 2; }OPC opADDSrri() { addrDPrn; addrDPrri; opADD; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 2; }OPC opADDSrrr() { addrDPrn; addrDPrrr; opADD; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 2; }OPC opADDSimm() { addrDPrn; addrDPimm; opADD; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 1; }OPC opADCSlli() { addrDPrn; addrDPlli; opADC; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 2; }OPC opADCSllr() { addrDPrn; addrDPllr; opADC; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 2; }OPC opADCSlri() { addrDPrn; addrDPlri; opADC; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 2; }OPC opADCSlrr() { addrDPrn; addrDPlrr; opADC; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 2; }OPC opADCSari() { addrDPrn; addrDPari; opADC; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 2; }OPC opADCSarr() { addrDPrn; addrDParr; opADC; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 2; }OPC opADCSrri() { addrDPrn; addrDPrri; opADC; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 2; }OPC opADCSrrr() { addrDPrn; addrDPrrr; opADC; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 2; }OPC opADCSimm() { addrDPrn; addrDPimm; opADC; flagDPnz; flagDPcADD; flagDPvADD; cpsrDP; return 1; }OPC opSBCSlli() { addrDPrn; addrDPlli; opSBC; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 2; }OPC opSBCSllr() { addrDPrn; addrDPllr; opSBC; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 2; }OPC opSBCSlri() { addrDPrn; addrDPlri; opSBC; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 2; }OPC opSBCSlrr() { addrDPrn; addrDPlrr; opSBC; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 2; }OPC opSBCSari() { addrDPrn; addrDPari; opSBC; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 2; }OPC opSBCSarr() { addrDPrn; addrDParr; opSBC; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 2; }OPC opSBCSrri() { addrDPrn; addrDPrri; opSBC; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 2; }OPC opSBCSrrr() { addrDPrn; addrDPrrr; opSBC; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 2; }OPC opSBCSimm() { addrDPrn; addrDPimm; opSBC; flagDPnz; flagDPcSUB; flagDPvSUB; cpsrDP; return 1; }OPC opRSCSlli() { addrDPrn; addrDPlli; opRSC; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 2; }OPC opRSCSllr() { addrDPrn; addrDPllr; opRSC; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 2; }OPC opRSCSlri() { addrDPrn; addrDPlri; opRSC; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 2; }OPC opRSCSlrr() { addrDPrn; addrDPlrr; opRSC; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 2; }OPC opRSCSari() { addrDPrn; addrDPari; opRSC; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 2; }OPC opRSCSarr() { addrDPrn; addrDParr; opRSC; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 2; }OPC opRSCSrri() { addrDPrn; addrDPrri; opRSC; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 2; }OPC opRSCSrrr() { addrDPrn; addrDPrrr; opRSC; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 2; }OPC opRSCSimm() { addrDPrn; addrDPimm; opRSC; flagDPnz; flagDPcRSB; flagDPvRSB; cpsrDP; return 1; }OPC opTSTSlli() { addrDPrn; addrDPlli; opTST; flagDPnzTST; cpsrDP; return 2; }OPC opTSTSllr() { addrDPrn; addrDPllr; opTST; flagDPnzTST; cpsrDP; return 2; }OPC opTSTSlri() { addrDPrn; addrDPlri; opTST; flagDPnzTST; cpsrDP; return 2; }OPC opTSTSlrr() { addrDPrn; addrDPlrr; opTST; flagDPnzTST; cpsrDP; return 2; }OPC opTSTSari() { addrDPrn; addrDPari; opTST; flagDPnzTST; cpsrDP; return 2; }OPC opTSTSarr() { addrDPrn; addrDParr; opTST; flagDPnzTST; cpsrDP; return 2; }OPC opTSTSrri() { addrDPrn; addrDPrri; opTST; flagDPnzTST; cpsrDP; return 2; }OPC opTSTSrrr() { addrDPrn; addrDPrrr; opTST; flagDPnzTST; cpsrDP; return 2; }OPC opTSTSimm() { addrDPrn; addrDPimm; opTST; flagDPnzTST; cpsrDP; return 1; }OPC opTEQSlli() { addrDPrn; addrDPlli; opTEQ; flagDPnzTST; cpsrDP; return 2; }OPC opTEQSllr() { addrDPrn; addrDPllr; opTEQ; flagDPnzTST; cpsrDP; return 2; }OPC opTEQSlri() { addrDPrn; addrDPlri; opTEQ; flagDPnzTST; cpsrDP; return 2; }OPC opTEQSlrr() { addrDPrn; addrDPlrr; opTEQ; flagDPnzTST; cpsrDP; return 2; }OPC opTEQSari() { addrDPrn; addrDPari; opTEQ; flagDPnzTST; cpsrDP; return 2; }OPC opTEQSarr() { addrDPrn; addrDParr; opTEQ; flagDPnzTST; cpsrDP; return 2; }OPC opTEQSrri() { addrDPrn; addrDPrri; opTEQ; flagDPnzTST; cpsrDP; return 2; }OPC opTEQSrrr() { addrDPrn; addrDPrrr; opTEQ; flagDPnzTST; cpsrDP; return 2; }OPC opTEQSimm() { addrDPrn; addrDPimm; opTEQ; flagDPnzTST; cpsrDP; return 1; }OPC opCMPSlli() { addrDPrn; addrDPlli; opCMP; flagDPnzTST; flagDPcCMP; flagDPvCMP; cpsrDP; return 2; }OPC opCMPSllr() { addrDPrn; addrDPllr; opCMP; flagDPnzTST; flagDPcCMP; flagDPvCMP; cpsrDP; return 2; }OPC opCMPSlri() { addrDPrn; addrDPlri; opCMP; flagDPnzTST; flagDPcCMP; flagDPvCMP; cpsrDP; return 2; }OPC opCMPSlrr() { addrDPrn; addrDPlrr; opCMP; flagDPnzTST; flagDPcCMP; flagDPvCMP; cpsrDP; return 2; }OPC opCMPSari() { addrDPrn; addrDPari; opCMP; flagDPnzTST; flagDPcCMP; flagDPvCMP; cpsrDP; return 2; }OPC opCMPSarr() { addrDPrn; addrDParr; opCMP; flagDPnzTST; flagDPcCMP; flagDPvCMP; cpsrDP; return 2; }OPC opCMPSrri() { addrDPrn; addrDPrri; opCMP; flagDPnzTST; flagDPcCMP; flagDPvCMP; cpsrDP; return 2; }OPC opCMPSrrr() { addrDPrn; addrDPrrr; opCMP; flagDPnzTST; flagDPcCMP; flagDPvCMP; cpsrDP; return 2; }OPC opCMPSimm() { addrDPrn; addrDPimm; opCMP; flagDPnzTST; flagDPcCMP; flagDPvCMP; cpsrDP; return 1; }OPC opCMNSlli() { addrDPrn; addrDPlli; opCMN; flagDPnzTST; flagDPcCMN; flagDPvCMN; cpsrDP; return 2; }OPC opCMNSllr() { addrDPrn; addrDPllr; opCMN; flagDPnzTST; flagDPcCMN; flagDPvCMN; cpsrDP; return 2; }OPC opCMNSlri() { addrDPrn; addrDPlri; opCMN; flagDPnzTST; flagDPcCMN; flagDPvCMN; cpsrDP; return 2; }OPC opCMNSlrr() { addrDPrn; addrDPlrr; opCMN; flagDPnzTST; flagDPcCMN; flagDPvCMN; cpsrDP; return 2; }OPC opCMNSari() { addrDPrn; addrDPari; opCMN; flagDPnzTST; flagDPcCMN; flagDPvCMN; cpsrDP; return 2; }OPC opCMNSarr() { addrDPrn; addrDParr; opCMN; flagDPnzTST; flagDPcCMN; flagDPvCMN; cpsrDP; return 2; }OPC opCMNSrri() { addrDPrn; addrDPrri; opCMN; flagDPnzTST; flagDPcCMN; flagDPvCMN; cpsrDP; return 2; }OPC opCMNSrrr() { addrDPrn; addrDPrrr; opCMN; flagDPnzTST; flagDPcCMN; flagDPvCMN; cpsrDP; return 2; }OPC opCMNSimm() { addrDPrn; addrDPimm; opCMN; flagDPnzTST; flagDPcCMN; flagDPvCMN; cpsrDP; return 1; }OPC opORRSlli() { addrDPrn; addrDPlli; opORR; flagDPnz; cpsrDP; return 2; }OPC opORRSllr() { addrDPrn; addrDPllr; opORR; flagDPnz; cpsrDP; return 2; }OPC opORRSlri() { addrDPrn; addrDPlri; opORR; flagDPnz; cpsrDP; return 2; }OPC opORRSlrr() { addrDPrn; addrDPlrr; opORR; flagDPnz; cpsrDP; return 2; }OPC opORRSari() { addrDPrn; addrDPari; opORR; flagDPnz; cpsrDP; return 2; }OPC opORRSarr() { addrDPrn; addrDParr; opORR; flagDPnz; cpsrDP; return 2; }OPC opORRSrri() { addrDPrn; addrDPrri; opORR; flagDPnz; cpsrDP; return 2; }OPC opORRSrrr() { addrDPrn; addrDPrrr; opORR; flagDPnz; cpsrDP; return 2; }OPC opORRSimm() { addrDPrn; addrDPimm; opORR; flagDPnz; cpsrDP; return 1; }OPC opMOVSlli() { addrDPrn; addrDPlli; opMOV; flagDPnz; cpsrDP; return 2; }OPC opMOVSllr() { addrDPrn; addrDPllr; opMOV; flagDPnz; cpsrDP; return 2; }OPC opMOVSlri() { addrDPrn; addrDPlri; opMOV; flagDPnz; cpsrDP; return 2; }OPC opMOVSlrr() { addrDPrn; addrDPlrr; opMOV; flagDPnz; cpsrDP; return 2; }OPC opMOVSari() { addrDPrn; addrDPari; opMOV; flagDPnz; cpsrDP; return 2; }OPC opMOVSarr() { addrDPrn; addrDParr; opMOV; flagDPnz; cpsrDP; return 2; }OPC opMOVSrri() { addrDPrn; addrDPrri; opMOV; flagDPnz; cpsrDP; return 2; }OPC opMOVSrrr() { addrDPrn; addrDPrrr; opMOV; flagDPnz; cpsrDP; return 2; }OPC opMOVSimm() { addrDPrn; addrDPimm; opMOV; flagDPnz; cpsrDP; return 1; }OPC opBICSlli() { addrDPrn; addrDPlli; opBIC; flagDPnz; cpsrDP; return 2; }OPC opBICSllr() { addrDPrn; addrDPllr; opBIC; flagDPnz; cpsrDP; return 2; }OPC opBICSlri() { addrDPrn; addrDPlri; opBIC; flagDPnz; cpsrDP; return 2; }OPC opBICSlrr() { addrDPrn; addrDPlrr; opBIC; flagDPnz; cpsrDP; return 2; }OPC opBICSari() { addrDPrn; addrDPari; opBIC; flagDPnz; cpsrDP; return 2; }OPC opBICSarr() { addrDPrn; addrDParr; opBIC; flagDPnz; cpsrDP; return 2; }OPC opBICSrri() { addrDPrn; addrDPrri; opBIC; flagDPnz; cpsrDP; return 2; }OPC opBICSrrr() { addrDPrn; addrDPrrr; opBIC; flagDPnz; cpsrDP; return 2; }OPC opBICSimm() { addrDPrn; addrDPimm; opBIC; flagDPnz; cpsrDP; return 1; }OPC opMVNSlli() { addrDPrn; addrDPlli; opMVN; flagDPnz; cpsrDP; return 2; }OPC opMVNSllr() { addrDPrn; addrDPllr; opMVN; flagDPnz; cpsrDP; return 2; }OPC opMVNSlri() { addrDPrn; addrDPlri; opMVN; flagDPnz; cpsrDP; return 2; }OPC opMVNSlrr() { addrDPrn; addrDPlrr; opMVN; flagDPnz; cpsrDP; return 2; }OPC opMVNSari() { addrDPrn; addrDPari; opMVN; flagDPnz; cpsrDP; return 2; }OPC opMVNSarr() { addrDPrn; addrDParr; opMVN; flagDPnz; cpsrDP; return 2; }OPC opMVNSrri() { addrDPrn; addrDPrri; opMVN; flagDPnz; cpsrDP; return 2; }OPC opMVNSrrr() { addrDPrn; addrDPrrr; opMVN; flagDPnz; cpsrDP; return 2; }OPC opMVNSimm() { addrDPrn; addrDPimm; opMVN; flagDPnz; cpsrDP; return 1; }// Also in this file are various opcodes dealing with data, which aren't// strictly within the manual's DP remit, but are common among the cores.//---Multiply--------------------------------------------------------------// ACK: Mark Andrews, "Atari Roots" [1984] (Long mul algorithm extended)// ACK: Commodore Hacking, issue 8 (Signed long mul negation policy)// NOTE: The Rd and Rs fields are swapped in the instruction definition;//       the destination register for multiplies is Rs!OPC opMUL(){/*  if((_OP_RM==15)|       (_OP_RS==15)|       (_OP_RN==15)) opUNP();*//*  if(_OP_RM==_OP_RN) opUNP();*/    _RN=_RM*_RS;    return 1;}OPC opMLA(){/*  if((_OP_RM==15)|       (_OP_RS==15)|       (_OP_RD==15)|       (_OP_RN==15)) opUNP();*//*  if(_OP_RM==_OP_RN) opUNP();*/    _RN=_RM*_RS + _RD;    return 1;}OPC opMULS(){/*  if((_OP_RM==15)|       (_OP_RS==15)|       (_OP_RN==15)) opUNP();*//*  if(_OP_RM==_OP_RN) opUNP();*/    _RN=_RM*_RS; reg.tmp3=_RN; flagDPnzTST;    return 1;}OPC opMLAS(){/*  if((_OP_RM==15)|       (_OP_RS==15)|       (_OP_RD==15)|       (_OP_RN==15)) opUNP();*//*  if(_OP_RM==_OP_RN) opUNP();*/    _RN=_RM*_RS + _RD; reg.tmp3=_RN; flagDPnzTST;    return 1;}OPC opUMULL(){/*  if((_OP_RM==15)|       (_OP_RS==15)|       (_OP_RD==15)|       (_OP_RN==15)) opUNP();*/    u32 pl=0, ph=0, dshft=0, r=_RM, d=_RS;    for(int i=0; i<32; ++i)    {	if(r&1) { pl+=d; ph+=dshft; }	r>>=1; dshft<<=1; dshft+=(d&0x80000000)?1:0; d<<=1;    }        _RD = pl; _RN=ph;    return 1;}OPC opUMLAL(){/*  if((_OP_RM==15)|       (_OP_RS==15)|       (_OP_RD==15)|       (_OP_RN==15)) opUNP();*/    u32 pl=0, ph=0, dshft=0, r=_RM, d=_RS, plorig=_RD;    for(int i=0; i<32; ++i)    {	if(r&1) { pl+=d; ph+=dshft; }	r>>=1; dshft<<=1; dshft+=(d&0x80000000)?1:0; d<<=1;    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -