درس کامپایلر (بهار ۹۴-۹۵)

کامپایلر یک نرم‌افزار پیچیده است که برای تولیدش نیاز به دانش‌های مرتبط با علوم کامپیوتر است. البته در این درس نمی‌توانیم خیلی به پیش‌نیازهای نظری مربوط به کامپایلر بپردازیم، بلکه تکنیک‌های مورد نیاز برای تولید کامپایلر را معرفی می‌کنید.

هدف این درس این است که با تکنیک‌های لازم برای نوشتن کامپایلر آشنا شده و در نهایت یک کامپایلر بنویسیم.

فیلم‌های درس به زودی در سایت ویدئوهای دانشکده ریاضی قرار خواهد گرفت.

اسلایدهای درس:

جلسه عنوان اسلایدها فصل کتاب آهو
۱ درباره درس (PDF)
۲ مقدمه‌ای بر کامپایلر  (PDF) فصل ۱
۳ واژه‌یاب (PDF) فصل ۳ (۱ تا ۹)، فصل ۴.۲ و ۴.۳ و ۴.۸.۲
۴ پارسر با انقال و کاهش (PDF) فصل ۴.۵
۵ تولید جدول برای پارس با انتقال و کاهش (PDF) فصل ۴.۶ و ۴.۷
پارس بالا به پایین (PDF) فصل ۴.۴
قالب برای برنامه میانی (PDF) ۶٫۱ و ۶.۳ و ۶.۶
آنالیز مفهومی (PDF) ۶.۵ و ۶.۷
تولید کد ماشین (PDF) (PDF) ۷.۱ و ۷.۲ و ۷.۳ و ۸.۱-۸.۴
بهینه‌سازی کد – بهینه‌سازی عبارت‌های محاسباتی (PDF) ۸.۷ و ۸.۱۰
بهینه‌سازی کد – بهینه‌سازی عبارت‌های محاسباتی بر اساس جریان اجرای برنامه (PDF) ۹.۱-۹.۳
نظریه تحلیل جریان داده (PDF) ۹٫۴
باززمان‌بندی دستورالعمل‌ها (PDF) ۱۰.۱ و ۱۰.۲ و ۱۰.۳ و ۱۰.۴
باززمان‌بندی دستورالعمل‌ها: زمان‌بندی حلقه‌ها (PDF) (PDF) ۱۰٫۵
انتساب ثبات (PDF) ۸.۱ و ۸.۱۱
موازی‌سازی (PDF) فصل ۱۱
بهینه‌سازی حافظه (ارائه نشد) (PDF)
جمع‌بندی (ارائه نشد)  

آزمون‌ها

  1. کوئیز اول از مباحث Follow و First.
  2. میان‌ترم اول
  3. میان‌ترم دوم
  4. پایان‌ترم

تمرین‌ها

  1. تمرین اول: واژه‌یابی
  2. تمرین دوم: ساختار یاب ۱
  3. تمرین سوم: ساختار یاب ۲
  4. تمرین چهارم: تولید کد میانی
  5. تمرین پنجم: تحلیل معنایی و تولید کد
  6. تمرین ششم: بهینه‎سازی

پروژه

  1. قسمت اول پروژه
  2. قسمت دوم پروژه
  3. قسمت سوم پروژه و ماشین اجرا کننده کد نهایی

منابع