Je dois effectuer une arithmétique de champ Galois rapide dans mon application. J'ai une fonction de multiplication écrite en assembly qui a été optimisée pour ma plateforme, un microcontrôleur MSP430. Cette fonction calcule le produit de deux grands nombres de taille arbitraire, mais chaque nombre doit être représenté comme un tableau d'entiers de 16 bits. Cependant, dans mon projet, un élément de champ Galois est représenté par un tableau de 16 entiers de 64 bits. Comment puis-je convertir ma matrice de 16 entiers de 64 bits en une représentation nécessaire à ma fonction de multiplication optimisée basée sur l'assemblage (c'est-à-dire un tableau de 64 entiers de 16 bits)? Bien sûr, le simple fait de lancer le tableau en tant que (UInt16 *) ne fonctionne pas.Comment convertir un tableau de UInt64 en un tableau de UInt16 pour effectuer une multiplication multi-précision?
Le MSP430 est une architecture little-endian. Merci d'avance pour toute suggestion.
Utiliser le décalage de bits et le masquage. –
Pas clair ce que vous avez l'intention. Si vous avez des entiers de 64 bits de toute façon, pourquoi ne pas laisser cela au compilateur? – Olaf
Sur une machine little-endian, vous pouvez simplement 'memcpy()' le contenu de 'uint64 []' à 'uint16 []'. – EOF