コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: InstEmitFlow.cs プロジェクト: turbedi/Ryujinx
        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);
            }
        }
コード例 #3
0
        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));
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        public static void B(ArmEmitterContext context)
        {
            OpCodeBImmAl op = (OpCodeBImmAl)context.CurrOp;

            context.Branch(context.GetLabel((ulong)op.Immediate));
        }