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]; }