ما هي التعليمات التي يجب أن أستخدمها لعمليات النقطة العائمة؟

StackOverflow https://stackoverflow.com/questions/3692020

سؤال

أنا معتاد إلى حد ما تعليمات x87 لمعالجة أرقام النقاط العائمة في مجموعة x86. ومع ذلك ، قرأت في مكان ما أن هذه نادرا ما كانت تستخدم بعد الآن. (ولم يُسمح به في برامج تشغيل Windows 64 بت)[1]

إذا كان هذا هو الحال ، فما هي التعليمات التي يجب أن أستخدمها؟ لقد رأيت شيئًا عن SSE ، لكن ما لم أكن مخطئًا ، تمت إضافة هذه التعليمات مؤخرًا ولن تكون متوفرة على الرقائق القديمة. (مثل Pentium II ، وما إلى ذلك)

ما هي التعليمات ينبغي أنا أستخدم؟

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

المحلول

إذا كنت على استعداد لنسيان التوافق المتخلف ، فإن SSE هو الطريق للذهاب. لديها مجموعة تعليمية أكثر ثراء ودعم المتجهات. إذا كنت ترغب في التحسين لأي معالج يعمل ، فيجب أن تحاول الكتابة بلغة أعلى مستوى وتجميع مع ICC ، والتي تتحقق من المعالج يعمل حاليًا وتنفيذ التعليمات البرمجية المحسّنة لذلك.

في نهاية اليوم ، يعتمد ذلك على المستخدمين المتوقعين لبرنامجك.

نصائح أخرى

إذا كنت بحاجة إلى أن تكون متوافقًا للخلف ، فسيتعين عليك استخدام تعليمات X87. خلاف ذلك ، كما يقول Nathan Flemman ، قد تكون تعليمات SSE# هي السبيل للذهاب ، أيضًا لأن الكود بالنسبة لهم أسهل إلى حد ما في الكتابة (يستخدمون نموذج التسجيل العادي ، في حين يستخدم X87 مكدسًا).

بعد قولي هذا ، هناك عدة أسباب تجعلك ترغب في استخدام رمز X87 (أو خلط رمز X87/SSE):

(1) يوفر x87 دقة أعلى ، أي حساب نقطة عائم 80 بت. (كلاهما ، يوفر X87/SSE عوامات 32 بت و 64 بت.

(2) يوفر x87 بعض العمليات التي لا تغطيها مجموعات تعليمات SSE# ، وهي تعليمات للعمليات الثلاثية (SIN ، COS ، ...) واللوغاريتمات.

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