Object file
آبجیکٹ فائل ایک کمپیوٹر فائل ہے جس میں آبجیکٹ کوڈ ہوتا ہے، یعنی اسمبلر یا مرتب کرنے والے کا مشین کوڈ آؤٹ پٹ۔ آبجیکٹ کوڈ عام طور پر منتقل کرنے کے قابل ہوتا ہے، اور عام طور پر براہ راست قابل عمل نہیں ہوتا ہے۔ آبجیکٹ فائلوں کے لیے مختلف فارمیٹس ہیں، اور ایک ہی مشین کوڈ کو مختلف آبجیکٹ فائل فارمیٹس میں پیک کیا جا سکتا ہے۔ آبجیکٹ فائل مشترکہ لائبریری کی طرح بھی کام کر سکتی ہے۔ آبجیکٹ کوڈ کے علاوہ، آبجیکٹ فائلوں میں میٹا ڈیٹا ہو سکتا ہے جو لنک کرنے یا ڈیبگ کرنے کے لیے استعمال ہوتا ہے، بشمول: مختلف ماڈیولز کے درمیان علامتی کراس حوالہ جات کو حل کرنے کے لیے معلومات، نقل مکانی کی معلومات، اسٹیک ان وائنڈنگ معلومات، تبصرے، پروگرام کی علامتیں، ڈیبگنگ یا پروفائلنگ کی معلومات۔ دیگر میٹا ڈیٹا میں تالیف کی تاریخ اور وقت، مرتب کنندہ کا نام اور ورژن، اور دیگر شناخت کی معلومات شامل ہو سکتی ہیں۔ اصطلاح "آبجیکٹ پروگرام" کم از کم 1950 کی دہائی سے ہے: ایک کمپیوٹر پروگرامر ایک مرتب یا اسمبلر کے ساتھ آبجیکٹ کوڈ تیار کرتا ہے۔ مثال کے طور پر، لینکس کے تحت، جی این یو کمپائلر کلیکشن کمپائلر. o ایکسٹینشن والی فائلیں تیار کرے گا جو ای ایل ایف فارمیٹ استعمال کرتی ہیں۔ ونڈوز پر تالیف. او بی جے ایکسٹینشن والی فائلیں تیار کرتی ہے جو سی او ایف ایف فارمیٹ استعمال کرتی ہیں۔ اس کے بعد ایک لنکر کا استعمال آبجیکٹ کوڈ کو ایک قابل عمل پروگرام میں جوڑنے کے لیے کیا جاتا ہے یا ضرورت کے مطابق پہلے سے مرتب کردہ سسٹم لائبریریوں میں لائبریری کو کھینچا جاتا ہے۔ آبجیکٹ فائل فارمیٹس بہت سے مختلف آبجیکٹ فائل فارمیٹس ہیں۔ اصل میں ہر قسم کے کمپیوٹر کی اپنی منفرد شکل ہوتی تھی، لیکن یونکس اور دیگر پورٹیبل آپریٹنگ سسٹمز کی آمد کے ساتھ، کچھ فارمیٹس، جیسے ای ایل ایف اور سی او ایف ایف، کو مختلف قسم کے سسٹمز پر بیان اور استعمال کیا گیا ہے۔ یہ ممکن ہے کہ ایک ہی فارمیٹ کو لنکر ان پٹ اور آؤٹ پٹ دونوں کے طور پر استعمال کیا جائے، اور اس طرح لائبریری اور قابل عمل فائل فارمیٹ کے طور پر۔ کچھ فارمیٹس میں مختلف پروسیسرز کے لیے مشین کوڈ ہو سکتا ہے، جس میں آپریٹنگ سسٹم کے ذریعے منتخب کردہ درست کوڈ ہوتا ہے جب پروگرام لوڈ ہوتا ہے۔ کچھ نظام ایسے فارمیٹس کے درمیان فرق کرتے ہیں جو براہ راست قابل عمل ہوتے ہیں اور ایسے فارمیٹس جن کے لیے لنکر کے ذریعے پروسیسنگ کی ضرورت ہوتی ہے۔ مثال کے طور پر، او ایس/360 اور جانشین پہلے فارمیٹ کو لوڈ ماڈیول اور دوسرے کو آبجیکٹ ماڈیول کہتے ہیں۔ اس صورت میں فائلوں کے بالکل مختلف فارمیٹ ہوتے ہیں۔ آبجیکٹ فائل فارمیٹ کا ڈیزائن اور/یا انتخاب مجموعی طور پر سسٹم ڈیزائن کا ایک اہم حصہ ہے۔ یہ لنکر کی کارکردگی کو متاثر کرتا ہے اور اس طرح ایک پروگرام تیار کیے جانے کے دوران پروگرامر کا رخ بدلتا ہے۔ اگر فارمیٹ کو قابل عمل کے لیے استعمال کیا جاتا ہے، تو ڈیزائن پروگراموں کو چلانے میں لگنے والے وقت کو بھی متاثر کرتا ہے، اور اس طرح صارفین کے لیے ردعمل۔ بہت سے ابتدائی کمپیوٹر، یا چھوٹے مائیکرو کمپیوٹر، صرف ایک مطلق آبجیکٹ فارمیٹ کی حمایت کرتے ہیں۔ پروگرام منتقل کرنے کے قابل نہیں ہوتے ہیں ؛ انہیں مخصوص، پہلے سے طے شدہ پتے پر انجام دینے کے لیے جمع یا مرتب کرنے کی ضرورت ہوتی ہے۔ فائل میں نقل مکانی یا ربط کی کوئی معلومات نہیں ہے۔ ان فائلوں کو پڑھنے/لکھنے کی میموری میں لوڈ کیا جا سکتا ہے، یا صرف پڑھنے کی میموری میں محفوظ کیا جا سکتا ہے۔ مثال کے طور پر، موٹرولا 6800 ایم آئی کے بی یو جی مانیٹر میں کاغذی ٹیپ سے مطلق آبجیکٹ فائل (ایس آر ای سی فارمیٹ) کو پڑھنے کا معمول ہوتا ہے۔ DOS COM فائلیں مطلق آبجیکٹ فائلوں کی ایک حالیہ مثال ہیں۔ تقسیم زیادہ تر آبجیکٹ فائل فارمیٹس کو ڈیٹا کے الگ الگ حصوں کے طور پر تشکیل دیا جاتا ہے، ہر سیکشن میں ایک مخصوص قسم کا ڈیٹا ہوتا ہے۔ ان حصوں کو "میموری سیگمنٹ" کی اصطلاح کی وجہ سے "سیگمنٹس" کے نام سے جانا جاتا ہے، جو پہلے میموری مینجمنٹ کی ایک عام شکل تھی۔ جب کسی پروگرام کو لوڈر کے ذریعے میموری میں لوڈ کیا جاتا ہے، تو لوڈر میموری کے مختلف علاقوں کو پروگرام میں مختص کرتا ہے۔ ان میں سے کچھ علاقے آبجیکٹ فائل کے حصوں سے مطابقت رکھتے ہیں، اور اس طرح عام طور پر انہی ناموں سے جانے جاتے ہیں۔ دوسرے، جیسے اسٹیک، صرف رن ٹائم پر موجود ہوتے ہیں۔ بعض صورتوں میں، اصل میموری پتے کی وضاحت کے لیے لوڈر (یا لنکر) کے ذریعے نقل مکانی کی جاتی ہے۔ تاہم، بہت سے پروگراموں یا آرکیٹیکچرز کے لیے، منتقلی ضروری نہیں ہے، کیونکہ اسے میموری مینجمنٹ یونٹ یا پوزیشن سے آزاد کوڈ کے ذریعے سنبھالا جاتا ہے۔ کچھ سسٹمز پر آبجیکٹ فائل کے حصوں کو پھر میموری میں کاپی (پیج) کیا جا سکتا ہے اور مزید پروسیسنگ کی ضرورت کے بغیر اسے انجام دیا جا سکتا ہے۔ ان سسٹمز پر، یہ سست روی سے کیا جا سکتا ہے، یعنی صرف اس صورت میں جب حصوں کو عمل درآمد کے دوران حوالہ دیا جائے، مثال کے طور پر آبجیکٹ فائل کی پشت پناہی والی میموری میپڈ فائل کے ذریعے۔ عام آبجیکٹ فائل فارمیٹس کے ذریعہ سپورٹ کردہ ڈیٹا کی اقسام: ہیڈر (وضاحتی اور کنٹرول کی معلومات) کوڈ سیگمنٹ ("ٹیکسٹ سیگمنٹ"، قابل عمل کوڈ) ڈیٹا سیگمنٹ (ابتدائی جامد متغیرات) صرف پڑھنے کے لیے ڈیٹا سیگمنٹ (روڈاٹا، ابتدائی جامد مستقلات) بی ایس ایس سیگمنٹ (غیر ابتدائی جامد ڈیٹا، دونوں متغیرات اور مستقلات) نقل مکانی کی معلومات کو جوڑنے کے لیے بیرونی تعریفیں اور حوالہ جات متحرک معلومات کو جوڑنے کے لیے مختلف آبجیکٹ فائلوں میں معلومات کے حصوں کو ڈیبگ کرنے کو لنکر کے ذریعے ان اصولوں کے مطابق جوڑا جا سکتا ہے جب حصوں کی وضاحت کی جاتی ہے۔ آبجیکٹ فائلوں کے درمیان مشترکہ حصوں کے لیے کنونشن موجود ہیں۔ مثال کے طور پر، ڈی او ایس میں مختلف میموری ماڈل ہیں جو خصوصی حصوں کے ناموں کی وضاحت کرتے ہیں اور یہ کہ آیا انہیں ملایا جا سکتا ہے یا نہیں۔ ڈیبگنگ معلومات کا ڈیبگنگ ڈیٹا فارمیٹ یا تو آبجیکٹ فائل فارمیٹ کا ایک لازمی حصہ ہو سکتا ہے، جیسا کہ سی او ایف ایف میں، یا ایک نیم آزاد فارمیٹ جو کئی آبجیکٹ فارمیٹس کے ساتھ استعمال کیا جا سکتا ہے، جیسے کہ اسٹیبس یا ڈی ڈبلیو اے آر ایف۔ جی این یو پروجیکٹ کی بائنری فائل ڈسکرپٹر لائبریری (بی ایف ڈی لائبریری) مختلف فارمیٹس میں آبجیکٹ فائلوں کی ہیرا پھیری کے لیے ایک عام اے پی آئی فراہم کرتی ہے۔ انٹیل ہیکساڈیسیمل آبجیکٹ فائل فارمیٹ (عام طور پر فائل ایکسٹینشن. ایچ ای ایکس کے ساتھ، لیکن بعض اوقات. او بی جے کے ساتھ بھی) ریلوکیٹیبل آبجیکٹ ماڈیول فارمیٹ ویو فرنٹ. او بی جے حوالہ جات فائل مزید پڑھنے کے قابل عمل فائل فارمیٹس مرتب کنسٹرکشن کمپیوٹر لائبریریاں پروگرامنگ زبان کا نفاذ