Question

Je suis en train d'écrire un programme qui permet de résoudre le défi de rsa (oui j'ai des objectifs intéressants) et actuellement je n'ai pas une boîte de Linux 64 bits et je ne vois vraiment pas envie de passer mon temps à écrire un programme qui doesn « t ont une chance de jamais finir. Ainsi, alors que je peux faire de la programmation assembleur, je préférerais en C ++. Cependant, je voudrais aussi être intéressé par la façon d'utiliser l'assembleur en ligne pour faire la même chose. le plan est ici d'utiliser les 16 64 bits registres à usage général et 128 bits sse enregistre à faire (vraiment très long) mathématiques entier. de sorte que toute aide sur la façon de le faire serait grandement apprécié.

Était-ce utile?

La solution

En fonction de votre commentaire à BarsMonsters Anser, vous n'avez pas besoin de se rapprocher de la CPU, vous avez besoin d'une grande bibliothèque entière.

Une option est gmp, qui comprend l'arithmétique d'entier arbitraire. Il a de bons algorithmes pour des choses comme la multiplication de grands entiers, et un bon compilateur fera un meilleur travail d'optimisation de ce que la plupart des gens.

La principale question qui pourrait vous faire paraître une alternative est qu'il supporte l'arithmétique de précision variable, qui peut être une tête que vous préférez éviter si vous savez avec certitude que vos numéros ont au plus 512 chiffres binaires. Même si, vous voulez probablement regarder des algorithmes plus que des tours de bas niveau (longue multiplication peut déjà être un mauvais choix à cette taille), et je suis assez confiant que vous serez mieux laisser le compilateur faire votre optimisation.

Mon conseil - passer votre temps à faire des choses qui nécessitent l'intelligence humaine, et non pas les choses qu'une machine peut faire beaucoup plus cohérente et un milliard de fois plus rapide

.

Et si vous pouvez vraiment optimiser le code machine mieux qu'un compilateur peut, télécharger LLVM et mettre en œuvre cette logique, laissez-passer d'optimisation afin que nous puissions tous obtenir le bénéfice; -)

Autres conseils

Toutes les compillers modernes sont très bons à réutiliser tous les registres disponibles pour produire le plus rapide possible du code.

En particulier Intel C ++ et gcc3 -. Ils créent souvent un code imbattable manuellement

BTW, consultez ceci: Pourquoi ne MSVC pas en charge l'assembleur en ligne pour les cibles AMD64 et Itanium

Si vous voulez le faire un peu de maths de precission, vous mieux essayer le compilateur Intel C et de l'utiliser est mathématique lib, il est très puissant et overoptimized. Même pour la bibliothèque de mathématiques Boost. Cela pourrait réduire votre travail de 90% :-) Ils ne prennent en charge les numéros de Precission arbitraires.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top