مكتبة واصفات الملفات الثنائية

مكتبة مُعرّفات الملفات الثنائية ( BFD ) هي الآلية الرئيسية لمشروع جنو لمعالجة ملفات الكائنات بشكل محمول وبصيغ متنوعة. اعتبارًا من عام 2003،يدعم ما يقرب من 50 تنسيق ملف و25 بنية مجموعة تعليمات .

تاريخ

عندما اقترح ديفيد هينكل-والاس من شركة سيغنوس سبورت تطوير المكتبة كوسيلة لفتح آفاق تجارية جديدة للشركة، قال ريتشارد ستالمان إن الأمر سيكون صعبًا؛ فردّ ديفيد قائلًا: "ليس الأمر بهذه الصعوبة". تم اختصار الاسم إلى "BFD"، وأصبح هذا هو اسم المكتبة. [ 1 ] لاحقًا، تم ابتكار اختصار "Binary File Descriptor" كاختصار عكسي لـ "BFD".

تصميم

يعمل نظام BFD من خلال تقديم عرض تجريدي مشترك لملفات الكائنات. يحتوي ملف الكائن على "رأس" يتضمن معلومات وصفية؛ وعدد متغير من "الأقسام" التي يحتوي كل منها على اسم وبعض السمات وكتلة من البيانات؛ وجدول رموز ؛ وإدخالات إعادة التوطين ؛ وما إلى ذلك.

داخليًا، يقوم بروتوكول BFD بترجمة البيانات من العرض المجرد إلى تفاصيل تخطيط البت/البايت المطلوبة من قبل المعالج المستهدف وتنسيق الملف. تشمل خدماته الرئيسية معالجة اختلافات ترتيب البايت ، مثل الفرق بين المضيف ذي الترتيب الصغير (little-endian) والهدف ذي الترتيب الكبير (big-endian) ، والتحويل الصحيح بين بيانات 32 بت و 64 بت ، وتفاصيل حساب العناوين المحددة بواسطة إدخالات إعادة التوطين.

يمكن تقسيم مكتبة BFD [ 2 ] منطقيًا إلى جزأين: الواجهة الأمامية والواجهة الخلفية. توفر الواجهة الأمامية واجهة موحدة مستقلة عن طريقة عرض ملفات الكائنات الأساسية، حيث يتفاعل المستخدمون معها. حتى لو لم يكن المستخدم على دراية ببنية ملفات الكائنات، فسيظل قادرًا على استخدام الواجهة. يتم إخفاء هذه التفاصيل بواسطة الواجهة الخلفية، التي تُنفذ كيفية تفاعل الواجهة الأمامية مع بنية ملفات الكائنات. عند إضافة نوع جديد من ملفات الكائنات، تحتاج الواجهة الخلفية إلى تسجيل هذا النوع وتنفيذه إذا كان تطبيق BFD بحاجة إلى دعمه.

على الرغم من أن BFD صُممت في الأصل لتكون مكتبة عامة قابلة للاستخدام من قِبل مجموعة واسعة من الأدوات، إلا أن الحاجة المتكررة لتعديل واجهة برمجة التطبيقات (API) لتلائم إمكانيات الأنظمة الجديدة قد حدّت من استخدامها؛ [ 3 ] [ 4 ] [ 5 ] عملاء BFD الرئيسيون هم مُجمِّع GNU (GAS)، ورابط GNU (GLD)، [ 6 ] وأدوات GNU Binary Utilities ("binutils") الأخرى ، ومُصحِّح أخطاء GNU (GDB). ونتيجةً لذلك، لا يتم توزيع BFD بشكل منفصل، بل يتم تضمينها دائمًا مع إصدارات binutils وGDB. ومع ذلك، تُعد BFD مكونًا أساسيًا في استخدام أدوات GNU لتطوير الأنظمة المُدمجة .

يمكن استخدام مكتبة BFD لقراءة البيانات المنظمة من ملف تفريغ الذاكرة الأساسية .

استخدام مكتبة BFD

مثال: طباعة حجم ملف الكائن باستخدام واجهات برمجة تطبيقات مكتبة bfd.

#include "bfd.h" #include <stdio.h>int main () { bfd * abfd = bfd_openr ( "ao" , NULL ); printf ( "%llu \n " , bfd_get_size ( abfd )); return 0 ; }

أمر البناء:

gcc main.c -lbfd -o output ./output # يطبع الحجم 

مراجع

  1. "المصادر المفتوحة: أصوات من ثورة المصادر المفتوحة" . أورايلي. يناير 1999. تاريخ الاسترجاع: 11 نوفمبر 2011. بدأ غامبي بتصميم المكتبة ومناقشة التصميم مع ستالمان. قال ستالمان إن المهمة صعبة للغاية - ستتطلب إعادة كتابة كاملة لجميع الأدوات، وسيكون من الصعب جدًا صيانتها. أخبره غامبي أنها ليست "مشكلة كبيرة" إلى هذا الحد، ومن ثم أطلق على هذا الابتكار الجديد اسم مكتبة BFD. (أوضحنا لعملائنا أن BFD اختصار لمكتبة واصفات الملفات الثنائية).
  2. مواصفات BFD
  3. لانغاسيك، ستيف (22-05-2005). "رد: الاعتماد على مكتبة libbfd المشتركة من binutils-dev" . قائمة بريدية debian-devel . تم الاطلاع بتاريخ 03-04-2011 .
  4. كوراتومي، توشيو (2010-06-04). "binutils مرة أخرى" . قائمة بريدية لحزم فيدورا . تم الاسترجاع في 2011-04-03 .
  5. تايلور، إيان (12 سبتمبر 2003). "ردًا على: FreeBSD 4.6 - binutils 2.14 يُثبّت مكتبة libbfd غير ضرورية" . binutils (قائمة بريدية) . تم الاطلاع عليه في 3 أبريل 2011 .
  6. "دليل GNU ld - 1. نظرة عامة" . مشروع GNU .انظر أيضًا: "دليل GNU ld - 7. BFD" .