سؤال

ماذا علينا أن نتوقع من النقطة العائمة دعم 64 بت من دلفي ومترجم ؟

  • سوف 64 بت مترجم استخدام SSE إلى تنفيذ النقطة العائمة الحساب ؟

  • سوف مترجم 64 بت دعم الحالي 80-بت العائمة نوع (موسع)?

هذه الأسئلة ترتبط ارتباطا وثيقا لذا أطلب منهم واحد السؤال.

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

المحلول

ل pit double = تمتد:

اقرأ حساب Allen Bauer's Twitter Kylix_rd:

http://twitter.com/kylix_rd

بعد فوات الأوان منطقية ، لأنه على الرغم من أن SSE2 regs تبلغ 128 بت ، يتم استخدامها كضمادة 64 بت.

نصائح أخرى

لقد صنعت وظيفتين حول هذا الموضوع (هنا و هناك) ، لتلخيص ، نعم ، يستخدم برنامج التحويل البرمجي 64bit SSE2 (دقة مزدوجة) ، لكنه لا يستخدم SSE (دقة واحدة). يتم تحويل كل شيء إلى عوامات مزدوجة الدقة ، ويتم حسابها باستخدام SSE2 (تعديل: ومع ذلك ، هناك خيار للتحكم في ذلك)

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

يحرر: كان هناك توجيه غير موثق (في ذلك الوقت) يتحكم في توليد رمز SSE ، {$ verprecision OFF} ينشط توليد رمز SSE ، والذي يعيد الأداء ضمن التوقعات.

وفقًا لماركو فان دي فورت في إجابته على: كيف يمكنني إعداد برامج Delphi 32 بت لمرجم 64 بت في نهاية المطاف:

يتم إهمال X87 FPU على X64 ، وسيتم استخدام SSE2 بشكل عام في Plorenting Point. لذلك قد تعمل النقطة العائمة والتعامل مع الاستثناءات بشكل مختلف قليلاً ، وقد لا تكون الممتدة 80 بت (ولكن 64 بت أو أقل احتمالا 128 بت). يتعلق هذا أيضًا بتغييرات التقريب المعتادة (Copro Control -Awork) عند توصيل رمز WIHT C الذي يتوقع كلمة FPU مختلفة.

علق Phis على هذا الإجابة مع:

لن أقول أن X87 FPU قد تم إهمالها ، ولكن من المؤكد أن Microsoft قررت أن تبذل قصارى جهدها لجعلها بهذه الطريقة (ويبدو أنها لا تحب قيم FP 80 بت) ، على الرغم من أنها من الواضح أنه من الممكن من الناحية الفنية استخدام عوامات FPU/80 بت على Win64.

لقد نشرت للتو إجابة على سؤالك الآخر ، لكنني أعتقد أنه يجب أن يذهب هنا في الواقع:

من الواضح أنه لا أحد باستثناء Embarcadero يمكنه الإجابة على هذا بالتأكيد قبل إصدار المنتج.

من المحتمل جدًا أن يستخدم أي برنامج التحويل البرمجي X64 لائق مجموعة تعليمات SSE2 كخط أساسي ، وبالتالي تحاول القيام بأكبر قدر ممكن من حساب النقطة العائمة باستخدام ميزات SSE ، مما يقلل من استخدام X87 FPU. ومع ذلك ، ينبغي أيضًا أن يقال أنه لا يوجد سبب تقني يمنع استخدام X87 FPU في رمز تطبيق X64 (على الرغم من الشائعات التي كانت موجودة لبعض الوقت ؛ إذا كنت تريد المزيد من المعلومات حول هذه النقطة ، فيرجى القي نظرة على دليل اتفاقية Agner Fog, ، على وجه التحديد الفصل 6.1 "هل يمكن استخدام سجلات النقاط العائمة في النوافذ 64 بت؟").

تحرير 1: Delphi Xe2 Win64 لا يدعم بالفعل حسابات 80 بت نقطة عائمة خارج الصندوق (انظر على سبيل المثال المناقشة هنا (على الرغم من أنه يسمح لأحد بقراءة/كتابة هذه القيم). يمكن للمرء أن يعيد مثل هذه القدرات إلى Delphi Win64 باستخدام مشغلات فئة Record + ، كما هو الحال في هذا النوع textendedx87 (على الرغم من تطبيق التحذيرات).

نحن لن نعرف على وجه اليقين كيف 64 بت من دلفي المترجم تنفيذ النقطة العائمة حسابي حتى Embarcadero في الواقع السفن.أي شيء قبل ذلك هو مجرد تكهنات.ولكن عندما نعرف بالتأكيد سوف يكون متأخرا جدا لفعل أي شيء حيال ذلك.

ألين باور تغريدات على ما يبدو أن تشير إلى أنها سوف تستخدم SSE2 و أن تمديد النوع قد تكون خفضت إلى 64 بت بدلا من 80 بت.أعتقد أنه سيكون فكرة سيئة ، لمجموعة متنوعة من الأسباب.كتبت أفكاري في QualityCentral التقرير تمديد ينبغي أن تظل 80-بت نوع على الأنظمة الأساسية 64-بت

إذا كنت لا تريد الخاص بك رمز قطرة من 80-بت الدقة إلى 64 بت الدقة عند الانتقال إلى 64 بت من دلفي ، انقر على QualityCentral الرابط و التصويت على التقرير.المزيد من الأصوات ، والأرجح Embarcadero سيتم الاستماع.إذا كانت لا تستخدم SSE2 64 بت العائمة نقطة ، الأمر الذي يجعل الشعور ، ثم إضافة 80-بت النقطة العائمة باستخدام FPU سوف يكون العمل الإضافي Embarcadero.أشك في أنها سوف تفعل ذلك العمل إلا الكثير من المطورين تسأل عن ذلك.

إذا كنت بحاجة إليها حقًا ، فيمكنك استخدام وحدة TextendedX87 بواسطة فيليب م. شلتر (phis على ذلك) كما ذكر في موضوع منتدى Embarcadero هذا.

phis: عند تحديث إجابتك بالمعلومات من الألغام ، سأقوم بإزالة لي.

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