Binary File Descriptor library
بائنری فائل ڈسکرپٹر لائبریری (بی ایف ڈی) مختلف فارمیٹس میں آبجیکٹ فائلوں کے پورٹیبل ہیرا پھیری کے لیے جی این یو پروجیکٹ کا بنیادی طریقہ کار ہے۔ یہ کچھ 25 انسٹرکشن سیٹ آرکیٹیکچرز کے لیے تقریبا 50 فائل فارمیٹس کی حمایت کرتا ہے۔ تاریخ جب سائگنس سپورٹ کے ڈیوڈ ہینکل والیس نے لائبریری کو کمپنی کے لیے نئے کاروباری مواقع کھولنے کے ایک طریقے کے طور پر تیار کرنے کی تجویز پیش کی تو رچرڈ اسٹالمین نے کہا کہ یہ مشکل ہوگا ؛ ڈیوڈ کا جواب یہ تھا کہ یہ ایسا "بگ فکنگ ڈیل" نہیں تھا۔ "بی ایف ڈی" کے لیے مختصر کیا گیا، یہ لائبریری کا نام بن گیا۔ "بائنری فائل ڈسکرپٹر" کو بعد میں "بی ایف ڈی" کے مخفف کے طور پر ایجاد کیا گیا۔ ڈیزائن بی ایف ڈی آبجیکٹ فائلوں کا ایک عام تجریدی منظر پیش کرکے کام کرتا ہے۔ آبجیکٹ فائل میں وضاحتی معلومات کے ساتھ "ہیڈر" ہوتا ہے ؛ "سیکشنز" کی متغیر تعداد جس میں ہر ایک کا نام، کچھ صفات، اور ڈیٹا کا ایک بلاک ہوتا ہے ؛ ایک علامتی ٹیبل ؛ نقل مکانی کے اندراجات ؛ اور اسی طرح۔ اندرونی طور پر، بی ایف ڈی تجریدی منظر سے ڈیٹا کو ٹارگٹ پروسیسر اور فائل فارمیٹ کے لیے درکار بٹ/بائٹ لے آؤٹ کی تفصیلات میں ترجمہ کرتا ہے۔ اس کی کلیدی خدمات میں بائٹ آرڈر کے فرق کو سنبھالنا شامل ہے، جیسے کہ لٹل-اینڈین میزبان اور بگ-اینڈین ہدف کے درمیان، 32-بٹ اور 64-بٹ ڈیٹا کے درمیان درست تبدیلی، اور نقل مکانی کے اندراجات کے ذریعے مخصوص ایڈریس ریاضی کی تفصیلات۔ بی ایف ڈی لائبریری کو منطقی طور پر دو حصوں میں تقسیم کیا جا سکتا ہے۔ فرنٹ اینڈ اور بیک اینڈ۔ فرنٹ اینڈ ایک مشترکہ انٹرفیس دیتا ہے جو بنیادی آبجیکٹ فائل ویو سے آزاد ہے۔ صارفین اس انٹرفیس کے ساتھ آبجیکٹ فائلوں کے ساتھ تعامل کریں گے۔ یہاں تک کہ اگر آبجیکٹ فائلوں کی ترتیب صارف کو معلوم نہیں ہے، تب بھی صارف انٹرفیس استعمال کرنے کے قابل ہوگا۔ تفصیل کو چھپانے کا یہ کام بیک اینڈ کی مدد سے کیا جاتا ہے۔ بیک اینڈ اس بات کو نافذ کرتا ہے کہ فرنٹ اینڈ انٹرفیس آبجیکٹ فائلوں کی ترتیب کے ساتھ کس طرح تعامل کرتا ہے۔ جب بھی کسی نئی آبجیکٹ فائل کی قسم کو متعارف کرایا جاتا ہے تو بیک اینڈ کو اس قسم کو رجسٹر کرنے اور اسے نافذ کرنے کی ضرورت ہوتی ہے اگر اسے بی ایف ڈی ایپلی کیشن کے ذریعے سپورٹ کرنے کی ضرورت ہو۔ اگرچہ بی ایف ڈی کو اصل میں ایک عام لائبریری کے طور پر ڈیزائن کیا گیا تھا جو مختلف قسم کے ٹولز کے ذریعے قابل استعمال ہو، لیکن نئے سسٹمز کی صلاحیتوں کو ایڈجسٹ کرنے کے لیے اے پی آئی کے ساتھ ٹنکر کرنے کی اکثر ضرورت اس کے استعمال کو محدود کرنے کا رجحان رکھتی ہے۔ بی ایف ڈی کے اہم کلائنٹ جی این یو اسمبلر (جی اے ایس)، جی این یو لنکر (جی ایل ڈی)، اور دیگر جی این یو بائنری یوٹیلیٹیز ("بائنیوٹلز") ٹولز، اور جی این یو ڈیبگر (جی ڈی بی) ہیں۔ نتیجے کے طور پر، بی ایف ڈی کو الگ سے تقسیم نہیں کیا جاتا ہے، لیکن اسے ہمیشہ بائنٹیل اور جی ڈی بی کی ریلیز کے ساتھ شامل کیا جاتا ہے۔ اس کے باوجود، بی ایف ڈی سرایت شدہ نظام کی ترقی کے لیے جی این یو ٹولز کے استعمال میں ایک اہم جزو ہے۔ بی ایف ڈی لائبریری کو بنیادی ڈمپ سے منظم ڈیٹا کو پڑھنے کے لیے استعمال کیا جا سکتا ہے۔ بی ایف ڈی لائبریری کا استعمال مثلا: بی ایف ڈی لائبریری اے پی آئی ایس کا استعمال کرتے ہوئے آبجیکٹ فائل کا سائز پرنٹ کریں۔ #include "bfd.h" #include <stdio.h> انٹی مین () {بی ایف ڈی * اے بی ایف ڈی = بی ایف ڈی _ اوپنر ("اے۔ او"، این یو ایل ایل) ؛ پرنٹ ایف ("% llu\n"، بی ایف ڈی _ گیٹ _ سائز (اے بی ایف ڈی)) ؛ ریٹرن 0 ؛} کمانڈ بنائیں: جی سی سی main.c-ایل بی ایف ڈی-او آؤٹ پٹ۔/آؤٹ پٹ #سائز پرنٹ کرتا ہے حوالہ جات بیونٹلز پیج، موجودہ بی ایف ڈی ذرائع تک رسائی کے ساتھ او بی جے ڈمپ نفاذ، بہت سے بی ایف ڈی ایپیس سی (پروگرامنگ زبان) لائبریریوں کا استعمال کرتا ہے قابل عمل فائل فارمیٹس مفت کمپیوٹر لائبریریاں جی این یو پروجیکٹ سافٹ ویئر