Компиляция босқичлари. Компилятор тузилиши
Код генерациясига тайёргарлик
Download 151.43 Kb.
|
Компиляция босқичлари
- Bu sahifa navigatsiya:
- Код генерацияси.
- Фойдаланилган адабиётлар
Код генерациясига тайёргарлик. Ушбу босқич синтез босқичининг биринчи фазаси бўлиб ҳисобланади. Одатда ушбу босқичда иккита асосий иш бажарилади. 1) код ва маълумотлар учун хотира тақсимоти ва 2) дастурнинг глобал оптимизацияси.
Код генерацияси. Ушбу босқичда дастурнинг оралиқ кўриниши ва олдинги фазада амалга оширилган хотира тақсимоти асосида объектли код генерацияси бажарилади. Кейинги лекцияларда ушбу босқичлар ҳақида батафсил тўхталамиз. Фойдаланилган адабиётлар Молчанов А.Ю. Системное программное обеспечение: Учебник для вузов. –СПб: Питер, 2003.-396 с. Афанасьев А.Н. Формальные языки и грамматики: Учебная школа: УлГТУ, 1997. – 84 с Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции -: Мир, 1979.-487с. Компаниец Р.И. Системное программирование. Основы построения трансляторов. СПб.:Корна принт., 2000. -256 стр. Дьяконов В.Ю. Системное программирование. Высш.шк.. 1990. -221 с. Bosqichlari kompilyatsiyasi. Tuzilishi kompilyatori Aldin aytilganidek, jaraeni ikki bosqichdan translyatsiyasi: taxlil bosqichi va natijaviy dasturni xosil қилиш jaraenidan iborat . Biz ushbu bosqichlarni jamlama jaraeni misolida qo ' rib chiqamiz va kompyaltor қисмlari bilan tanishamiz. Jaraening umumiy sxemasi 1-rasmda keltirilgan tomonidan tuzilgan. Rasm. Sxemalarni kompilyatsiya qilish Ushbu sxemaga ko ' ra bosqichi 3 ta fazadan tahlili: leksik tahlil, sintaksis tahlili va semantik tahlil bosqichlaridan iborat. Jaraenid dusturning ichki (oraliq) ko ' rinishi tahlili, idlar jadvali shakllantiriladii. Dasturda uchragan xatoliklar tahlili (ya'ni xatoning turi aniklanadii) va lokalizatsiya qilinadi (ya'ni xato uchragan moduli va/yoki satr aniklanadii), so ' ngra topilgan xatoliklar xaqida foydalanuvchiga xabar beriladi. Natijaviy (obyektli) kodni sintez (xosil) қилиш bosqichi ikki fazadan: generatsiya kodi tayergarlik va bevosita generatsiya kodi fazalaridan toshkil topgandir. Ishlab chiqarish kodi natijasida ob'ektli kodi xosil qilinadi. Yukoridagi sxemadan qo'shirish mumkinki, rasmiy tillarno'qtai-nazaridan kompilyator tarjimasi jaraenida ikki xil funktsiya bajaradi. Boshlang'ich tili uchun kompilyatorning tahlili қилувчи қисми фарқловчи вазифасини бажаради, яъний айтаdiganda, agar dastur бошлангич тил қоидаlari asosida'зилгани болса, отолдаги муваффақиятли yakunlanadiva dasturning ichki (oralik) кориниси қилинади. Aksincha bo ' lsa u holda dasturdagi xatoliklar aniqlashtiriladiva bu hada foydalanuvchiga xabar beriladi. Ikkinchi tomondan kompilyatorning natijaviy tildagi kodni sintezi qiluvchi qismi mashinasi tilidigi kodni generation (hos) qilish bilan shugullanadiva bunda albatta u mashina tilidigi to'gri dasturlarni aniqlovchie rasmiy grammatika qoidalariga assoslanadie. Ushbu hosil қилingan dasturlar endi bevosita ijrochi (protsessor) tomonidan taniladidir. Fazalari bilan batafsil tanishib chiqaylik tomonidan tuzilgan. Avvalo shuni aytish kerakki, yukoridagi rasmdah tasvirlangan sxema-umumiy manzara. Konkrettorda ushbu anchadagi o'zgartirilgan shaklda uchiri mumkin sxemasi. Leksik ogohlantirish. Leksik tahlil davomida dastur matni chapdan o 'yngga tomon simvolma - belgi qo' rib chiqiladi va ramzlar leksemalarg birlashtiriladi. Eslatib o ' tamiz dasturning manoga eg eng kichik tuzilmasi leksema deb ataladi. Dasturda leksemasi sifatidada kalit o'zlar (manosi oldindan tayin қилingan ID), idillar, sonlarlar, arifmetik, mantiqiy yoki boshqa turdagiga amal belgilari kelishi mumkin. Lug'at davomida kompilyator leksemalar ruyxatini quradi. Ushbu ro ' yxatda leksemma, uning turi va boshka axborot saqlanadii. Shuningdek agar leksema identifikator bo 'lsa, unda bu leksema identifikatori ro' yxatga olinadi. Leksik tahlilchiningishlash tartibi quyidagi 2-rasmda tasvirlangan. Rasm 5. Leksik tahlilchining ishlashtartibi. Sintaksis tahlili. Sintaksis mazmuni boshlang'ich ma'lumot leksemmalar ro 'yhati bo' libhisoblanadii. Sintaksis tahlili davomida kompilyator qiladigan ish-leksemmalar ro 'yxati asosida tilda to' g 'ri sintaksis konstruktsiyasi, masalaon biror operatori, ifoda, ta' riflash konstruktsiyasi va haqozolar to ' g 'ri qo' rilganlini tekshirishdanaborat. Masalanquyidagilar leksemmalar ketma-ketligini qo'shib chiqaylik: for i:=1 do 5 to end begin; Leksik shahlilchi ushbu zangirda xech qanday xatolikni payqamaydi, chunki barcha leksemalar Paskal tili qaidalari mos, yoki Paskal tili kalit so'zlar bilan himoyalangan. Operatorning notugri yazilganliga sintaksisi vaqti-vaqti bilan aniq boladi. Eslatib o 'tamiz yukoridagi zangirning to' g 'ri ko' rinishi for i:=1 to 5 do begin end; shaqlida kerak. Albatta sintaksisi ta'll paytidada ham uchragan xatoliklar yo'ldosh aytilgan tarzdaayt ishlanadidir. Semantik ogohlantirish. Semantikist tahlil davomida boshlang'ich tilning semantikist qo'dalari qo'ra dasturning to'griligi tekshiriladidir. Oda bundayi qoidallar sintaksis qoidallari aniklovchii formal grammatika orkali ifodalanmaydi . Masalaon semantikqoidalar қatoriga identifikatori ishlatishdanoldin elon қилinganligi, arifmetik ifodad, iymat berishda, esa funktsiyasi protsedura chaqiruvida argumentlar formal parametrlarga turi va sonjihatdann mosliga, shartsiz o'tish operatorlarlarningning to'gri qo'llanilganligi tekshiriladidir. Semantikist tahlil qisman sintaksis tahlil fazasid, qisman kod generatsiasiga tayergarlik fazasid amalga oshiriladidir. Biz semantik tarkibni ishlab chiqarish kodi bilan bog'langan holda ishlatiladi. Dasturning ichki (oraliq) ko ' rishi. Dasturning ichki qo 'rinishi – Bou ta' rinning to ' g 'risida axborot-kommunikatsiya texnologiyalari va kommunikatsiyalarini rivojlantirish davlat qo' mitasi, yoki bu qo 'rin qo' riqlash qo 'riqlash sintaksisi ta' riqlangan daraxti to ' g ' ri. Ushbu daraxt va identifikator lar jadvali asosidada semantiktahlil, generatsiya kodi tayergarlik va bevosita generatsiya kodi bajaraladi. Ishlab chiqarish kodisig tayergarlik. Ushbu boskich sintezi boskichining birinchi bosqichi amalga oshirildi. Odatda ushbu bosqichda ikkita asosiyi ish bajariladii. 1) kod va ma'lumotlar uchun hotira taksimoti va 2) dusturning global optimallashtirish. Avlod kodi. Ushbu bosqichda dasturning oraliq ko ' rinishi va oldingi fazada amalga oshirilgan xotira taximoti asosida ob'ektli kod generatsiasi bajariladidir. Keyinglar lektsiyalardada ushbu boshliqlari haqidada batafsil toxtalamiz. Foydalanilgan adabietlar 1. Tizim dasturiy ta'minoti: universitetlar uchun darslik. - Sankt-Peterburg: Piter, 2003 Yil.-396 s.
Режа:
Download 151.43 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling