কমপ্লায়ারদের দ্বারা উত্পাদিত চূড়ান্ত চিত্রগুলিতে বিন ফাইল এবং বর্ধিত লোডার বিন্যাস ELf ফাইল উভয়ই থাকে, বিশেষত ELF ফাইলের ইউটিলিটি উভয়ের মধ্যে পার্থক্য কী।
কমপ্লায়ারদের দ্বারা উত্পাদিত চূড়ান্ত চিত্রগুলিতে বিন ফাইল এবং বর্ধিত লোডার বিন্যাস ELf ফাইল উভয়ই থাকে, বিশেষত ELF ফাইলের ইউটিলিটি উভয়ের মধ্যে পার্থক্য কী।
উত্তর:
একটি বিন ফাইল একটি খাঁটি বাইনারি ফাইল যা কোনও মেমোরি ফিক্স-আপ বা স্থানান্তরিত না করে, এটির নির্দিষ্ট মেমরি ঠিকানায় লোড করার জন্য স্পষ্ট নির্দেশাবলী রয়েছে likely যেখানে ....
ইএলএফ ফাইলগুলি এক্সিকিউটেবল লিংকযোগ্য ফর্ম্যাট যা একটি প্রতীক বর্ণন এবং পুনঃস্থাপনযোগ্য টেবিল সমন্বিত করে, এটি কার্নেল দ্বারা কোনও মেমরি ঠিকানায় লোড করা যেতে পারে এবং সমস্ত চিহ্ন ব্যবহার করা হয়, যেখানে এটি মেমরি ঠিকানা থেকে অফসেটে সামঞ্জস্য হয় ভার ছিল। সাধারণত ইএলএফ ফাইলগুলির নামকরণের জন্য 'ডেটা', 'পাঠ্য', 'বিএসএস' এর মতো অনেকগুলি বিভাগ থাকে তবে কয়েকটি ... এটি সেই বিভাগগুলির মধ্যে যেখানে রান-টাইম গণনা করতে পারে যেখানে প্রতীকটির স্মৃতি রেফারেন্সগুলি সামঞ্জস্য করতে হবে গতিশীলভাবে রান-টাইমে
একটি বিন ফাইল হ'ল বিট এবং বাইট যা রোমে যায় বা কোনও নির্দিষ্ট ঠিকানা যেখানে আপনি প্রোগ্রামটি চালাবেন। আপনি এই ডেটাটি নিতে এবং এটি সরাসরি যেমন লোড করতে পারেন, আপনার বেস ঠিকানাটি কী তা জানা দরকার যদিও এটি সেখানে সাধারণত নেই।
একটি এলফ ফাইলটিতে বিনের তথ্য রয়েছে তবে এটি চারপাশে রয়েছে প্রচুর অন্যান্য তথ্য, সম্ভাব্য ডিবাগ তথ্য, চিহ্নগুলি, বাইনারিটির মধ্যে থাকা ডেটা থেকে কোডকে আলাদা করতে পারে। বাইনারি ডেটা একাধিক অংশের জন্য মঞ্জুরি দেয় (যখন আপনি এইগুলির মধ্যে একটিটিকে একটি বাক্সে ফেলে দেন তখন আপনি একটি বড় বিন ফাইলটি ফিল্ড ডেটা দিয়ে পরবর্তী ব্লকে প্যাড করতে পাবেন)। আপনাকে জানায় যে আপনার কাছে কতটা বাইনারি রয়েছে এবং সেখানে কতগুলি বিএসএস ডেটা রয়েছে যা জেরোতে আরম্ভ করতে চায় (gnu সরঞ্জামগুলিতে বিন ফাইলগুলি সঠিকভাবে তৈরি করতে সমস্যা হয়)।
এলফ ফাইল ফর্ম্যাটটি একটি স্ট্যান্ডার্ড, আর্ম স্ট্যান্ডার্ডে তার বর্ধিতকরণ / প্রকরণগুলি প্রকাশ করে। আমি প্রত্যেককে একটি এলফ পার্সিং প্রোগ্রাম লেখার পরামর্শ দিচ্ছি সেখানে কী রয়েছে তা বোঝার জন্য, একটি লাইব্রেরি নিয়ে বিরক্ত করবেন না, কেবল অনুমানের তথ্য এবং কাঠামো ব্যবহার করা বেশ সহজ। জিনু সমস্যাগুলি সাধারণভাবে .bin ফাইলগুলি তৈরি করার পাশাপাশি লিঙ্কার স্ক্রিপ্টগুলি ডিবাগ করা এবং অন্যান্য জিনিস যা আপনার বিন বা এলফ আউটপুটকে গোলমাল করতে সহায়তা করতে পারে সেগুলি কাটিয়ে উঠতে সহায়তা করে।
কিছু সংস্থান:
ELF ফর্ম্যাটটি সাধারণত সংকলনের ডিফল্ট আউটপুট। আপনি যদি জিএনইউ সরঞ্জাম চেইন ব্যবহার করেন তবে আপনি এজবকপি ব্যবহার করে বাইনারি বিন্যাসে এটি অনুবাদ করতে পারেন, যেমন:
arm-elf-objcopy -O binary [elf-input-file] [binary-output-file]
অথবা থেকে ইউএলএফ ইউটিলিটি (যদিও বেশিরভাগ আইডিই যেমন এডিএস-তে নির্মিত) ব্যবহার করে:
fromelf -bin -o [binary-output-file] [elf-input-file]
আমি এখানে একটি পয়েন্ট ঠিক করতে চাই। ELF ফাইলটি সংযোগকারী নয়, লিংকার দ্বারা উত্পাদিত।
সংকলক মিশনটি উত্স কোড ফাইলগুলি ছাড়াই অবজেক্ট ফাইল (* .o) উত্পাদন করার পরে শেষ হয়। লিঙ্কার সমস্ত .o ফাইলগুলিকে একসাথে লিঙ্ক করে এবং ELF উত্পাদন করে।
ld
ডকুমেন্টেশন থেকে উদ্ধৃত : সাধারণত একটি প্রোগ্রাম সংকলনের শেষ ধাপটি ld চালানো হয়।
NOP
বিহীন কোনও ফাইল সংকলন করেন তবে এটি 400 বাইট ইএলএফ ধারকটির পরিবর্তে একটি একক বাইটে সংকলন করে । সুতরাং কেবল কাঁচা কোড, কোনও ধারক মেটাডেটা। এনএএসএম বলছে এটি বেশিরভাগ ক্ষেত্রে এমএস-ডস .কম এবং। এসওয়াইএস ফাইলগুলির জন্য ব্যবহৃত হয় । নির্দেশগুলি বেশিরভাগ উপেক্ষা করা হয় এবং কেবল প্রান্তিককরণ তৈরি করে।-f
-fbin
0x90
-felf32
section