مهندسی طور

روزنوشت های یه مهندس تازه کار

مهندسی طور

روزنوشت های یه مهندس تازه کار

مهندسی طور

تا حالا به این فکر کردین که تو یه سیستم کامپیوتری GPU چقدر کارآمد و مهمه ولی به اندازه CPU شناخته شده نیست.یه جورایی همون "مجهولون فی الارض معروفون فی السماء" که میگن!
یه حسی بهم میگه کاش بتونم مثه GPU باشم :)

Linking & Locating

پنجشنبه, ۱۱ ارديبهشت ۱۳۹۹، ۱۲:۴۶ ق.ظ

خب داریم به آخرین مراحل آماده سازی یه کد برای پیاده سازی روی سخت افزار میرسیم.تا اینجا یه سری فایل های باینری از جاهای مختلف رسیده دستمون که میخوایم همه رو تبدیل به یه فایل کرده تقدیم سخت افزار کنیم! این کار وظیفه اصلی Linker هستش.برای انجام این مرحله یه Linker file هم در کنار بقیه فایل ها در اختیار لینکر قرار میگیره تا با کمک این فایل بتونه این مسئولیت رو انجام بده.ما میتونیم از طریق ترمینال این فایل رو با فلگ T- بهش بدیم.

سوالی که ممکنه پیش بیاد اینه که داخل این فایل چیا قرار میگیره؟

به صورت مختصر موارد زیر رو میتونیم داخل این فایل ببینیم :

  1. مپ کردن بخش های کد به نواحی مختلف حافظه
  2. آدرس شروع و اندازه نواحی حافظه
  3. پارامترهای دسترسی برای نواحی مختلف حافظه
  4. بررسی اینکه مساله over allocation رخ نداده باشه و در صورت رخداد اطلاع دادن
  5. مشخص کردن نقطه شروع برنامه

نکته جالب اینه که تو فرایند لینک کردن به تشخیص خود لینکر یه سری کتابخونه ها به پروژه اضافه میشه که برای بعضی قسمتا ضروریه.مثلا اینکه برنامه از تابع main شروع به اجرا کنه و در پایان این تابع هم متوقف بشه چیزی هست که تو یکی از همین کتابخونه ها معرفی شده به نحوی که اگه شما این کتابخونه رو به لینکر بگید اضافه نکنه(دیفالت اضافه میکنه خودش) تو اجرای برنامه با ارور مواجه میشین چون برنامه نمیدونه دقیقا از کجا باید شروع کنه به اجرا :)

بعضی از فلگ های مورد استفاده برای لینکر رو میتونید تو تصویر زیر ببینید :

 

راجع به دو فلگ آخر این جدول نحوه استفاده ازشون به صورت زیر هستش:

در نهایت وارد فرایند locating میشیم که منابع سخت افزاری رو(عمدتا فضای حافظه)در اختیار برنامه میذاره تا ازش استفاده کنه.خب طبیعتا این مرحله وابستگی زیادی به معماری سخت افزار پیدا میکنه.در وهله اول این اختصاص منابع به صورت نمادهایی (symbols) برای قسمت های مختلف حافظه صورت میگیره و در مرحله نهایی این نمادها به آدرس مستقیم حافظه مورد نظر تبدیل میشه و خب تو این مرحله تقریبا فرایند ما به اتمام میرسه!

فایل اجرایی که در نهایت تولید میشه میتونه به فرمت های مختلفی باشه :

  • executable and linker format (ELF)
  • common object file format (COFF)
  • Intel Hex Record
  • Motorola S Record (SREC)
  • ARM Image file (AIF)
  • خب فکر کنم تا همین جا کافی باشه.ایشالا در ادامه میریم سراغ معماری حافظه و نکات مرتبط باهاش!

نظرات (۰)

هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی