Мне нужно выполнить быструю арифметику поля Галуа в моем приложении. У меня есть функция умножения, написанная в сборке, оптимизированная для моей платформы, микроконтроллера MSP430. Эта функция вычисляет произведение двух больших чисел произвольного размера, но каждый номер должен быть представлен как массив из 16-разрядных целых чисел. Однако в моем проекте элемент поля Galois представлен как массив из 16 64-битных целых чисел. Как преобразовать массив из 16 64-разрядных целых чисел в представление, необходимое моей оптимизированной функции умножения на основе сборки (т. Е. Массив из 64 16-разрядных целых чисел)? Конечно, простое выполнение массива как (UInt16 *) не работает.Как преобразовать массив UInt64 в массив UInt16 для выполнения многоточечного умножения?
MSP430 - архитектура малочисленная. Спасибо заранее за любые предложения.
Использование бит-сдвига и маскировка. –
Непонятно, что вы намерены. Если вы все равно 64-битные целые числа, почему бы не оставить это в компиляторе? – Olaf
На маленькой машине вы можете просто 'memcpy()' содержимое 'uint64 []' на 'uint16 []'. – EOF