بهینه
سازی مستقل از زبان مبدا و ماشین مقصد
انجام میشود.
زبانهای
میانی متداول برای نمایش کد میانی عبارتند
از:
۱.
درخت
نحو
۲.نمایش
پسوندی
۳.
کد
سه آدرسه
برای
تولید کد میانی به پشته مفهومی نیاز داریم.
برای
پرش از تکنیک 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 . استفاده
از نشانه و شکستن قواعد.
حداقل
تعداد متغیرهای موقت لازم
هیچ نظری موجود نیست:
ارسال یک نظر