Example #1
0
            protected override void BuildSetFlags()
            {
                string original_name = name;

                opcode        &= ~s_mask;
                wildcard_mask &= ~s_mask;


                //non-S version
                SetFlags = owner.DataOpHandleSetFlagsAWC_NOP;
                BuildOperand2();

                //S version
                SetFlags = owner.DataOpHandleSetFlagsAWC_NonCMP;
                opcode  |= s_mask;
                name    += "S";
                BuildOperand2();

                name    = original_name;
                opcode &= ~s_mask;
            }
Example #2
0
        internal InstructionFunc GenerateAWCDataOp(DataOpEvaluateOperand2Func EvaluateOperand2, DataOpAWCOperation AWCOp, DataOpSaveResultFunc SaveResult, DataOpHandleSetFlagsAWCFunc SetFlags)
        {
            return(delegate(uint opcode)
            {
                uint Rd = ((opcode & rd_mask) >> 12);
                uint Rn = ((opcode & rn_mask) >> 16);
                uint a = get_reg(Rn);

                bool shift_carry = false;
                uint b = EvaluateOperand2(opcode, ref shift_carry);

                AWCResult awcResult = AWCOp(a, b);
                SaveResult(Rd, awcResult.result);
                SetFlags(opcode, Rd, awcResult);
                return 1;
            });
        }