دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۱۶
  • اردیبهشت

جلسه ۰۱ : مروری بر طراحی کامپایلر

  • دسته‌بندی‌ها :
جلسه ۰۱ : مروری بر طراحی کامپایلر
    • جزئیات
    • نوع محتواآموزشی

      سلام و وقت بخیر خدمت همراهان وب سایت آموزشی پی وی لرن. با دوره کامل آموزش طراحی کامپایلر در خدمت شما عزیزان خواهیم بود. طراحی کامپایلر چگونه است؟ با مروری بر طراحی کامپایلر همراه خواهیم بود.

      مروری بر طراحی کامپایلر

      رایانه ها ترکیبی متعادل از نرم افزار و سخت افزار هستند. سخت افزار فقط یک قطعه دستگاه مکانیکی است و عملکردهای آن توسط یک نرم افزار سازگار کنترل می شوند. سخت افزار دستورالعمل ها را به صورت بار الکترونیکی درک می کند ، که معادل زبان باینری در برنامه نویسی در رایانه ها است. زبان دودویی تنها دو الفبای ۰ و ۱ را دارد. برای راهنمایی ، کدهای سخت افزاری باید با فرمت باینری نوشته شوند ، که به سادگی یک سری ۱ و ۰ است. نوشتن چنین کدهایی برای برنامه نویسان رایانه، کار سخت و دشواری خواهد بود ، به همین دلیل ما کامپایلرهایی برای نوشتن چنین کدها داریم.

      سیستم پردازش زبان

      دیدیم که هر سیستم رایانه ای از سخت افزار و نرم افزار ساخته شده است. سخت افزار زبانی را می فهمد ، که انسان ها قادر به درک آن نیستند. بنابراین برنامه ها را با زبان سطح بالا می نویسیم که درک و یادآوری آن برای ما ساده تر باشد. سپس این برنامه ها در یک سری ابزارها و مؤلفه های سیستم عامل تغذیه می شوند تا کد مورد نظر خود را که توسط دستگاه استفاده می شود دریافت کنند. این به سیستم پردازش زبان معروف است.

       

      طراحی کامپایلر چگونه است؟ - مروری بر طراحی کامپایلر

      طراحی کامپایلر چگونه است؟ – مروری بر طراحی کامپایلر

      زبان سطح بالا در مراحل مختلف به زبان باینری تبدیل می شود. کامپایلر برنامه ای است که زبان سطح بالا را به زبان اسمبلی – assembly تبدیل می کند. به طور مشابه ، اسمبلر (assembler) برنامه ای است که زبان assembly را به زبان سطح ماشین تبدیل می کند.

      بگذارید ابتدا بفهمیم چگونه یک برنامه با استفاده از کامپایلر C بر روی ماشین میزبان اجرا می شود.

      • کاربر برنامه ای را به زبان C (زبان سطح بالا) می نویسد.
      • کامپایلر C ، برنامه را کامپایل می کند و آن را به برنامه assembly (زبان سطح پایین) ترجمه می کند.
      • سپس اسمبلر برنامه assembly را به کد ماشین (object) ترجمه می کند.
      • از ابزار پیوند دهنده (linker) برای پیوند دادن کلیه قسمت های برنامه به منظور اجرای آن (کد دستگاه قابل اجرا) استفاده می شود.
      • یک loader همه ی این اجزا را در حافظه لود می کند و سپس برنامه اجرا می شود.

      با مبحث مروری بر طراحی کامپایلر و طراحی کامپایلر چگونه است؟ همراه هستیم.

      پیش از آن که مستقیماً به بررسی مفاهیم کامپایلرها بپردازیم باید با چند ابزار دیگر که ارتباط نزدیکی با کامپایلرها دارند آشنا شویم.

      پیش پردازنده (Preprocessor)

      پیش پردازنده ، که به طور کلی به عنوان بخشی از کامپایلر در نظر گرفته می شود ، ابزاری است که ورودی را برای کامپایلرها تولید می کند. این ابزار شامل پردازش های ماکرو (macro-processing)، تقویت (augmentation) ، گنجایش فایل ها (file inclusion) ، بسط زبان (language extension) و غیره سرو کار دارد.

      مفسر (Interpreter)

      مترجم یا مفسر مانند یک کامپایلر ، زبان سطح بالا را به زبان ماشین سطح پایین ترجمه می کند. تفاوت در نحوه خواندن کد منبع یا ورودی است. کامپایلر یک بار کل کد منبع را می خواند ، توکن ها را ایجاد می کند ، معانی را بررسی می کند ، کد میانی را تولید می کند و بعد کل برنامه را اجرا می کند و فرایند ممکن است مراحل زیادی را شامل شود. در مقابل ، یک مفسر عبارتی را از ورودی می خواند ، آن را به یک کد میانی تبدیل می کند ، آن را اجرا می کند ، سپس عبارت بعدی را به ترتیب می گیرد. اگر خطایی رخ دهد ، یک مترجم اجرا را متوقف کرده و آن را گزارش می کند. در حالی که یک کامپایلر کل برنامه را می خواند حتی اگر با چندین خطا روبرو شود.

      اسمبلر (Assembler)

      اسمبلر برنامه های زبان اسمبلی را به کد ماشین ترجمه می کند. خروجی اسمبلر یک فایل آبجت (object file) نام دارد که شامل ترکیبی از دستورالعمل های دستگاه به عنوان داده های مورد نیاز برای قرار دادن این دستورالعمل ها در حافظه است.

      پیوند دهنده (Linker)

      Linker یک برنامه کامپیوتری است که به منظور تهیه یک فایل اجرایی ، object file های مختلف را به یکدیگر پیوند داده و ادغام می کند. ممکن است همه این فایل ها توسط اسمبلرهای جداگانه کامپایل شده باشند. وظیفه اصلی یک لینک دهنده جستجو و یافتن ماژول / روال های ارجاع دار در یک برنامه و تعیین محل حافظه ای است که کدها می بایست در آن بارگذاری شوند و این امر باعث می شود دستورالعمل برنامه دارای ارجاع‌ های صحیحی باشند.

      لودر (Loader)

      Loader بخشی از سیستم عامل است و وظیفه بارگذاری فایل های اجرایی در حافظه و اجرای آن ها را دارد. لودر اندازه ی یک برنامه (دستورالعمل و داده) را محاسبه می کند و فضای حافظه را برای آن ایجاد می کند. این جزء ، ثبات های مختلف را جهت شروع اجرا مقدار دهی اولیه می کند.

      کامپایلر متقاطع (Cross-compiler)

      به کامپایلری که روی پلت فرم (A) کار می کند و قادر به تولید کد اجرایی برای پلت فرم (B) است ، یک کامپایلر متقاطع گفته می شود.

      کامپایلر سورس به سورس (Source-to-source Compiler)

      کامپایلری که سورس کد را با یک زبان برنامه نویسی می گیرد و آن را به سورس کد زبان برنامه نویسی دیگر ترجمه می کند ، یک کامپایلر سورس به سورس نام دارد.

      مبحث طراحی کامپایلر چگونه است؟ و مروری بر طراحی کامپایلر را در این بخش به پایان می رسانیم.

      کلام پایانی

      مروری بر طراحی کامپایلر و این که طراحی کامپایلر چگونه است؟ را در این بخش از آموزش مورد بررسی قرار دادیم. در ادامه ی مبحث مروری بر طراحی کامپایلر  به بررسی معماری و طراحی کامپایلر خواهیم پرداخت.

      QR:  جلسه ۰۱ : مروری بر طراحی کامپایلر
      به اشتراک بگذارید