Пример #1
0
        public unsafe bool CopyContext(Span <byte> context)
        {
            if (context.Length < ArmContext.Size)
                return(false);

            fixed(byte *ptr = context)
            {
                ArmContext *ctx = (ArmContext *)ptr;

                ctx->ContextFlags = ArmContext.ContextControl | ArmContext.ContextInteger;
                ctx->R0           = r0;
                ctx->R1           = r1;
                ctx->R2           = r2;
                ctx->R3           = r3;
                ctx->R4           = r4;
                ctx->R5           = r5;
                ctx->R6           = r6;
                ctx->R7           = r7;
                ctx->R8           = r8;
                ctx->R9           = r9;
                ctx->R10          = r10;
                ctx->R11          = fp;
                ctx->R12          = ip;
                ctx->Sp           = sp;
                ctx->Lr           = lr;
                ctx->Pc           = pc;
                ctx->Cpsr         = cpsr;
            }

            return(true);
        }
Пример #2
0
        public unsafe bool CopyContext(uint contextFlags, uint contextSize, void *context)
        {
            if (contextSize != ArmContext.Size)
            {
                return(false);
            }

            ArmContext *ctx = (ArmContext *)context;

            ctx->ContextFlags = ArmContext.ContextControl | ArmContext.ContextInteger;
            ctx->R0           = r0;
            ctx->R1           = r1;
            ctx->R2           = r2;
            ctx->R3           = r3;
            ctx->R4           = r4;
            ctx->R5           = r5;
            ctx->R6           = r6;
            ctx->R7           = r7;
            ctx->R8           = r8;
            ctx->R9           = r9;
            ctx->R10          = r10;
            ctx->R11          = fp;
            ctx->R12          = ip;
            ctx->Sp           = sp;
            ctx->Lr           = lr;
            ctx->Pc           = pc;
            ctx->Cpsr         = cpsr;

            return(true);
        }