Спец часть (часть 2) (3 поток) (2015) (by Кибитова) (1161602), страница 35
Текст из файла (страница 35)
Лексический анализ сопровождается исключениемA forи B.(i Еслив n;телецикла использованыforвещественныепеременные,то при их=0;i<i++)(i=0;i<n;i+=2)последовательномсуммированииможетнапример,накапливатьсяпогрешность,незначащихфрагментовтекстов программ,комментариев.Для техкотораяязыков, привпоследовательномсуммированииможет накапливатьсяпогрешность,которая при{A[i]=B[i]*C[i];}{A[i]=B[i]*C[i];значительномчисле итерацийможет статьнедопустимо большой.которыхимеютсямакросредства,дополнительновыполняется расширениезначительном числе итераций может стать недопустимоA большой.[i+1] = B [i+1] * C [i+1]; }макровызовов.
Подробнее задачи и проблемы лексического анализа рассматриваются в 3.3.4.2.Машинно-зависимаяМашинно-зависимаяоптимизация3.3.4.2.оптимизацияпособии“Формальныеграмматикии языки. ЭлементыКажущиесяправильнымипреобразованияне теориивсегдатрансляции”.ведут к построениюМашинно-зависимыеметодыоптимизацииоптимизацииориентированыконкретнуюМашинно-зависимыеметодыориентированына наконкретнуюСинтаксическийсемантическийдолжна бытьэквивалентнойпрограммы.и Например,цикл анализаторы.
Программаархитектуру вычислительнойвычислительной системы,то тоестьестьсовокупностьаппаратныхиархитектуруна насовокупностьипроверенана синтаксическую и системы,семантическую правильность(должноаппаратныхбыть проверенопрограммныхсоставляющих,составляющих,а такжемеждуними.Некоторыеаспектыfor (i = 1; i < а100;i ++)взаимосвязи{взаимосвязи… A = i * между…} ними.программныхтакжеНекоторыеаспектысоблюдениеконтекстныхусловий),разделенана B;составныечасти,для каждойизметодовмашинно-зависимойоптимизацииимеютобщийхарактериприменяютсяметодовмашинно-зависимойоптимизацииимеютобщийхарактериприменяютсякоторыхбыть к сформировановнутреннее представление. В таблицыможетбытьдолжнопреобразованвиду:многимиразработчиками.К такимаспектамотносятся:многимиразработчиками.Ктакимаспектамотносятся:транслятора должна быть занесена вся информация, которую можно извлечь изfor(i = 1; i <структуры100;i ++) {вычислительной…задачиA = A + иB; проблемы…аппаратуры,}обрабатываемойпрограммы.Подробнеесинтаксического иучетрегистровойрегистровой• • учетструктурывычислительнойаппаратуры,семантическогоанализарассматриваютсявразделе3.3.2ивпособии• удалениеудалениеизлишнихкоманд,излишнихкоманд,однако •этопреобразованиебудетправильным только для целочисленных “Формальныепеременныхграмматикииоптимизацияязыки.теориитрансляции”.потокауправленияудалениенедостижимыхучастковоптимизацияпотокауправленияи иудалениенедостижимыхA и B.• •Еслив телеЭлементыциклаиспользованывещественныепеременные,тоучастковприихВнутреннеепредставлениеисходнойпрограммы.Внутреннеепредставлениепрограмм,программ,последовательном суммировании может накапливаться погрешность, которая приисходнойв“стоимости”компиляторев наибольшейстепенизависит от той обработки,• • программыснижение“стоимости”программы,снижениепрограммы,значительномчисле итерацийможетстатьнедопустимобольшой.которой• • должнаподвергнутьсяпрограмма.
Некоторые виды внутреннего использованиемашинныхидиом,использованиемашинныхидиом,3.3.4.2.Машинно-зависимаяоптимизация• • слияние,дроблениециклов,иногдатребующеесяиз-заиз-запредставлениябольшеподходяти дляфиксации структурыкомпилируемойпрограммы,слияние,дроблениеиразвертываниеразвертываниециклов,иногдатребующеесяМашинно-зависимыеметодыоптимизацииориентированынаконкретнуютехническихособенностейаппаратуры,другие ориентированына проведениеоптимизирующих преобразований, третьитехнических особенностейаппаратуры,архитектурувычислительнойсистемы,тоестьна совокупностьаппаратныхи• • удобныучетвекторныхиконвейерныхсвойствархитектуры.наиболееприсинтезе(генерации)результатакомпиляции.
Болееподробноучет векторных и конвейерных свойствархитектуры.программныхсоставляющих,атакжевзаимосвязимеждуними.Некоторыеаспектывнутреннее представление программ в компиляторах рассматривается в разделе 3.3.3 иОднимизизважнейшихаспектовявляетсяучетраспространеннойособенностиважнейшихаспектовявляетсяучетраспространеннойособенностимашинно-зависимойоптимизацииимеютобщийхарактери применяютсявметодовпособииОдним“Формальныеграмматикии языки.Элементытеориитрансляции”.многихвычислительныхархитектур,строящихсянапрограммнодоступныхрегистрах.многихвычислительныхархитектур,строящихсянапрограммнодоступныхрегистрах.многимиразработчиками.Ктакимаспектамотносятся:Фазыоптимизациипрограмм.Оптимизация– важнейшаязадачакомпилятора.СредиэтихрегистроводнимогутбытьспециальновыделеныдлявыполненияСредивысокогоэтих регистровмогут бытьспециальновыделены для конкретнойвыполненияЯзыкиуровня, однине связанныенапрямуюс особенностями • учет регистровойструктурывычислительнойаппаратуры,аппаратуры,накоторойдолжнывыполнятьсяпрограммы,безоптимизациинемогутопределенныхзадач(управлениестеком),адругиепредставляютсобойрегистры48• удаление излишних команд,48использоватьсядлясозданияэффективныхпрограмм.Оптимизацияпрограммможетобщегоназначения.Выполнениеоперацийпроизводитсясущественно• оптимизация потока управлениянади регистрамиудалениенедостижимыхучастковпроводитьсяв интересахразличныхОбычно используютдвебыстрее,чемнадэлементамипамяти, к свойствтому же программ.часто над элементамипамяти, кромепрограмм,стратегииоптимизации:оптимизацияв целяхповышенияскоростиработыапрограммыоперацийпересылки,вообщенельзявыполнятьникакихопераций,требуется• снижение“стоимости”программы,и оптимизацияв целяхуменьшенияразмеров напрограмм.Методы,припредварительнаязагрузкаих содержимогорегистры.Все используемыеэто ставит перед• использованиемашинныхидиом,реализацииэтихстратегийчастопротивоположны,хотянекоторыеизнихблизкидругразработчикамивсех икомпилятороврегистров• слияние,почтидроблениеразвертываниезадачициклов,распределенияиногда требующеесяиз-за икдругу.Болееподробнопроблемыоптимизациипрограммвкомпиляторахоптимизацииих использования.Этааппаратуры,задача в общем случае является NP-полной, но втехническихособенностейрассматриваютсяв разделекаждомслучаеи 3.3.4.удаетсянайтисвойствприемлемоерешение.•конкретномучет векторныхконвейерныхархитектуры.
Фазысинтезапрограмм.ВторойглавнойработойкомпилятораявляетсяПростейшим методом распределения регистровявляетсяих “жесткое”Однимиз важнейших аспектовучет распространеннойособенностигенерациярезультирующейпрограммы.На выходекомпиляторадолжнабытьраспределение,например, толькодля являетсяхраненияфактическихпараметровпроцедурмногихвычислительныхархитектур,строящихсянапрограммнодоступныхрегистрах.построенапоследовательностьсимволоввыходногоязыкаразработкупо теми/иливажнейшихпеременных. Такойвыбор,(“цепочка”)с одной стороны,упрощаетСредиэтихрегистроводнимогутбытьспециальновыделеныдлявыполненияправилам, которыепредлагаютсяязыкоммашинных командили языком использованияассемблера. Вкомпилятора,с другойстороны,ограничиваетэффективность регистров.случае машинных команд распознавателемэтойпоследовательностисимволовбудет4829Более целеваясложнымявляется распределениеосновесоздаетсяанализа результирующаяграфа потокавыступатьвычислительнаясистема, длянакоторойуправления.программа.Граф потока управления строится из узлов, которыми являются базовые блоки программы(последовательностикоманд, имеющиеодин вход иможноодин выход),иРаспределениепамяти и регистров.Даже в ассемблерахвстретитьдуг,соответствующихпереходамот одногобазовогоблока к памятидругомупри наличиифрагменты,выполняющиев том илиином видераспределениеи регистров.Темнекоторыхвходныхдлябазовогоблокаданных.Результатывычислениянекоторыхболее, подобные действия по формированию зон или блоков памяти, определениювыражений,в базовыхоказываютсяпри элементамэтом внутреннимисмещений вычисляемыхв этих зонах,припискеблоках,регистровнекоторымданных,(промежуточными),некоторыедругиерезультатыпереходятвсмежныеблоки.Такиенеобходимы в компиляторах.
При проведении таких действий производитсяобъектов, размещенных в блоках, помеченных, как занятые; процессостанавливается,когда новые занятыеперестают возникать;случае машинныхкоманд распознавателемэтойблокипоследовательностисимволов будет•всенедостижимыепоуказателямблокипамятиостаютсясвободными,выступать целевая вычислительная система, для которой создается результирующаяпрограмма.занятая ими память может быть уплотнена; одновременно с уплотнениемзанятых блоковосуществляетсямодификациязначенийдействующихРаспределениепамятии регистров. Дажев ассемблерахможновстретитьуказателей.фрагменты, выполняющие в том или ином виде распределение памяти и регистров.