public static void Ldp(ArmEmitterContext context) { OpCodeMemPair op = (OpCodeMemPair)context.CurrOp; void EmitLoad(int rt, Operand ldAddr) { if (op.Extend64) { EmitLoadSx64(context, ldAddr, rt, op.Size); } else { EmitLoadZx(context, ldAddr, rt, op.Size); } } Operand address = GetAddress(context); Operand address2 = context.Add(address, Const(1L << op.Size)); EmitLoad(op.Rt, address); EmitLoad(op.Rt2, address2); EmitWBackIfNeeded(context, address); }
public static void Stp(ArmEmitterContext context) { OpCodeMemPair op = (OpCodeMemPair)context.CurrOp; Operand address = GetAddress(context); Operand address2 = GetAddress(context, 1L << op.Size); InstEmitMemoryHelper.EmitStore(context, address, op.Rt, op.Size); InstEmitMemoryHelper.EmitStore(context, address2, op.Rt2, op.Size); EmitWBackIfNeeded(context, address); }