public static void EmitDataLoadOper2(AILEmitterCtx Context) { switch (Context.CurrOp) { case IAOpCodeAluImm Op: Context.EmitLdc_I(Op.Imm); break; case IAOpCodeAluRs Op: Context.EmitLdintzr(Op.Rm); switch (Op.ShiftType) { case AShiftType.Lsl: Context.EmitLsl(Op.Shift); break; case AShiftType.Lsr: Context.EmitLsr(Op.Shift); break; case AShiftType.Asr: Context.EmitAsr(Op.Shift); break; case AShiftType.Ror: Context.EmitRor(Op.Shift); break; } break; case IAOpCodeAluRx Op: Context.EmitLdintzr(Op.Rm); Context.EmitCast(Op.IntType); Context.EmitLsl(Op.Shift); break; } }
private static void EmitBfmLoadRn(AILEmitterCtx Context) { AOpCodeBfm Op = (AOpCodeBfm)Context.CurrOp; Context.EmitLdintzr(Op.Rn); Context.EmitRor(Op.Shift); Context.EmitLdc_I(Op.WMask & Op.TMask); Context.Emit(OpCodes.And); }