示例#1
0
        public ArithmeticOpcode(uint[] blocks)
        {
            BitWidth     = (BitWidthType)GetNibble(blocks[0], 2);
            MathType     = (RegisterArithmeticType)GetNibble(blocks[0], 3);
            RegisterDest = GetNibble(blocks[0], 4);
            RegisterLeft = GetNibble(blocks[0], 5);

            if (GetNibble(blocks[0], 6) == 0)
            {
                RightHandRegister = true;
                RegisterRight     = GetNibble(blocks[0], 7);
            }
            else
            {
                RightHandRegister = false;
                if (BitWidth == BitWidthType.q)
                {
                    Value = ((UInt64)blocks[1] << 32) | blocks[2];
                }
                else
                {
                    Value = blocks[1];
                }
            }
        }
 public LegacyArithmeticOpcode(uint[] blocks)
 {
     BitWidth      = (BitWidthType)GetNibble(blocks[0], 2);
     RegisterIndex = GetNibble(blocks[0], 4);
     MathType      = (RegisterArithmeticType)GetNibble(blocks[0], 5);
     Value         = blocks[1];
 }