public static void Blr(ArmEmitterContext context) { OpCodeBReg op = (OpCodeBReg)context.CurrOp; Operand n = context.Copy(GetIntOrZR(context, op.Rn)); context.Copy(GetIntOrZR(context, RegisterAlias.Lr), Const(op.Address + 4)); EmitVirtualCall(context, n); }
public static void Blr(ArmEmitterContext context) { OpCodeBReg op = (OpCodeBReg)context.CurrOp; ulong address = op.Address + 4; Operand addressOp = !context.HasTtc ? Const(address) : Const(address, new Symbol(SymbolType.DynFunc, context.GetOffset(address))); context.Copy(GetIntOrZR(context, RegisterAlias.Lr), addressOp); Operand n = context.Copy(GetIntOrZR(context, op.Rn)); EmitVirtualCall(context, n); }
public static void Ret(ArmEmitterContext context) { OpCodeBReg op = (OpCodeBReg)context.CurrOp; context.Return(GetIntOrZR(context, op.Rn)); }
public static void Br(ArmEmitterContext context) { OpCodeBReg op = (OpCodeBReg)context.CurrOp; EmitVirtualJump(context, GetIntOrZR(context, op.Rn), op.Rn == RegisterAlias.Lr); }