Кодты генерациялау және оңтайландыру
Семантикалық талдау
Семантикалық талдау – бастапқы бағдарламаның дұрыстығы мен семантикасын тексеретін құрастыру кезеңі. Ол талдаудан кейін және кодты генерациялау алдында жұмыс істейді.
Семантикалық талдаудың принциптері
Құрылым принципі: семантикалық талдау бастапқы бағдарламаның құрылымына негізделуі керек.
Инварианттық принцип: семантикалық талдау бастапқы бағдарламадағы операциялардың ретіне қарай инвариантты болуы керек.
Толықтық принципі: Семантикалық талдау барлық мүмкін болатын семантикалық қателерді тексеруі керек.
Семантикалық талдаудың мақсаты
Семантикалық талдаудың мақсаты – бастапқы программадағы қателерді анықтау және оның мағыналық дұрыстығын қамтамасыз ету.
Семантикалық талдаудың кезеңдері
Семантикалық талдауды келесі кезеңдерге бөлуге болады:
Түрді тексеру: Бұл қадам бастапқы бағдарламадағы айнымалылар, тұрақтылар және өрнектер түрлерінің сәйкестігін тексереді.
Мәндерді тексеру: Бұл қадам бастапқы бағдарламадағы айнымалылар, тұрақтылар және өрнектер мәндерінің дұрыстығын тексереді.
Шартты тексеру: Бұл қадам бастапқы бағдарламадағы шарттар дұрыстығын тексереді.
Әрекеттерді тексеру: Бұл қадам бастапқы бағдарламадағы әрекеттердің дұрыстығын тексереді.
Жадты бөлу
Жадты бөлу – бағдарламадағы айнымалылар мен мәліметтер үшін жадты бөлу процесі.
Жадты бөлудің екі негізгі жолы бар:
Статикалық жадты бөлу: жад бағдарлама құрастырылған кезде бөлінеді.
Динамикалық жадты бөлу: жад бағдарлама жұмыс істеп тұрған кезде бөлінеді.
Статикалық жадты бөлу
Статикалық жадты бөлу компилятор арқылы жүзеге асырылады. Бағдарламадағы әрбір айнымалы үшін жадтың бекітілген бөлігі бөлінеді.
Статикалық жадты бөлудің артықшылықтары:
Іске асырудың қарапайымдылығы.
Бағдарламаны орындау кезінде қосымша жадты өңдеудің қажеті жоқ.
Статикалық жадты бөлудің кемшіліктері:
Икемсіздік. Айнымалыға бөлінген жад көлемін бағдарлама жұмыс істеп тұрған кезде өзгерту мүмкін емес.
Динамикалық жадты бөлу
Динамикалық жадты бөлу бағдарлама жұмыс істеп тұрған кезде орын алады. Бағдарламадағы әрбір айнымалы үшін қажетті өлшемдегі жад аймағы бөлінеді.
Динамикалық жадты бөлудің артықшылықтары:
Икемділік. Айнымалыға бөлінген жад көлемін бағдарламаны орындау кезінде өзгертуге болады.
Динамикалық жадты бөлудің кемшіліктері:
Іске асырудың күрделілігі.
Бағдарламаны орындау кезінде қосымша жадты өңдеу қажеттілігі.
Кодты генерациялау және оңтайландыру әдістері
Кодты генерациялау – аралық кодты машиналық кодқа түрлендіру процесі.
Кодты оңтайландыру - бұл машина кодының өнімділігі мен тиімділігін арттыру процесі.
Кодты жасау және оңтайландырудың көптеген әдістері бар:
Нұсқауларды оңтайландыру: Нұсқаулар тізбегін өзгерту арқылы машина кодын оңтайландыру.
Архитектуралық оңтайландыру: процессор архитектурасының ерекшеліктерін ескере отырып, машиналық кодты оңтайландыру.
Жадты бөлу: жадты бөлуді оңтайландыру арқылы машина кодын оңтайландыру.
Тұрақты инъекция: айнымалы мәндерді тұрақтылармен ауыстыру арқылы машина кодын оңтайландыру.
Пайдаланылмаған деректерді жою: пайдаланылмаған деректерді жою арқылы машина кодын оңтайландырыңыз.
Кодты генерациялау және оңтайландыру әдістерін таңдау келесі факторларға байланысты:
Оңтайландыру мақсаттары: өнімділікті арттыру, код өлшемін азайту, кодты түсінуді жеңілдету.
Процессор архитектурасының ерекшеліктері: процессор түрі, оның тактілік жиілігі, командалар жинағы.
Бастапқы программаның мүмкіндіктері: программа құрылымы, программада қолданылатын мәліметтер типтері.
Қорытынды
Кодты жасау және оңтайландыру бағдарламалардың тиімділігі мен өнімділігін арттыратын маңызды құрастыру қадамдары болып табылады.