Машинаға тәуелді және машинадан тәуелсіз кодты оңтайландыру арасындағы айырмашылық

Мазмұны:

Машинаға тәуелді және машинадан тәуелсіз кодты оңтайландыру арасындағы айырмашылық
Машинаға тәуелді және машинадан тәуелсіз кодты оңтайландыру арасындағы айырмашылық

Бейне: Машинаға тәуелді және машинадан тәуелсіз кодты оңтайландыру арасындағы айырмашылық

Бейне: Машинаға тәуелді және машинадан тәуелсіз кодты оңтайландыру арасындағы айырмашылық
Бейне: 美国软件不授权制裁中国高校陷困境,专利世界第二不值钱明星越南抢订单 MATLAB does not authorize universities, patent second worthless. 2024, Шілде
Anonim

Негізгі айырмашылық – машинаға тәуелді және машинаға тәуелсіз кодты оңтайландыру

Компьютерлік бағдарламалар – тапсырмаларды орындау үшін аппараттық құралдарға берілген нұсқаулар жиынтығы. Бұл бағдарламалар негізінен жоғары деңгейлі тілдерде жазылады, ал компьютер ол тілді түсінбейді. Сондықтан компилятор сол нұсқауларды машиналық кодқа немесе мақсатты кодқа түрлендіру үшін қолданылады. Ол мақсатты кодты құру үшін бірнеше кезеңнен өтеді. Солардың бірі кодты оңтайландыру. Машинаға тәуелді және машинаға тәуелсіз кодты оңтайландыру сияқты екі оңтайландыру әдісі бар. Машинаға тәуелді және машинаға тәуелсіз кодты оңтайландырудың негізгі айырмашылығы мынада: машинаға тәуелді оңтайландыру нысан кодына қолданылады, ал машинадан тәуелсіз кодты оңтайландыру аралық кодқа қолданылады.

Машинаға тәуелді кодты оңтайландыру дегеніміз не?

Бастапқы кодты нысандық кодқа немесе мақсатты кодқа түрлендіру кезінде компилятор бірнеше кезеңнен өтеді. Біріншіден, бастапқы код токендерді шығаратын лексикалық анализаторға беріледі. Содан кейін нәтиже генерацияланған таңбалауыштардың логикалық тәртіпте екенін зерттейтін синтаксистік анализаторға беріледі. Бұл нәтиже семантикалық анализаторға беріледі. p=q + r; сияқты код бөлігі бар деп есептейік.

Мұнда, p, q - бүтін сандар, бірақ r - өзгермелі. Семантикалық анализатордың көмегімен c бүтін айнымалысы қалқымалы мәнге түрлендіріледі. Сондықтан ол семантикалық талдау жасайды. Семантикалық анализатордың шығысы аралық код генераторына түседі. Ол аралық кодты қайтарады, содан кейін кодты оңтайландырушыға өтеді. Кодты оңтайландыру - бұл нақты бастапқы кодтың мағынасын өзгертпестен, маңызды емес бағдарлама мәлімдемелерін жою процесі. Бұл міндетті оңтайландыру емес, бірақ ол мақсатты кодтың жұмыс уақытын жақсарта алады. Код оңтайландырғышының шығысы код генераторына беріледі және соңында мақсатты код құрастырылады.

Машинаға тәуелді және машинаға тәуелсіз кодты оңтайландыру арасындағы айырмашылық
Машинаға тәуелді және машинаға тәуелсіз кодты оңтайландыру арасындағы айырмашылық
Машинаға тәуелді және машинаға тәуелсіз кодты оңтайландыру арасындағы айырмашылық
Машинаға тәуелді және машинаға тәуелсіз кодты оңтайландыру арасындағы айырмашылық

01-сурет: Компилятордың фазалары

Машинаға тәуелді кодты оңтайландыруда оңтайландыру бастапқы кодқа қолданылады. Ресурстардың жеткілікті мөлшерін бөлу осы оңтайландыруда бағдарламаның орындалуын жақсартады.

Машинадан тәуелсіз кодты оңтайландыру дегеніміз не?

Аралық кодта оңтайландыру орындалса, ол машинадан тәуелсіз кодты оңтайландыру деп аталады. Машинаға тәуелсіз кодты оңтайландыруға қол жеткізудің әртүрлі әдістері бар. Олар келесі мысалдар арқылы сипатталған.

Төмендегі код жолдарын оқыңыз.

үшін (j=0; j<10; j ++) {

b=x+2;

a[j]=5 j;

}

Жоғарыдағы кодқа сәйкес, b=x+2 әрбір итерацияда қайта-қайта есептеледі. b есептелгеннен кейін ол өзгермейді. Осылайша, бұл жолды келесідей циклден тыс орналастыруға болады.

b=x+2;

үшін (j=0; j< 10; j++)

{a[j]=5j;

}

Бұл код қозғалысы деп аталады.

Төмендегі код жолдарын оқыңыз.

j=5;

егер (j==10) {

a=b+20;

}

Жоғарыдағы кодқа сәйкес, 'if block' ешқашан орындалмайды, себебі j мәні ешқашан 10-ға тең болмайды. Ол әлдеқашан 5 мәніне инициализацияланған. Сондықтан, бұл if блогын жоюға болады. Бұл әдіс өлі кодты жою.

Тағы бір әдіс – күшті азайту. Көбейту сияқты арифметикалық амалдар көбірек жадты, уақытты және орталық процессорды қажет етеді. Бұл қымбат өрнектерді b=a2 сияқты арзан өрнектермен ауыстыруға болады; немесе қосу арқылы ауыстыруға болады, b=a + a;

Төмендегі кодты қараңыз.

үшін (j=1; j <=5; j ++) {

мән=j5;

}

Көбейтудің орнына кодты келесідей өзгертуге болады.

int temp=5;

үшін (j=1; j<=5; j++) {

температура=температура + 5;

мән=температура;

}

Орындалу уақытында тұрақты болып табылатын өрнектерді бағалауға болады. Оны тұрақты бүктеу деп атайды. b[j+1]=c [j+1]; сияқты айтуға болады.

Оның орнына оны келесідей өзгертуге болады.

n=j +1;

b[n]=c[n];

Төмендегідей ілмектер болуы мүмкін.

үшін (j=0; j<5; j++) {

printf(“a\n”);

}

үшін (j=0; j <5; j++) {

printf(“b\n”);

}

a және b басып шығару, екеуінде де қайталану саны бірдей. Екеуін де келесідей бір for цикліне біріктіруге болады.

үшін (j=0; j <5; j++) {

printf(“a \n”);

printf(“b\n”);

}

Тағы бір маңызды әдіс - Жалпы ішкі өрнекті жою. Бұл есептеуді орындау үшін бірдей өрнектерді бір айнымалымен ауыстыру. Төмендегі кодты қараңыз.

a=bc + k;

d=b c + m;

Бұл кодты келесідей түрлендіруге болады.

температура=bc;

a=temp + k;

d=температура + м;

Бс қайта-қайта есептеу қажет емес. Көбейтілген мәнді айнымалы мәнде сақтауға және қайта пайдалануға болады.

Машинаға тәуелді және машинадан тәуелсіз кодты оңтайландырудың қандай ұқсастығы бар?

Бұл екеуі де Оптимизация кодына жатады

Машинаға тәуелді және машинадан тәуелсіз кодты оңтайландырудың арасындағы айырмашылық неде?

Машинаға тәуелді және машинадан тәуелсіз кодты оңтайландыру

Машинаға тәуелді кодты оңтайландыру нысан кодына қолданылады. Машинаға тәуелсіз кодты оңтайландыру аралық кодқа қолданылады.
Аппараттық құралдармен қатысу
Машинаға тәуелді оңтайландыру процессор регистрлері мен абсолютті жад сілтемелерін қамтиды. Машинаға тәуелсіз кодты оңтайландыру процессор регистрлерін немесе абсолютті жад сілтемелерін қамтымайды.

Қорытынды – машинаға тәуелді және машинаға тәуелсіз кодты оңтайландыру

Кодты оңтайландыру екі оңтайландыру әдісінен тұрады, атап айтқанда, машинаға тәуелді және машинаға тәуелсіз кодты оңтайландыру. Машинаға тәуелді және машинаға тәуелсіз кодты оңтайландырудың айырмашылығы мынада: машинаға тәуелді оңтайландыру нысан кодына қолданылады, ал машинадан тәуелсіз кодты оңтайландыру аралық кодқа қолданылады.

Машинаға тәуелді және машинадан тәуелсіз кодты оңтайландырудың PDF нұсқасын жүктеп алыңыз

Сіз осы мақаланың PDF нұсқасын жүктеп алып, сілтеме жазбасына сәйкес офлайн мақсаттарда пайдалана аласыз. PDF нұсқасын мына жерден жүктеп алыңыз: Машинаға тәуелді және машинаға тәуелсіз кодты оңтайландыру арасындағы айырмашылық

Ұсынылған: