Ma’ruza: Assemblerning ikkita o’tishli translyatori Reja


Kompilyatorning strukturasi. Ko’po’tishli va biro’tishli kompilyatorlar


Download 98.36 Kb.
bet3/8
Sana10.02.2023
Hajmi98.36 Kb.
#1186799
1   2   3   4   5   6   7   8
Bog'liq
maruza 5 (1)

Kompilyatorning strukturasi. Ko’po’tishli va biro’tishli kompilyatorlar.
Har bir kompilyator oddiy komandalaming cheklangan to’plamini bajarish qobiliyatiga ega. Ixtiyoriy murakkab xarakatlar ushbu komandalaming ketmaketligi ko’rinishida tasvirlanadi. YUqori daraja dasturlash tilida yozilgan dastumi bajarish uchun, uni awalombor mashina kodlaridagi komandalar ketma-ketligiga o’tkaziladi.
Boshlang’ich berilgan dastur (qandaydir dasturlash tilida yozilgan) belgilar ketma-ketligidan iborat bo’lib, ular kompbyuterga kiritiladi va - bajarilish uchun kerak bo’lgan ko’rinishga aylantiriladi.
Kompilyator bu shunday, aniq bir ko’rinishdagi belgilar qatorini (ya'ni berilgan dasturlash tilidagi dastur matnini) qabul qiladigan va boshqa belgilar qatorini (mashina tilidagi dastumi) chiqaradigan dasturdir. Kompilyatorlarga bir qator umumiy xususiyatlar xoski, ular kompilyasiya qilinayotgan dasturlami tashkil etish jarayonini soddalashtiradilar. Ixtiyoriy kompilyator tarkibiga quyidagi uchta asosiy komponenta kiradi:
- leksik tahlilchi (skanirlash bloki);
-sintaksis tahlilchi;
-mashina komandalari kodlari generatori.
T
ahlilchilaming xarakat tamoyillarini formal modellar yordamida ifodalash
24-rasm
mumkin bo’lgan holda, kodlar generatori uchun umumiy formal tasavvurlar mavjud emas. Leksik tahlil fazasida dastuming boshlang’ich berilgan matni leksemalar deb atalgan bir biri bilan bog’lanmagan zanjirlar ko’rinishidagi belgilarga (birliklarga) ajratiladi. Bunday matnli birliklar kalit so’zlar (IF, DO va boshqalar), o’zgaruvchilar ismlari, konstantalar va amallaming ishoralari (+,- yoki *) . Bunday so’ng bu so’zlar alohida belgilar guruhi emas, bo’linmaslar sifatida qaraladi. Dastumi leksemalarga bo’laklangandan so’ng, grammatik tahlil deb ataluvchi va operatorlaming ketma-ketligining to’g’riligini tekshiradigan, sintaksis tahlil fazasi keladi. Misol uchun, «IF ifoda THEN gap» ko’rinishiga ega IF gapi uchun grammatik tahlil quyidagicha: IF leksemasidan keyin to’g’ri ifoda keladi, ushbu ifodadan keyin THEN leksemasi keladi, undan so’ng yana to’g’ri ifoda keladi va u «;» belgisi bilan tugaydi. Oxirida kodni generasiyalash jarayoni bajariladi va sintaksis tahlil natijalaridan foydalanilib bajarishga tayyor mashina tilidagi dastur tashkil etiladi. Ixtiyoriy kompilyator tarkibiga yuqorida aytib o’tilgan uchta komponenta kirsa ham, ulaming o’zaro xarakati turli usullar orqali amalga oshiriladi. Ushbu komponentalar orasidagi o’zaro xarakatlaming keng tarqalgan variantlarini qarab chiqamiz.
24-rasm. Uch o’tishli translyator chizma ko’rinishi.

Skanerlash bloki boshlang’ich dastumi o’qiydi va leksemalar fayli sifatida ifodalaydi. Sintaksis tahlilchi esa bu faylni o’qiydi va dastumi yangi ifodasini chiqaradi, masalan postfiks ko’rinishida. Va nihoyat, bu fayl kod generatori orqali o’qiladi va dastumi ob'ekt kodi tashkil etiladi.


Bunday ko’rinishdagi kompilyator uch o’tishli kompilyator (24-rasm) deb ataladi, chunki dastur bu jarayonda uch marta o’qiladi (boshlang’ich dastur matni, leksemalar fayl va postfiks ko’rinishidagi fayl).
Kamchiliklari: Bajarilishning judayuqori bo’lmagan tezligi, chunki ko’pgina operasion tizimlarda fayllarga murojaat amallari nisbatan sekin bajariladi.
Yutuqlari: Kompiyasiyalash jarayonining har bir fazasining nisbatan biri -biriga bog’liq emasligi. Chunki qayta ishlanayotgan bloklar o’rtasidagi aloqa faqat berilganlaming fayllari orqali amalga oshiriladi, ixtiyoriy o’tish qolganlariga bog’liq bo’lmagan holda amalga oshirilishi mumkin. Bu esa:
1.Kompilyatoming turli bloklarini turli ishlab chiqamvchilar avtonom ravishda ishlashlari imkoniyatini yaratadi va faqatgina oraliq fayllami formalarini moslashtirish zarur bo’ladi.
2.Kompilyatoming egiluvchanligi. Masalan, turli turdagi kompyuterlar uchun bir tildan foydalanish, skanerlash va sintaksis tahlilchilaming bir xil bloklaridan foydalanish, lekin har bir tur kompyuter uchun maxsus kod generatorlarini yozishni anglatadi. Bir turdagi kompyuterlar uchun turli tillardan foydalanishda skanerlash va sintaksis tahlilchilaming turli bloklari talab qilinadi, lekin ular uchun umumiy kod generatoridan foydalanish mumkin.
3.Operativ xotira hajmiga minimal talablar (kompilyasiyaning turli faza modullarini navbatma-navbat, awalgisini chiqarib tashlagan holda, operativ xotiraga yuklash).
Kompilyasiyaning yuqori tezligiga erishish uchun bir o’tishli strukturaga ega kompilyator (25-rasm) qo’llaniladi.
Bu holda sintaksis tahlilchi asosiy boshqaruvchi dastur sifatida qism dasturlar ko’rinishida tashkil etilgan skaner bloki va kod generatorini chaqiradi. Sintaksis tahlilchi doimiy ravishda skanerlash blokiga qaralayotgan dasturdan bir leksemadan keyin boshqa leksemani oigan holda postfiks yozuvli yangi element uchraguniga qadar murojaat etadi, undan keyin kod generatoriga ushbu dastur fragmenti uchun ob'ekt kodini tashkil etuvchi kod generatoriga murojaat qiladi.
Yutuqlari: Maksimal unumdorlik va bajarilish tezligi. Chunki dastur bir marta qaraladi va faylga murojaat amallari minimal bo’ladi (faqat berilgan fayldan o’qish va ob'ekt fayllariga yozish).

Download 98.36 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




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