logo

Кодни генерациялаш усуллари. Кодни оптималлаштириш. Дастурларнинг ички кўриниши ва уларни шакллантириш усуллари

Yuklangan vaqt:

20.09.2019

Ko'chirishlar soni:

0

Hajmi:

46 KB
К одни генерациялаш усуллари. Кодни оптималлаш тириш. Дастурларнинг ички кўриниши ва уларни шакллантириш усуллари Режа: 1. Кодни оптималлашнинг умумий тамойиллари. 2. Кодни генерациялаш усуллари. 3. Кодни генерациялашда «т ў ртлик»ни қў ллаш Калит сузлар.  Семантик тахлил  К омпилятор  К ирувчи занжир  О перанд  Функциялар  П роцедура  П араметр 1.Кодни оптималлашнинг умумий тамойиллари. Оптимизация бу фойдалирок натижали объект дастур олиш максадида компьютер дастуридаги амалларнинг узгартириш ва тартибга солиш билан боглик кайта ишлашдир. Оптимизация бир неча марта бажарилиши мумкин, код генерациясини тайёрлаш фазаси буйича ва кодни генерациялаш фазаси буйича.Натижавий дастурннинг фойдалилик курсаткичи булиб куйидаги критерийлардан фойдаланилади: 1)натижавий дастурнинг бажарилиши учун зарур булган хотира хажми 2) дастурнинг бажарилиш тезлиги. Айлантиришларни оптималлашни икки асосий куринишини фарклайдилар: 1) кирувчи дастур матнини натижавий объект кодига боглик булмаган холда унинг ички тасвирланишини куринишида айлантириш. 2) берилган айлантиришлар максадли хисоблаш тизимининг архитектурасидан боглик эмас. Улар аввалдан яхши таниш булган математик ва мантикий айлантиришларга асосланган. 3) натижавий объект дастурни айлантириш. Ушбу гурух айлантиришлари максадли хисоблаш тизимининг архитектурасидан боглик. Оптималлаш куйидаги синтаксис конструкциялар учун бажарилиши мумкин: 1)дастурнинг чизикли булаклари; 2) мантикий ифодалар 3)цикллар 4)процедура фукцияларини чакириклари 2. Кодни генерациялаш усуллари. Кодни ички ёзувларининг бир хил фрагментлари (постфикс ёзувлари амаллари, туртлик ва бошкалар) машина тилининг бир хил буйрукларини ифодалайди. Масалан, код генерацияланаётган PLUS _ OP туртлик, агар процессорда барча амаллар регистр-аккумлятор устида бажарилса, хар доим куйидаги кодни генерациялайди: LOAD регистр , операнд 1 ADD регистр, операнд 2 STORE регистр, натижа Машина командаларининг бу кетма-кетлиги коррект, лекин оптимал эмас. Масалан, куйидаги гап X := X + Y * Z олтита команда оркали амалга оширилади: LOAD регистр, Y (туртлик ( MULT _ OP , Sy , Sz , T 1)) MUL регистр, Z STORE регистр, T 1 LOAD регистр, X (туртлик ( ADD _ OP , Sx , T 1, Sx )) ADD регистр, T 1 STORE регистр, X Худди шунингдек, ушбу натижага келтирувчи куидаги дастурни куриш мумкин. LOAD регистр, Y MUL регистр, Z ADD регистр, X STORE регистр, X Ушбу усул билан генерацияланаётган код хар доим тугри хисобланади, лекин хар доим хам оптимал эмас. Шунинг учун кодни хисоблашларни аниклигига таъсир курсатмай туриб, узгартириш имконини берувчи курилмаларга эга булиш керак. Хар бир туртликка купгина холларда ягона машина командалари кетма-кетлиги мос келади, код генератори купинча хар бир туртлик буйича кисмдастурлар туплами мос келади. 3 . Т ў ртлик формаси. Кодни генерациялашда «тўртлик»ни қўллаш Постфикс ёзувдан дастур кодини куриш мумкин, лекин бундай ёзув формасини оптималлаштириш мураккаб иш. Купгина компильяторлар дасурнинг объект кодини куриш учун оптималлаш учун кулай булган ички формалардан фойдаланадилар. Генерация килинаётган коднинг энг куп таркалган ички тасвирлашни формаларидан бири бу туртликдир. Туртлик –бу туртта элементдан ташкил топган объектдир: амаллар, иккита операнд ва натижалар. Агар амал бажариш натижасида кандайдир узгарувчини киймати хисобланса, у холда бундай туртликни куриш унчалик мураккаб эмас. Масалан: Х:= Y + Z гап куйидаги туртлик оркали ифодаланади. ( PLUS _ OP , Sy , Sz , Sx ), бу ифода Sy белгилар жадвали билан ячейкада аникланган узгарувчини Sz ячейкада аникланган узгарувчи билан ( PLUS _ OP ) кушиб ва натижани Sx ячейкада саклашни англатади. Энди бошлангич гап мустакил бирлик сифатида ифодаланади, уни код генератори жойлашиш манзилидан катьи назар кайта ишлай олади. Шундай килиб, оптимизатор амаллар кетма-кетлигини кодни генерациялаш жараёнини мураккаблаштирмасдан узгартириши мумкин. Унар операторлар учун туртликнинг иккинчи операндини майдонини игнорироват килиш мумкин, иккитадан ортик операндларни талаб киладиган амалларни эса бир неча туртликлардан ташкил топган кетма-кетликлар куринишида ифодалаш мумкин. Масалан, куйидаги операторни X:= F(A,B,C,D) учта туртлик куринишидаги гурух сифатида ёзиш мумкин. ( F 1, A , B , Т1)  ( F 2, Т1,С, Т2) ( F , Т2, D , Х) F 1 ва F 2 функциялар оралик хисоблашларни амалга оширадилар, Т1 ва Т2 ячейкалар эса ушбу харакатларнинг натижаларини саклаш учун мулжалланган. Дастурни фактик куриш вактида код генератори объект кодида F 1 ( бу амал учун F 2 ва F амаллар оркали) амални тугри ифодалаши мумкин. Яна оралик ячейкалардан фойдаланишга боглик мисол караймиз. Фараз килайлик куйидаги постфикс ёзувли гап берилган булсин. SxSxSySz *+:= Бу гапга Y ва Z купайтириш амаллари, натижани Х билан кушувчи ва Х узгарувчига олинган суммани узлаштириувчи амаллар киради. Туртликни генерациялаш вактида купайтиришни амалга оширувчи учун ушбу оралик натижани сакловчи ячейка керак булади. Бу холатда, вактинчалик ва ички узгарувчи ташкил этилади деб фараз киламиз. Шундай килиб, каралаётган гап куйидаги кетма-кетликда ифодаланади. ( MULT _ OP , Sy , Sz , T 1) (ADD_OP,Sx,T1,Sx), Бу ерда биринчи туртлик Y ни Z га купайтириш ва натижани T1 ячейкага ёзишни , иккинчи туртлик эса X узгарувчини Y*Z амал натижасини сакловчи T1 узгарувчи билан кушишни ва суммани X га ёзувни аниклайди . Фойдаланилган адабиётлар 1. Молчанов А.Ю. Системное программное обеспечение: Учебник для вузов. –СПб: Питер, 2003.-396 с. 2. Афанасьев А.Н. Формальные языки и грамматики: Учебная школа: УлГТУ, 1997. – 84 с 3. Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции -: Мир, 1979.-487с. 4. А.Левин. Самоучитель полезных программ. Питер. Санкт-Петербург, 2002. 5. Карпов Б.И. Delphi: Специальный справочник. – СПб: Питер, 2001- 648с. 6. Карпов Б.И. Visual Basic Специальный справочник. – СПб: Питер, 2000-415с. 7. Карпов С.Ю. Теория автоматов. Учебные пособия для вузов. –СПб: Питер, 2003.-201с.