parent
d26709f713
commit
f325d41def
|
@ -21,11 +21,14 @@ void DSPEmitter::dsp_reg_stack_push(int stack_reg)
|
|||
MOV(8, M(&g_dsp.reg_stack_ptr[stack_reg]), R(AL));
|
||||
|
||||
X64Reg tmp1 = gpr.GetFreeXReg();
|
||||
X64Reg tmp2 = gpr.GetFreeXReg();
|
||||
// g_dsp.reg_stack[stack_reg][g_dsp.reg_stack_ptr[stack_reg]] = g_dsp.r[DSP_REG_ST0 + stack_reg];
|
||||
MOV(16, R(tmp1), M(&g_dsp.r.st[stack_reg]));
|
||||
MOVZX(64, 8, RAX, R(AL));
|
||||
MOV(16, MComplex(EAX, EAX, SCALE_1, PtrOffset(&g_dsp.reg_stack[stack_reg][0], nullptr)), R(tmp1));
|
||||
MOV(64, R(tmp2), ImmPtr(g_dsp.reg_stack[stack_reg]));
|
||||
MOV(16, MComplex(tmp2, EAX, SCALE_2, 0), R(tmp1));
|
||||
gpr.PutXReg(tmp1);
|
||||
gpr.PutXReg(tmp2);
|
||||
}
|
||||
|
||||
// clobbers:
|
||||
|
@ -36,10 +39,13 @@ void DSPEmitter::dsp_reg_stack_pop(int stack_reg)
|
|||
// g_dsp.r[DSP_REG_ST0 + stack_reg] = g_dsp.reg_stack[stack_reg][g_dsp.reg_stack_ptr[stack_reg]];
|
||||
MOV(8, R(AL), M(&g_dsp.reg_stack_ptr[stack_reg]));
|
||||
X64Reg tmp1 = gpr.GetFreeXReg();
|
||||
X64Reg tmp2 = gpr.GetFreeXReg();
|
||||
MOVZX(64, 8, RAX, R(AL));
|
||||
MOV(16, R(tmp1), MComplex(EAX, EAX, SCALE_1, PtrOffset(&g_dsp.reg_stack[stack_reg][0], nullptr)));
|
||||
MOV(64, R(tmp2), ImmPtr(g_dsp.reg_stack[stack_reg]));
|
||||
MOV(16, R(tmp1), MComplex(tmp2, EAX, SCALE_2, 0));
|
||||
MOV(16, M(&g_dsp.r.st[stack_reg]), R(tmp1));
|
||||
gpr.PutXReg(tmp1);
|
||||
gpr.PutXReg(tmp2);
|
||||
|
||||
// g_dsp.reg_stack_ptr[stack_reg]--;
|
||||
// g_dsp.reg_stack_ptr[stack_reg] &= DSP_STACK_MASK;
|
||||
|
|
Loading…
Reference in New Issue