public static void EmitLdr(AILEmitterCtx Context, bool Signed) { AOpCodeMem Op = (AOpCodeMem)Context.CurrOp; Context.EmitLdarg(ATranslatedSub.MemoryArgIdx); EmitLoadAddress(Context); if (Signed && Op.Extend64) { EmitReadSx64Call(Context, Op.Size); } else if (Signed) { EmitReadSx32Call(Context, Op.Size); } else { EmitReadZxCall(Context, Op.Size); } if (Op is IAOpCodeSimd) { Context.EmitStvec(Op.Rt); } else { Context.EmitStintzr(Op.Rt); } EmitWBackIfNeeded(Context); }
public static void Str(AILEmitterCtx Context) { AOpCodeMem Op = (AOpCodeMem)Context.CurrOp; Context.EmitLdarg(ATranslatedSub.MemoryArgIdx); EmitLoadAddress(Context); if (Op is IAOpCodeSimd) { Context.EmitLdvec(Op.Rt); } else { Context.EmitLdintzr(Op.Rt); } EmitWriteCall(Context, Op.Size); EmitWBackIfNeeded(Context); }