Object file
একটি অবজেক্ট ফাইল হল একটি কম্পিউটার ফাইল যা অবজেক্ট কোড ধারণ করে, অর্থাৎ একটি অ্যাসেম্বলার বা কম্পাইলারের মেশিন কোড আউটপুট। অবজেক্ট কোডটি সাধারণত স্থানান্তরযোগ্য, এবং সাধারণত সরাসরি সম্পাদনযোগ্য নয়। অবজেক্ট ফাইলের জন্য বিভিন্ন বিন্যাস রয়েছে এবং একই মেশিন কোড বিভিন্ন অবজেক্ট ফাইল বিন্যাসে প্যাকেজ করা যেতে পারে। একটি অবজেক্ট ফাইল শেয়ারড লাইব্রেরির মতোও কাজ করতে পারে। অবজেক্ট কোড ছাড়াও, অবজেক্ট ফাইলগুলিতে লিঙ্ক বা ডিবাগিংয়ের জন্য ব্যবহৃত মেটাডেটা থাকতে পারে, যার মধ্যে রয়েছেঃ বিভিন্ন মডিউলের মধ্যে প্রতীকী ক্রস-রেফারেন্স সমাধান করার জন্য তথ্য, স্থানান্তর তথ্য, স্ট্যাক আনওয়াইন্ডিং তথ্য, মন্তব্য, প্রোগ্রাম প্রতীক, ডিবাগিং বা প্রোফাইলিং তথ্য। অন্যান্য মেটাডেটাতে সংকলনের তারিখ ও সময়, সংকলকের নাম ও সংস্করণ এবং অন্যান্য সনাক্তকারী তথ্য অন্তর্ভুক্ত থাকতে পারে। "অবজেক্ট প্রোগ্রাম" শব্দটি অন্তত 1950-এর দশকেরঃ একজন কম্পিউটার প্রোগ্রামার একটি কম্পাইলার বা অ্যাসেম্বলার দিয়ে অবজেক্ট কোড তৈরি করে। উদাহরণস্বরূপ, লিনাক্সের অধীনে, জিএনইউ কম্পাইলার কালেকশন কম্পাইলার একটি. ও এক্সটেনশন সহ ফাইল তৈরি করবে যা ইএলএফ বিন্যাস ব্যবহার করে। উইন্ডোজে সংকলন একটি. ও. বি. জে এক্সটেনশন সহ ফাইল তৈরি করে যা সি. ও. এফ. এফ বিন্যাস ব্যবহার করে। তারপরে একটি লিঙ্কার ব্যবহার করা হয় অবজেক্ট কোডটিকে একটি এক্সিকিউটেবল প্রোগ্রামে একত্রিত করতে বা প্রয়োজনীয় হিসাবে প্রাক-সংকলিত সিস্টেম লাইব্রেরিতে লাইব্রেরি টানতে। অবজেক্ট ফাইল ফরম্যাট অনেকগুলি ভিন্ন অবজেক্ট ফাইল ফরম্যাট রয়েছে; মূলত প্রতিটি ধরনের কম্পিউটারের নিজস্ব অনন্য বিন্যাস ছিল, কিন্তু ইউনিক্স এবং অন্যান্য বহনযোগ্য অপারেটিং সিস্টেমের আবির্ভাবের সাথে সাথে, কিছু বিন্যাস, যেমন ইএলএফ এবং সিওএফএফ, বিভিন্ন ধরনের সিস্টেমে সংজ্ঞায়িত এবং ব্যবহৃত হয়েছে। লিঙ্কার ইনপুট এবং আউটপুট উভয় হিসাবে একই বিন্যাস ব্যবহার করা সম্ভব, এবং এইভাবে লাইব্রেরি এবং এক্সিকিউটেবল ফাইল বিন্যাস হিসাবে। কিছু বিন্যাসে বিভিন্ন প্রসেসরের জন্য মেশিন কোড থাকতে পারে, যখন প্রোগ্রামটি লোড করা হয় তখন অপারেটিং সিস্টেম দ্বারা সঠিক কোডটি বেছে নেওয়া হয়। কিছু সিস্টেম সরাসরি এক্সিকিউটেবল ফরম্যাট এবং লিঙ্কার দ্বারা প্রক্রিয়াকরণের প্রয়োজন এমন ফরম্যাটের মধ্যে পার্থক্য করে। উদাহরণস্বরূপ, ওএস/360 এবং উত্তরসূরীরা প্রথম বিন্যাসকে লোড মডিউল এবং দ্বিতীয়টিকে অবজেক্ট মডিউল বলে। এই ক্ষেত্রে ফাইলগুলির সম্পূর্ণ ভিন্ন বিন্যাস রয়েছে। একটি অবজেক্ট ফাইল ফরম্যাটের নকশা এবং/অথবা পছন্দ সামগ্রিক সিস্টেম ডিজাইনের একটি মূল অংশ। এটি লিঙ্কারের কার্যকারিতা প্রভাবিত করে এবং এইভাবে প্রোগ্রামার টার্নআরন্ড যখন একটি প্রোগ্রাম তৈরি করা হচ্ছে। যদি বিন্যাসটি এক্সিকিউটেবলের জন্য ব্যবহার করা হয়, তবে নকশাটি প্রোগ্রামগুলি চলতে শুরু করার সময়কেও প্রভাবিত করে এবং এইভাবে ব্যবহারকারীদের জন্য প্রতিক্রিয়াশীলতা। অনেক প্রাথমিক কম্পিউটার বা ছোট মাইক্রোকম্পিউটার শুধুমাত্র একটি পরম অবজেক্ট ফরম্যাটকে সমর্থন করে। প্রোগ্রামগুলি স্থানান্তরযোগ্য নয়; নির্দিষ্ট, পূর্বনির্ধারিত ঠিকানায় কার্যকর করার জন্য এগুলি একত্রিত বা সংকলিত করা প্রয়োজন। ফাইলটিতে কোনও স্থানান্তর বা সংযোগের তথ্য নেই। এই ফাইলগুলি রিড/রাইট মেমরিতে লোড করা যেতে পারে, অথবা রিড-অনলি মেমরিতে সংরক্ষণ করা যেতে পারে। উদাহরণস্বরূপ, মটোরোলা 6800 এম. আই. কে. বি. ইউ. জি মনিটর কাগজের টেপ থেকে একটি পরম অবজেক্ট ফাইল (এস. আর. ই. সি ফরম্যাট) পড়ার একটি রুটিন ধারণ করে। ডস কম ফাইলগুলি পরম অবজেক্ট ফাইলগুলির আরও সাম্প্রতিক উদাহরণ। সেগমেন্টেশন বেশিরভাগ অবজেক্ট ফাইল ফরম্যাটগুলি ডেটার পৃথক বিভাগ হিসাবে কাঠামোগত হয়, প্রতিটি বিভাগে একটি নির্দিষ্ট ধরনের ডেটা থাকে। এই বিভাগগুলি "মেমরি সেগমেন্ট" শব্দটির কারণে "সেগমেন্ট" নামে পরিচিত, যা আগে মেমরি ব্যবস্থাপনার একটি সাধারণ রূপ ছিল। যখন একটি প্রোগ্রাম একটি লোডার দ্বারা মেমরিতে লোড করা হয়, তখন লোডারটি প্রোগ্রামে মেমরির বিভিন্ন অঞ্চল বরাদ্দ করে। এই অঞ্চলগুলির মধ্যে কয়েকটি অবজেক্ট ফাইলের বিভাগগুলির সাথে মিলে যায় এবং তাই সাধারণত একই নামে পরিচিত হয়। অন্যান্য, যেমন স্ট্যাক, শুধুমাত্র রান টাইমে বিদ্যমান। কিছু ক্ষেত্রে, প্রকৃত মেমরি ঠিকানা নির্দিষ্ট করার জন্য লোডার (বা লিঙ্কার) দ্বারা স্থানান্তর করা হয়। যাইহোক, অনেক প্রোগ্রাম বা স্থাপত্যের জন্য, মেমরি ম্যানেজমেন্ট ইউনিট বা অবস্থান-স্বাধীন কোড দ্বারা পরিচালিত হওয়ার কারণে স্থানান্তরের প্রয়োজন হয় না। কিছু সিস্টেমে অবজেক্ট ফাইলের অংশগুলি আরও প্রক্রিয়াকরণের প্রয়োজন ছাড়াই মেমরিতে অনুলিপি (পৃষ্ঠা) করা যেতে পারে এবং কার্যকর করা যেতে পারে। এই সিস্টেমগুলিতে, এটি অলসভাবে করা যেতে পারে, অর্থাৎ, শুধুমাত্র যখন সেগমেন্টগুলি কার্যকর করার সময় উল্লেখ করা হয়, উদাহরণস্বরূপ অবজেক্ট ফাইল দ্বারা সমর্থিত একটি মেমরি-ম্যাপ করা ফাইলের মাধ্যমে। সাধারণ অবজেক্ট ফাইল ফরম্যাট দ্বারা সমর্থিত তথ্যের প্রকারঃ হেডার (বর্ণনামূলক এবং নিয়ন্ত্রণ তথ্য) কোড সেগমেন্ট ("টেক্সট সেগমেন্ট", এক্সিকিউটেবল কোড) ডেটা সেগমেন্ট (ইনিশিয়ালাইজড স্ট্যাটিক ভেরিয়েবল) রিড-অনলি ডেটা সেগমেন্ট (রোডাটা, ইনিশিয়ালাইজড স্ট্যাটিক কনস্ট্যান্ট) বিএসএস সেগমেন্ট (অনির্বচনীয় স্ট্যাটিক ডেটা, উভয় ভেরিয়েবল এবং কনস্ট্যান্ট) স্থানান্তর তথ্য সংযোগ করার জন্য বাহ্যিক সংজ্ঞা এবং রেফারেন্স ডাইনামিক লিঙ্কিং তথ্য বিভিন্ন অবজেক্ট ফাইলগুলিতে ডিবাগিং তথ্য বিভাগগুলি যখন বিভাগগুলি সংজ্ঞায়িত করা হয় তখন নির্দিষ্ট নিয়ম অনুসারে লিঙ্কার দ্বারা একত্রিত করা যেতে পারে। অবজেক্ট ফাইলগুলির মধ্যে ভাগ করা অংশগুলির জন্য প্রচলিত নিয়ম রয়েছে; উদাহরণস্বরূপ, ডস-এ বিভিন্ন মেমরি মডেল রয়েছে যা বিশেষ অংশগুলির নাম এবং সেগুলি একত্রিত করা যেতে পারে কিনা তা নির্দিষ্ট করে। ডিবাগিং তথ্যের ডিবাগিং ডেটা বিন্যাস হয় অবজেক্ট ফাইল বিন্যাসের একটি অবিচ্ছেদ্য অংশ হতে পারে, যেমন সিওএফএফ, অথবা একটি আধা-স্বাধীন বিন্যাস যা বিভিন্ন অবজেক্ট বিন্যাসের সাথে ব্যবহার করা যেতে পারে, যেমন স্ট্যাবস বা ডিডাব্লুএআরএফ। জি. এন. ইউ প্রকল্পের বাইনারি ফাইল বর্ণনাকারী গ্রন্থাগার (বি. এফ. ডি লাইব্রেরি) বিভিন্ন বিন্যাসে অবজেক্ট ফাইলগুলির কারসাজির জন্য একটি সাধারণ এ. পি. আই প্রদান করে। আরও দেখুন ইন্টেল হেক্সাডেসিমেল অবজেক্ট ফাইল ফরম্যাট (সাধারণত ফাইল এক্সটেনশন. হেক্স, তবে কখনও কখনও. ও. বি. জে-এর সাথেও) রিলোকেটেবল অবজেক্ট মডিউল ফরম্যাট ওয়েভফ্রন্ট. ও. বি. জে রেফারেন্স ফাইল আরও পড়া এক্সিকিউটেবল ফাইল ফরম্যাট কম্পাইলার নির্মাণ কম্পিউটার লাইব্রেরি প্রোগ্রামিং ভাষা বাস্তবায়ন