mirror of
https://github.com/emu-russia/pureikyubu.git
synced 2025-04-02 10:42:15 -04:00
63 lines
1.6 KiB
C++
63 lines
1.6 KiB
C++
// DSP parallel load/store/move instructions
|
|
|
|
#include "pch.h"
|
|
|
|
using namespace Debug;
|
|
|
|
namespace DSP
|
|
{
|
|
|
|
// ldd d1,rn,mn d2,r3,m3
|
|
void DspInterpreter::p_ldd(AnalyzeInfo& info)
|
|
{
|
|
int r = (int)info.paramsEx[1];
|
|
core->MoveToReg((int)info.paramsEx[0], core->dsp->ReadDMem(core->regs.r[r]));
|
|
AdvanceAddress(r, info.paramsEx[2]);
|
|
|
|
r = (int)info.paramsEx[4];
|
|
core->MoveToReg((int)info.paramsEx[3], core->dsp->ReadDMem(core->regs.r[r]));
|
|
AdvanceAddress(r, info.paramsEx[5]);
|
|
}
|
|
|
|
// ls d,r,m r,m,s
|
|
void DspInterpreter::p_ls(AnalyzeInfo& info)
|
|
{
|
|
int r = (int)info.paramsEx[1];
|
|
core->MoveToReg((int)info.paramsEx[0], core->dsp->ReadDMem(core->regs.r[r]));
|
|
AdvanceAddress(r, info.paramsEx[2]);
|
|
|
|
r = (int)info.paramsEx[3];
|
|
core->dsp->WriteDMem(core->regs.r[r], core->MoveFromReg((int)info.paramsEx[5]));
|
|
AdvanceAddress(r, info.paramsEx[4]);
|
|
}
|
|
|
|
// ld d,rn,mn
|
|
void DspInterpreter::p_ld(AnalyzeInfo& info)
|
|
{
|
|
int r = (int)info.paramsEx[1];
|
|
core->MoveToReg((int)info.paramsEx[0], core->dsp->ReadDMem(core->regs.r[r]));
|
|
AdvanceAddress(r, info.paramsEx[2]);
|
|
}
|
|
|
|
// st rn,mn,s
|
|
void DspInterpreter::p_st(AnalyzeInfo& info)
|
|
{
|
|
int r = (int)info.paramsEx[0];
|
|
core->dsp->WriteDMem(core->regs.r[r], core->MoveFromReg((int)info.paramsEx[2]));
|
|
AdvanceAddress(r, info.paramsEx[1]);
|
|
}
|
|
|
|
// mv d,s
|
|
void DspInterpreter::p_mv(AnalyzeInfo& info)
|
|
{
|
|
core->MoveToReg((int)info.paramsEx[0], core->MoveFromReg((int)info.paramsEx[1]));
|
|
}
|
|
|
|
// mr rn,mn
|
|
void DspInterpreter::p_mr(AnalyzeInfo& info)
|
|
{
|
|
int r = (int)info.paramsEx[0];
|
|
AdvanceAddress(r, info.paramsEx[1]);
|
|
}
|
|
|
|
}
|