public override string ToString()
 {
     GetValue();
     return(CPU.GetStrRegr(reg) + ", " + Repr_shifts[shift] + " " + CPU.GetStrRegr(reg2));
 }
        //Rd := Rn AND NOT(shifter_operand)
        public override void Execute(uint Rn, uint Rd, Operand2 oper2)
        {
            int val = CPU.GetRegr(I_Reg, (int)Rn) & (~oper2.GetValue());

            CPU.SetReg(I_Reg, (int)Rd, val);
        }
        public override int GetValue()
        {
            reg   = (int)Memory.ExtractBits(OperBits, 28, 31);
            shift = Memory.ExtractBits(OperBits, 25, 26);
            reg2  = (int)Memory.ExtractBits(OperBits, 20, 23);

            return((int)BarrelShift.Compute(shift, (uint)CPU.GetRegr(Oper2Regs, reg), (uint)CPU.GetRegr(Oper2Regs, reg2)));
        }
 //Rd := NOT shifter_operand (no Rn)
 public override void Execute(uint Rn, uint Rd, Operand2 oper2)
 {
     CPU.SetReg(I_Reg, (int)Rd, ~oper2.GetValue());
 }