Loading AI tools
من ويكيبيديا، الموسوعة الحرة
اصطلاح استدعاء إكس 86 (بالإنجليزية: x86 calling conventions) تصف هذه المقالة بنية اصطلاح الاستدعاء المستخدم عند البرمجة في بنية المعالجات الدقيقة إكس 86، تصف اصطلاحات الاستدعاء واجهة التعليمات البرمجية المستدعاة:
هذه المقالة بها مشكلات متعدِّدة. فضلًا ساعد في تحسينها أو ناقش هذه المشكلات في صفحة النقاش.
|
ويرتبط ذلك ارتباطا وثيقا بتعيين الأحجام والأشكال لأنواع لغة البرمجة. موضوع آخر وثيق الصلة هو تغييرات الاسم (بالإنجليزية: Name mangling)، الذي يحدد كيفية وضع أسماء الرموز في خريطة التعليمات البرمجية لأسماء الرموز المستخدمة من قبل الرابط. اسطلاح الاستدعاء وتمثيلات النوع و تغييرات الاسم كلها أجزاء مما يعرف باسم واجهة التطبيق الثنائية (بالإنجليزية: Application binary interface)، وغالباً ما تكون هناك اختلافات طفيفة في كيفية تنفيذ محولات البرمجة لاصطلاحات الاستدعاء هذه.
قبل الحواسيب الصغيرة، كانت الشركات المصنعة توفر عموما ً نظام تشغيل ومحولا برمجيا لعدة لغات برمجة.وكذلك اصطلاح (اصطلاحات) الاستدعاء لكل منصة والتي تم تعريفها بواسطة أدوات البرمجة الخاصة بالشركة المصنعة.
في هذه الاصطلاحات، يقوم المتصل بتنظيف الوسيطات من المكدس.
تصريح سي (بالإنجليزية: C declaration) هو اصطلاح استدعاء نشأ من لغة البرمجة سي وهو مستخدم من قبل العديد من المحولات البرمجية للغة سي لبنية إكس 86.
مقتطف من الشفرة المصدرية من لغة البرمجة سي:
int callee(int, int, int);
int caller(void)
{
return callee(1, 2, 3) + 5;
<nowiki>}</nowiki>
نداء سيس (بالإنجليزية: syscall) وهو مشابه لتصريح سي ويتم فيه دقع اصطلاحات الاستدعاءات من اليمين إلى اليسار.
أوبت لينك (بالإنجليزية: optlink)
في هذه الاصطلاحات، تنظف الوجهة الوسائط من المكدس. كما أنه من السهل التعرف على الوظائف التي تستخدم هذه الاصطلاحات في كود لغة التجميع (بالإنجليزية: Assembly language)
استناداً إلى اصطلاح استدعاء لغة البرمجة باسكال، يتم دفع المعلمات على المكدس بترتيب من اليسار إلى اليمين (على العكس من تصريح سي)، وفيه ويكون المستدعي مسؤولاً عن إزالتها من المكدس.
نداء إس تي دي (بالإنجليزية: stdcall) اصطلاح استدعاء إس تي دي هو شكل آخر من اصطلاح استدعاء باسكال حيث يكون المستدعي مسؤولاً عن تنظيف المكدس، ويتم فيه دفع المعلمات إلى المكدس بترتيب من اليمين إلى اليسار، كما هو الحال في اصطلاح استدعاء تصريح سي. يتم تعيين سجلات EAX و ECX و EDX للاستخدام داخل الدالة. يتم تخزين قيم الإرجاع في سجل EAX.
نداء مايكروسوف السريع (بالإنجليزية: Microsoft fastcall) يمرر أول وسيطتين (تقييم من اليسار إلى اليمين) والتي تناسب ECX و EDX. يتم دفع الوسائط المتبقية إلى المكدس من اليمين إلى اليسار. عندما يقوم محول مايكروسوف البرمجي بالتحويل البرمجي لـ IA64 أو AMD64، فإنه يتجاهل الكلمة الأساسية __fastcall ويستخدم اصطلاح استدعاء 64 بت بدلاً من ذلك.
نداء فيكتور مايكروسوف (بالإنجليزية: Microsoft vectorcall) قدمت مايكروسوف اتفاقية النداء فيكتور في برنامجها مايكروسوف فيجوال استوديو استجابة لمخاوف مطوري الألعاب والرسومات والفيديو المتعلقة بالكفاءة. يسمح هذا النداء بتمرير أنواع متجهات أكبر إلى السجل بدلاً من المكدس.
سجل بورلاند (بالإنجليزية: Borland register)
سجل واتكوم (بالإنجليزية: Watcom register) يتم تعيين ما يصل إلى 4 سجلات إلى الوسيطات على الترتيب التالي EAX، EDX، EBX، ECX. يتم تعيين الوسيطات للسجلات من اليسار إلى اليمين. إذا تعذر تعيين أي وسيطة إلى سجل (لنقل أنها كبيرة جداً) يتم تعيينها ويتم تعيين كافة الوسائط اللاحقة إلى المكدس.
توب سبيد كلاريون جي بي آي (بالإنجليزية: TopSpeed / Clarion / JPI) يتم تمرير المعلمات الصحيحة الأربعة الأولى في سجلات eax و ebx و ecx و edx. يتم تمرير معلمات النقطة العائمة على كومة النقاط العائمة - تسجل st0 و st1 و st2 و st3 و st4 و st5 و st6. يتم تمرير معلمات البنية دائمًا على المكدس. يتم تمرير معلمات إضافية على المكدس بعد استنفاد السجلات. يتم إرجاع قيم الأعداد الصحيحة في eax والمؤشرات في أنواع edx والنقاط العائمة في st0.
النداء الآمن (بالإنجليزية: safecall)
هذا النداء (بالإنجليزية: thiscall)
جزء آخر من اصطلاح استدعاء حيث يتم ضمان السجلات للاحتفاظ بقيمها بعد استدعاء الروتين.
وفقا لـ واجلهة التطبيق الثنائية من إنتل والتي تتوافق مع الغالبية العظمى من المحولات البرمجية، فإن EAX و EDX و ECX يجب أن تكون متاحة للاستخدام داخل أي إجرائية أو وظيفة.
يتم استخدام السجلات الأخرى للاحتفاظ بالقيم غير المتقلبة، التي يجب الحفاظ عليها عبر الاستدعاءات. بمعنى آخر، عندما يقوم المصدر بطلب استدعاء إجراء، فمن الممكن أن نتوقع أن هذه السجلات سوف تحمل نفس القيمة الراجعة من الوجهة.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.