public static void Bl(ArmEmitterContext context) { OpCodeBImmAl op = (OpCodeBImmAl)context.CurrOp; context.Copy(GetIntOrZR(context, RegisterAlias.Lr), Const(op.Address + 4)); EmitCall(context, (ulong)op.Immediate); }
public static void B(ArmEmitterContext context) { OpCodeBImmAl op = (OpCodeBImmAl)context.CurrOp; if (context.CurrBlock.Branch != null) { context.Branch(context.GetLabel((ulong)op.Immediate)); } else { EmitTailContinue(context, Const(op.Immediate), context.CurrBlock.TailCall); } }
public static void B(ArmEmitterContext context) { OpCodeBImmAl op = (OpCodeBImmAl)context.CurrOp; if (context.CurrBlock.Branch != null) { context.Branch(context.GetLabel((ulong)op.Immediate)); } else { context.Return(Const(op.Immediate)); } }
public static void Bl(ArmEmitterContext context) { OpCodeBImmAl op = (OpCodeBImmAl)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); EmitCall(context, (ulong)op.Immediate); }
public static void B(ArmEmitterContext context) { OpCodeBImmAl op = (OpCodeBImmAl)context.CurrOp; context.Branch(context.GetLabel((ulong)op.Immediate)); }