دالة D باستخدام x86 CMPXCHG للمقارنة والمبادلة
سؤال
أنا أبحث عن وظيفة تقدم مستوى عالٍ د واجهة ل CAS الذرية على إنتل x86.
أعلم أنه يمكنني القيام بذلك باستخدام ASM المضمّن (وسأفعل ذلك إذا لزم الأمر)، لكنني أفضل الحصول على التعليمات البرمجية من شخص آخر إذا استطعت.
المحلول
من الوثائق في: http://www.digitalmars.com/d/2.0/overview.html
المجمع المضمن
تحتاج برامج تشغيل الأجهزة وتطبيقات النظام عالية الأداء والأنظمة المضمنة والرمز المتخصص في بعض الأحيان إلى الانخفاض في لغة التجميع لإنجاز المهمة.على الرغم من أن تطبيقات D غير مطلوبة لتنفيذ التجميع المضمّن ، إلا أنه يتم تعريفه وجزء من اللغة.يمكن التعامل مع معظم احتياجات رمز التجميع معها ، مما يتجنب الحاجة إلى مجموعات منفصلة أو DLL.
ستدعم العديد من تطبيقات D الوظائف الجوهرية بشكل مشابه لدعم C للمهارات لمعالجة المنفذ I/O ، والوصول المباشر إلى عمليات النقطة العائمة الخاصة ، إلخ.
لذلك يمكنك نظريًا استخدام CMPXCHG مباشرةً.
يحرر
قد ترغب في إلقاء نظرة على: http://www.dsource.org/projects/tango/browser/trunk/tango/core/Atomic.d?rev=4277
يستغرق التحميل بعض الوقت لسبب ما، ولكنه يستخدم تعليمات CMPXCHG داخليًا، ويجب أن يكون من السهل إعادة تجهيزه لأغراضك.