سؤال

أحاول أن أكتب برنامجًا يحل تحدي RSA (نعم لدي أهداف مثيرة للاهتمام) وحاليًا ليس لدي مربع Linux 64 بت ولا أريد حقًا قضاء وقتي في كتابة برنامج لا يحتوي فرصة للانتهاء من أي وقت مضى. لذا ، على الرغم من أنني أستطيع القيام ببعض برامج التجميع ، إلا أنني أفضل استخدام C ++. ومع ذلك ، سأكون مهتمًا أيضًا بكيفية استخدام التجميع المضمّن لفعل الشيء نفسه. تتمثل الخطة هنا في استخدام سجلات الغرض العامة 16 64 بت وسجلات SSE التي تبلغ 128 بت للقيام بها (طويلة حقًا) الرياضيات. لذلك أي مساعدة في كيفية القيام بذلك سيكون موضع تقدير كبير.

هل كانت مفيدة؟

المحلول

بناءً على تعليقك على Barsmonsters Anser ، لا تحتاج إلى الاقتراب من وحدة المعالجة المركزية ، فأنت بحاجة إلى مكتبة عدد صحيح كبير.

خيار واحد هو GMP ، والذي يتضمن حساب عدد صحيح تعسفي. يحتوي على خوارزميات جيدة لأشياء مثل ضرب الأعداد الصحيحة الكبيرة ، وسيقوم برنامج التحويل البرمجي الجيد بعمل أفضل في تحسين هذا الأمر من معظم الناس.

المشكلة الرئيسية التي قد تجعلك تبحث عن بديل هي أنه يدعم الحساب الدقيق المتغير ، والذي قد يكون جزءًا كبيرًا تفضل تجنبه إذا كنت تعرف على وجه اليقين أن أرقامك لديها 512 رقمًا ثنائيًا على الأقل. على الرغم من ذلك ، ربما تريد أن تنظر إلى الخوارزميات أكثر من الحيل ذات المستوى المنخفض (قد يكون الضرب الطويل بالفعل اختيارًا سيئًا بهذا الحجم) ، وأنا واثق تمامًا من أنك من الأفضل السماح للمترجم بإجراء التحسين الخاص بك.

نصيحتي - قضاء وقتك في القيام بالأشياء التي تتطلب الذكاء البشري ، وليس الأشياء التي يمكن للآلة القيام بها بشكل أكثر اتساقًا وأسرع مليار مرة.

وإذا كان بإمكانك حقًا تحسين رمز الجهاز بشكل أفضل مما يمكن للمترجم ، تنزيل LLVM وتنفيذ هذا المنطق كمرور تحسين حتى نتمكن من الحصول على الفائدة ؛-)

نصائح أخرى

جميع المشاركات الحديثة جيدة جدًا في إعادة استخدام جميع السجلات المتاحة لإنتاج الأسرع رمزًا ممكنًا.

خاصة Intel C ++ و GCC3 - غالبًا ما يقومون بإنشاء رمز لا يهزم يدويًا.

راجع للشغل ، تحقق من هذا: لماذا لا تدعم MSVC التجميع المضمّن لأهداف AMD64 و Itanium؟

إذا كنت ترغب فقط في القيام ببعض الرياضيات الدقيقة ، فمن الأفضل أن تجرب برنامج التحويل البرمجي Intel C ++ واستخدامه في الرياضيات ، فهو قوي للغاية ومبالغ فيه. نفس الشيء بالنسبة لمكتبة الرياضيات. قد يؤدي هذا إلى خفض عملك بنسبة 90 ٪ :-) إنهم يدعمون أرقام الدقة التعسفية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top