واجهة التطبيق الثنائية


واجهة التطبيق الثنائية ( ABI ) هي واجهة يوفرها البرنامج ، وهي مُعرَّفة للوصول إلى كود الآلة داخل العملية . غالبًا ما يكون البرنامج المُعرِّض مكتبة ، والمُستخدِم برنامجًا .
تُعتبر واجهة التطبيق الثنائية (ABI) ذات مستوى تجريد منخفض نسبيًا. وتعتمد توافقية الواجهة على الجهاز المستهدف ومجموعة أدوات بناء البرمجيات . في المقابل، تُحدد واجهة برمجة التطبيقات (API) الوصول في شفرة المصدر ، وهي صيغة عالية المستوى نسبيًا، مستقلة عن الأجهزة، وسهلة القراءة . تُحدد واجهة برمجة التطبيقات واجهةً على مستوى شفرة المصدر، قبل الترجمة، بينما تُحدد واجهة التطبيق الثنائية واجهةً للشفرة المُترجمة.
تُعدّ توافقية واجهة برمجة التطبيقات (API) عادةً من أهمّ الاعتبارات في تصميم النظام ومجموعة الأدوات. مع ذلك، قد يضطر المبرمج إلى التعامل مع واجهة التطبيق الثنائية (ABI) مباشرةً عند كتابة برنامج بلغات متعددة أو عند استخدام مُجمِّعات متعددة للغة نفسها.
تُمكّن واجهة التطبيق الثنائية الكاملة (ABI) البرنامج الذي يدعمها من العمل دون تعديل على أنظمة تشغيل متعددة توفر هذه الواجهة. يجب أن يوفر النظام المستهدف جميع المكتبات المطلوبة (التي تُنفذ واجهة التطبيق الثنائية)، وقد تكون هناك متطلبات أخرى.
وصف
تشمل جوانب واجهة التطبيق الثنائية (ABI) ما يلي:
- مجموعة تعليمات المعالج ، مع تفاصيل مثل بنية ملف التسجيل، وأنواع الوصول إلى الذاكرة ، وما إلى ذلك.
- حجم وتخطيط ومحاذاة أنواع البيانات الأساسية التي يمكن للمعالج الوصول إليها مباشرة
- اتفاقية الاستدعاء ، التي تتحكم في كيفية تمرير وسائط الدوال واسترجاع القيم المُعادة؛ على سبيل المثال، تتحكم في ما يلي:
- كيفية تنظيم مكدس الاستدعاءات
- سواء تم تمرير جميع المعاملات على مكدس الاستدعاءات، أو تم تمرير بعضها في السجلات
- ما هي السجلات المستخدمة لكل معلمات وظيفية؟
- ما هي السجلات التي يجب على المتلقي الاحتفاظ بها (استعادة قيمتها في حالة تغييرها)؟
- ما إذا كان يتم دفع أول مُعامل دالة يتم تمريره على مكدس الاستدعاءات أولاً أم أخيراً
- سواء كان المتصل أو المستدعى مسؤولاً عن تنظيف مكدس الاستدعاءات بعد استدعاء الدالة
- تشويه الأسماء [ 1 ]
- انتشار الاستثناء [ 2 ]
- كيف ينبغي للتطبيق إجراء استدعاءات النظام إلى نظام التشغيل، وما إذا كانت واجهة التطبيق الثنائية (ABI) تحدد استدعاءات النظام المباشرة بدلاً من استدعاءات الإجراءات إلى أجزاء استدعاء النظام ، وأرقام استدعاءات النظام
- في حالة نظام تشغيل كامل ABI، يكون التنسيق الثنائي لملفات الكائنات ومكتبات البرامج وما إلى ذلك.
تتضمن واجهات التطبيقات الثنائية معيار التوافق الثنائي من إنتل (iBCS) [ 3 ] وواجهات التطبيقات الثنائية System V الإصدار 4 لمجموعات التعليمات المختلفة.
واجهة برمجة التطبيقات المدمجة
يحدد ABI المضمن ( EABI )، المستخدم في نظام التشغيل المضمن ، جوانب مثل تنسيقات الملفات وأنواع البيانات واستخدام السجلات وتنظيم إطار المكدس وتمرير معلمات الوظائف لبرنامج برمجي مضمن .
يقوم كل مترجم ومجمع يدعم واجهة التطبيق المشتركة (EABI) بإنشاء رمز كائن متوافق مع الرمز الناتج عن مترجمات ومجمعات أخرى مماثلة. وهذا يسمح للمطورين بربط المكتبات التي أنشأها مترجم ما مع رمز الكائن الناتج عن مترجم آخر.
عادةً ما يتم تحسين واجهة التطبيق الثنائية المُحسّنة (EABI) لتحقيق الأداء الأمثل في ظل الموارد المحدودة للنظام المُدمج المُستهدف. ولذلك، قد تتجاهل واجهة EABI التجريدات بين نواة النظام ومساحة المستخدم الموجودة عادةً في أنظمة تشغيل سطح المكتب . على سبيل المثال، قد يتم تجنب الربط الديناميكي للسماح بملفات تنفيذية أصغر حجمًا وتحميل أسرع، كما أن استخدام السجلات الثابتة يسمح بمكدسات واستدعاءات نواة أكثر إحكامًا، وتشغيل التطبيق في وضع مميز يسمح بالوصول المباشر إلى عمليات الأجهزة المُخصصة دون الحاجة إلى استدعاء برنامج تشغيل الجهاز. [ 4 ] يُمكن أن يؤثر اختيار واجهة EABI على الأداء. [ 5 ] [ 6 ]
تشمل واجهات التطبيقات الثنائية المُحسّنة (EABIs) واسعة الاستخدام واجهات PowerPC [ 4 ] و Arm [ 7 ] و MIPS [ 8 ] . قد تفرض تطبيقات برمجية محددة ، مثل مكتبة C، قيودًا إضافية لتشكيل واجهات تطبيقات ثنائية أكثر تحديدًا؛ ومن الأمثلة على ذلك واجهة GNU OABI وEABI لمعالجات ARM، وكلاهما عبارة عن مجموعات فرعية من واجهة ARM EABI [ 9 ] .
انظر أيضاً
- توافق الشفرة الثنائية – قدرة نظام الكمبيوتر على تشغيل شفرة لنظام مختلف
- بايت كود – مجموعة تعليمات مصممة ليتم تشغيلها بواسطة مترجم برمجي
- مقارنة برامج محاكاة التطبيقات
- رمز التصحيح – معلومات لتسهيل تصحيح الأخطاء البرمجية. صفحات تعرض أوصافًا مختصرة لأهداف إعادة التوجيه.
- واجهة الوظائف الخارجية – واجهة لاستدعاء الوظائف من لغات برمجة أخرى
- ربط اللغات – واجهة تسمح للغة برمجة واحدة باستخدام مكتبة مكتوبة بلغة أخرى
- البرامج الأصلية (في مجال الحوسبة) – البرامج التي تعمل مباشرة في سياق معين
- مؤشر مبهم – نوع بيانات مبهم يخزن عنوان ذاكرة
- بيئة باور أوبن - معيار مفتوح من تحالف AIM
- جدول الرموز – بنية بيانات يستخدمها مترجم اللغة مثل المترجم أو المفسر
- SWIG – أداة برمجة مفتوحة المصدر
- مايكروسوفت فيجوال سي++ – منتج بيئة التطوير المتكاملة
مراجع
- ↑ "Itanium C++ ABI" .(متوافق مع بنى معمارية متعددة)
- ↑ "Itanium C++ ABI: معالجة الاستثناءات" .(متوافق مع بنى معمارية متعددة)
- ↑ "معيار التوافق الثنائي من إنتل (iBCS)" .
- 1 2 "ملخص واجهة التطبيقات الثنائية المضمنة (EABI)". واجهة التطبيقات الثنائية المضمنة لمعالجات PowerPC: تطبيق 32 بت (ملف PDF) (الإصدار 1.0 ). شركة فري سكيل لأشباه الموصلات، 1 أكتوبر 1995، الصفحات 28-30 .
- ↑ "تسريع دبيان ARM عبر منفذ EABI" . Linuxdevices.com. ١٦ أكتوبر ٢٠١٦. مؤرشف من الأصل في ٢١ يناير ٢٠٠٧. تم الاطلاع عليه في ١١ أكتوبر ٢٠٠٧ .
- ↑ أندريس كالديرون ونيلسون كاستيلو (14 مارس 2007). "لماذا يُعدّ EABI من ARM مهمًا؟" . Linuxdevices.com. مؤرشف من الأصل في 31 مارس 2007. تم الاطلاع عليه في 11 أكتوبر 2007 .
- ↑ "واجهة التطبيق الثنائية لهندسة Arm" . Developer.arm.com . تم الاطلاع عليه بتاريخ 4 فبراير 2020 .
- ↑ إريك كريستوفر (11 يونيو 2003). "توثيق MIPS EABI" . binutils@sources.redhat.com (قائمة بريدية) . تم الاطلاع عليه في 19 يونيو 2020 .
- ↑ "ArmEabiPort" . ويكي دبيان .
من الناحية الدقيقة، فإن كلاً من واجهات التطبيقات الثنائية القديمة والجديدة لمعمارية ARM هي مجموعات فرعية من مواصفات ARM EABI، ولكن في الاستخدام اليومي، يُستخدم مصطلح "EABI" للإشارة إلى الجديد الموصوف هنا، و"OABI" أو "old-ABI" للإشارة إلى القديم.
روابط خارجية
- سياسات/مشاكل التوافق الثنائي مع لغة C++ - مجموعة من قواعد التطوير العامة لتجنب الإخلال بالتوافق الثنائي بين إصدارات المكتبات
- دليل استدعاء وظائف واجهة التطبيق الثنائية لنظام التشغيل OS X
- منفذ Debian ARM EABI
- μClib: واجهة برمجة تطبيقات مضمنة من موتورولا 8/16 بت
- واجهة التطبيق الثنائية AMD64 (x86-64) على موقع Wayback Machine (تمت أرشفته في 28-05-2008)
- واجهة التطبيق الثنائية (ABI) لبنية ARM
- وثائق MIPS EABI
- مُجمّعات Sun Studio 10 وواجهة التطبيق الثنائية AMD64 على موقع Wayback Machine (أرشيف 14 يناير 2015) – ملخص ومقارنة لبعض واجهات التطبيق الثنائية الشائعة
- دليل معايير واجهة التطبيقات الثنائية لمعالجات M•CORE من Freescale
- واجهات برمجة التطبيقات
- تقنية نظام التشغيل
