۱۳۹۸ فروردین ۱۹, دوشنبه

نکات تستی کنکور کامپایلر - تولید کد میانی

بهینه سازی مستقل از زبان مبدا و ماشین مقصد انجام میشود.
زبانهای میانی متداول برای نمایش کد میانی عبارتند از:
۱. درخت نحو
۲.نمایش پسوندی
۳. کد سه آدرسه
برای تولید کد میانی به پشته مفهومی نیاز داریم.
برای پرش از تکنیک backpatching استفاده میکنیم.
برای if-then-else به دوپرش که یکی شرطی و یکی غیر شرطی است نیاز است.
تولید کد میانی if-then-else نیاز به حداقل سه نماد کنشی(روال مفهومی) دارد.
تولید کد if-then نیاز به حداقل دو نماد کنشی دارد.
برای تولید while به یک پرش شرطی رو به جلو و یک پرش غیر شرطی رو به عقب نیاز داریم.
در پرش شرطی رو به عقب نیاز به backpatching نیست.
در تولید حلقه while نیاز به حداقل سه نماد کنشی داریم.
برای repeat-until و do-while نیاز به backpatching نداریم.
برای تولید repeat-until نیاز به حداقل دو نماد کنشی داریم.
اگر مقصد پرش یکسان باشد یک لیست ایجاد کرده و به هم اشاره میکنند.
چه استفاده از نشانه و چه شکستن قواعد تعداد قوانین یکسانی تولید میکنند.
اندازه جدول پرش ub-lb +1 است.
Virtual origin = base - lb1 * (ub2-lb2 +1) *E - lb2 * E مبدا مجازی در آرایه:
Location of A[i,j] = base + (i - lb1) * (ub2-lb2 +1) *E + (j -lb2) * E
Location A[i] = base + (i-lb) * E
چیزهایی که باید از کتاب خوانده شود: تولید کد بالا به پایین. Backpatching . استفاده از نشانه و شکستن قواعد. حداقل تعداد متغیرهای موقت لازم

هیچ نظری موجود نیست:

ارسال یک نظر