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

📄 arm7tdmi-opcodes.cpp

📁 一个任天堂掌上游戏机NDS的源代码
💻 CPP
字号:
/*************************************************************************** DSemu - The Next Generation                                             ** Portable ARM7TDMI core: ARM7-specific opcodes [arm7tdmi-opcodes.cpp]    ** Copyright Imran Nazar, 2005; released under the BSD public licence.     ***************************************************************************/// There isn't much in here, because most of the ARM7 is subsumed into the// ARM9; therefore, those opcodes are common, and defined in arm-dp|ls.#include "arm7tdmi.h"#include "plgmmu32.h"#include "armhelp.h"#include "armmasks.h"#include "datadefs.h"#include "log.h"#include "err.h"//---Conditional execution-------------------------------------------------// Each of these functions returns 1 or 0, dependent on flag state.// Called by the dispatcher, by lookup in the condition LUT.int ARM7TDMI::condEQ(){return  reg.flags[FLAG_Z];}int ARM7TDMI::condNE(){return !reg.flags[FLAG_Z];}int ARM7TDMI::condCS(){return  reg.flags[FLAG_C];}int ARM7TDMI::condCC(){return !reg.flags[FLAG_C];}int ARM7TDMI::condMI(){return  reg.flags[FLAG_N];}int ARM7TDMI::condPL(){return !reg.flags[FLAG_N];}int ARM7TDMI::condVS(){return  reg.flags[FLAG_V];}int ARM7TDMI::condVC(){return !reg.flags[FLAG_V];}int ARM7TDMI::condHI(){return (!reg.flags[FLAG_Z])&reg.flags[FLAG_C];}int ARM7TDMI::condLS(){return reg.flags[FLAG_Z]|(!reg.flags[FLAG_C]);}int ARM7TDMI::condGE(){return !(reg.flags[FLAG_N]^reg.flags[FLAG_V]);}int ARM7TDMI::condLT(){return  (reg.flags[FLAG_N]^reg.flags[FLAG_V]);}int ARM7TDMI::condGT(){return (!reg.flags[FLAG_Z])&(!(reg.flags[FLAG_N]^reg.flags[FLAG_V]));}int ARM7TDMI::condLE(){return reg.flags[FLAG_Z]|(reg.flags[FLAG_N]^reg.flags[FLAG_V]);}int ARM7TDMI::condAL(){return 1;}int ARM7TDMI::condNV(){return 0;}//---Branching-------------------------------------------------------------OPC opB(){    s32 i = (reg.curop & 0x00FFFFFF) << 2;     // Extract address    i = (i & 0x02000000)?(0xFC000000 | i):i;   // Sign extend    reg.r[15] += i+4;                          // And branch    return 3;}OPC opBL(){    reg.r[14] = reg.r[15];                     // Save link addr    s32 i = (reg.curop & 0x00FFFFFF) << 2;     // Extract address    i = (i & 0x02000000)?(0xFC000000 | i):i;   // Sign extend    reg.r[15] += i+4;                          // And branch    return 3;}OPC opBX(){/*  if((_RM&3)==2) opUNP();*/    reg.r[15]=(_RM&~1)+Rm15hack; reg.flags[FLAG_T]=_RM&1;    return 1;}/*** EOF: arm7tdmi-opcodes.cpp *******************************************/

⌨️ 快捷键说明

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