Code Generation


Download 223.53 Kb.
bet15/19
Sana11.10.2023
Hajmi223.53 Kb.
#1699031
1   ...   11   12   13   14   15   16   17   18   19
Bog'liq
7037035 (1)

Looplar

  • Loop - bu oqim grafigidagi shunday tugunlar to'plami
    • To'plamdagi barcha tugunlar mustahkam bog'langan, ya'ni halqaning istalgan tugunidan boshqasiga qadar bir yoki bir nechta uzunlikdagi yo'l bor, butunlay halqa ichida va
    • Tugunlar to'plami o'ziga xos kirishga ega, ya'ni tsikldagi tugunga ega bo'lib, tsiklning tashqarisidagi tugunga kirishning yagona yo'li birinchi navbatda kirish orqali o'tishdir.

Asosiy blokning DAG ko'rinishi

1 A = 4*i

2 B = a[A]

3 C = 4*i

4 D = b[C]

5 E = B * D

6 F = mahsulot + E

7 Mahsulot = F

8 G = i + 1

9 i = G

10, agar men <= 20 bo'lsa (1)


4
men 0
*
a
[ ]
b
[ ]
*
ishlab chiqarish
+
1
+
20
<=

Mashq qilish

  • kod qismi berilgan
  • umumiy pastki ifodani bartaraf qilishdan oldin va keyin qaramlik grafigini chizish .


x := a*a + 2*a*b + b*b;
y := a*a – 2*a*b + b*b;

Javoblar

CSE dan oldingi qaramlik grafigi


*
a
a
*
2
a
*
b
+
*
b
b
+
x
*
a
a
*
2
a
*
b
-
*
b
b
+
y

Javoblar

CSE dan keyin qaramlik grafigi


*
2
*
+
+
x
*
a
*
b
*
a
a
*
2
a
*
b
-
*
b
b
+
y

Javoblar

CSE dan keyin qaramlik grafigi


*
2
*
+
+
x
-
+
y
*
a
*
b

Yaxshiroq kod ishlab chiqarish ko'proq kontekstni talab qiladi

  • Ortiqcha ifodalar :
  • Asosiy bloklar ustida :
    • Umumiy pastki ifodani yo'q qilish
    • Oxirgi foydalanish ma'lumotlari bilan kuzatuvni ro'yxatdan o'tkazing
  • Ortiqcha protseduralar :
    • global registrni ajratish, registrni bo'yash
  • Dastur bo'yicha :
    • Jarayonlararo oqim tahlili

Asosiy bloklar

  • aniqlash nuqtalari va o'zgaruvchilardan foydalanish nuqtalari haqida ma'lumot kerak
  • Boshqarish oqimi mavjud bo'lganda, o'zgaruvchining qiymati dasturning bir nechta nuqtalariga bog'liq bo'lishi mumkin
  • y := 12;

    x := y * 2; -- bu erda x = 24

    label1: …

    x := y * 2; -- 24? Aytish mumkin emas, y boshqacha bo'lishi mumkin

  • Asosiy blok - bu bitta kirishli, bitta chiqishli kod bo'lagi: asosiy blokda hisoblangan qiymatlar bitta kelib chiqishiga ega: ko'proq doimiy katlama va pastki ifodani yo'q qilish, registrdan yaxshiroq foydalanish.

Asosiy bloklarni topish

  • Dasturni asosiy bloklarga bo'lish uchun:
    • Asosiy blokdagi birinchi ko'rsatmani ( to'rtlik ) uning yetakchisini chaqiring
    • Dasturdagi birinchi ko'rsatma liderdir
    • Sakrashning maqsadi bo'lgan har qanday ko'rsatma etakchi hisoblanadi
    • Sakrashdan keyin keladigan har qanday ko'rsatma etakchi hisoblanadi
    • Nojo'ya ta'sirli protseduralar mavjud bo'lganda, har bir protsedura chaqiruvi asosiy blokni tugatadi
    • Asosiy blok etakchini va keyingi rahbargacha bo'lgan barcha ko'rsatmalarni o'z ichiga oladi

Asosiy bloklardagi transformatsiyalar

  • Umumiy pastki ifodani yo'q qilish: ortiqcha hisob-kitoblarni tanib oling, bitta vaqtinchalik bilan almashtiring
  • O'lik kodni yo'q qilish: keyinchalik ishlatilmaydigan hisob-kitoblarni tan oling, to'rtliklarni olib tashlang
  • Yaxshiroq rejalashtirish uchun bayonotlarni almashtiring
  • Ro'yxatdan yaxshi foydalanish uchun vaqtinchalik nomlarni o'zgartirish
  • Yuqoridagilarning barchasi ta'rif/foydalanish ma'lumotlarini olish uchun asosiy blokning ramziy bajarilishini talab qiladi

Download 223.53 Kb.

Do'stlaringiz bilan baham:
1   ...   11   12   13   14   15   16   17   18   19




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling