Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Практикум «Оптимизирующие компиляторы» (на примере GCC)

Практикум «Оптимизирующие компиляторы» (на примере GCC), страница 16

PDF-файл Практикум «Оптимизирующие компиляторы» (на примере GCC), страница 16 Конструирование компиляторов (53255): Книга - 7 семестрПрактикум «Оптимизирующие компиляторы» (на примере GCC): Конструирование компиляторов - PDF, страница 16 (53255) - СтудИзба2019-09-18СтудИзба

Описание файла

PDF-файл из архива "Практикум «Оптимизирующие компиляторы» (на примере GCC)", который расположен в категории "". Всё это находится в предмете "конструирование компиляторов" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 16 страницы из PDF

ниже).Обычно файлы, обнаруженные этим способом являются архивнымифайлами, чьи элементы – объектные файлы. Линкер обрабатываетархивный файл, просматривая его в поиске элементов, определяющихсимволы, на которые были ссылки, но которые до сих пор неопределялись. Но, если оказывается, что обнаруженный файл – обычныйобъектный файл, то он линкуется в обычном порядке. Единственноеразличие между использованием опции -l и указанием имени файла в том,что -l добавляет lib и .a к library и ищет в нескольких каталогах.-IdirectoryДобавляет каталог directory в начало списка каталогов, используемыхдля поиска заголовочных файлов.

Опцию можно использовать дляподмены системных заголовочных файлов, подставляя собственныеверсии, поскольку эти каталоги просматриваются до каталогов системныхзаголовочных файлов. Если использована более чем одна опция -I,каталоги просматриваются в порядке слева направо; стандартныесистемные каталоги просматриваются в последнюю очередь.Практикум «оптимизирующие компиляторы»-LdirectoryДобавляет каталог directory в начало списка каталогов, используемыхдля поиска библиотек. Работа опции аналогична -I.Пример компиляцииПусть необходимо скомпилировать программу test.

Уже имеютсяобъектные модули foo.o и bar.o, причем модуль bar.o используетбиблиотекуz.Библиотекаz,расположенавкаталоге/usr/home/project/lib. Имеется так же файл test.c, использующийзаголовочные файлы из /usr/home/project/include. Команднаястрока для запуска GCC для описанного случая будет выглядетьследующим образом:$ gcc –o test –I/usr/home/project/include–L/usr/home/project/lib test.c foo.o –lz bar.oВ результате выполнения будет создан исполняемый файл с именем testПрактикум «оптимизирующие компиляторы»Приложение В. Каталоги GCCКорневой каталогINSTALLДокументация по конфигурированию и установке GCC.boehm-gcBoehm (имя собственное) сборщик мусора – часть Java Runtime Library.configДополнительные файлы для конфигурирования (добавляют некоторыефлаги в Makefile'ы в зависимости от архитектуры процессора иоперационной системы); обычно нужны для запуска autoconf.contribCкрипты, используемые разработчиками GCC.

См. contrib.fastjarРеализация команды jar; используется с Java front end.gccОсновной каталог gcc. См. Подкаталог gcc.includeЗаголовочные файлы для libiberty, библиотеки поддержки, используемойкомпилятором.libf2cПрактикум «оптимизирующие компиляторы»The Fortran runtime library.libffiБиблиотека libffi – часть Java runtime library.libibertyИспользуется для переносимости, а так же содержит некоторые основныеструктуры данных и алгоритмы; фактически, поддержка необходимыхопераций.libjavaThe Java runtime library.libobjcThe Objective-C runtime library.libstdc++-v3The C++ runtime library.maintainer-scriptsСкрипты разработчиков.

См. maintainer-scripts.zlibБиблиотека сжатия, используется Java front end'ом и в Java runtime library.contribanalyze_brprobЭтот скрипт используется для предсказания ветвлений. Применяютсяэвристический и hitrate подходы.compare_testsПрактикум «оптимизирующие компиляторы»Скрипт предназначен для автоматического тестирования некоторойутилиты и создания отчетов об этом тестировании.convert_to_f2cПереименовывает некоторые файлы из libg2c.convert_to_g2cПереименовывает некоторые файлы из libg2c.download_f2cЗагружает tarball netlib.gcc_buildАвтоматическая загрузка и сборка GCC.gcc_updateОбновляет локальное дерево CVS с репозитория GCC.gccbug.elПересылка отчета об ошибке gnats.gennewsАвтоматическое создание NEWS-файлов из он-лайн Release Notes.newcvsrootЗаменяет все файлы в CVS/Root и CVS/Repository.test_installedЗапуск тестов.test_summaryФормирует отчеты о тестировании и пересылает их.Практикум «оптимизирующие компиляторы»texi2pod.plПреобразует из texi в pod.warn_summaryСбор статистики при сборке GCC.Подкаталог gcc'language'Подкаталоги с описанием языков.

Подробнее см. 'language' (languageзаменяется на имя языка: cp, java, ada, f, objc и т.д.).configФайлы конфигурации для поддерживаемых архитектур и операционныхсистем. Подробнее см. config.docДокументация в формате Texinfo.fixincПоддержкакорректировкисистемныхзаголовочныхобеспечения работы с GCC.gincludeСистемные заголовочные файлы устанавливаемые GCC.intllibintl.poПоддержка различных языков.файлов;дляПрактикум «оптимизирующие компиляторы»testsuiteТесты GCC. Тестовая подсистема, поддерживаемая с помощью комплексаdejagnu.'language'config-lang.inОписание языка. Подробнее: стр. 30 GCC Internals.Make-lang.inlang-options.hОпции коммандной строки для fron end’а.lang-specs.hconfig'machine'Каталог с описанием архитектуры. Содержит machine.md, заголовки (hфайлы) и файлы с исходным текстом.

В данных файлах с помощью болееменее стройного метода описания gcc описываются разнообразныепроцессоры.Естественно,самые«продвинутые»описываются достаточно сложно и не в полной мере.оптимизацииПрактикум «оптимизирующие компиляторы»Приложение Г. LEX (FLEX)Лексический анализатор для GCC Front end генерируется при помощи Lex(FLEX). Lex предназначен для создания лексических анализаторов,которые могут использоваться вYacc.Входной язык содержит описания лексем в терминах регулярныхвыражений. Результатом работы LEX'a является программа на языке Си,которая читает файл yyin (обычно это стандартный ввод) и выделяет изнегопоследовательностисимволов(лексемы),соответствующиерегулярным выражениям.Рассмотрим способы записи регулярных выражений во входном языкеLex'а.

Алфавит Lex'а совпадает с алфавитом используемой ЭВМ. Символиз алфавита, естественно, представляет регулярное выражение из одногосимвола. Специальные символы (в том числе + - * ? ( ) [ ] { } | / \ ^ $ . < >)записываются после специального префикса \. Кроме того, применимы всетрадиционные способы кодирования символа в языке C. Символы ицепочки можно брать в кавычки:Примеры:• а "а" \а – три способа кодирования символа а• \n \t \007 "continue"• Имеется возможность задания класса символов:o [0-9] или [0123456789] – любая цифраo [A-Za-z] – любая букваo [^0-7] – любой символ, кроме восьмеричных цифрo .

– любой символ, кроме \nПрактикум «оптимизирующие компиляторы»Грамматика для записи регулярных выражений (в порядке убыванияприоритета):<р> : <р>* – повторение 0 или более раз<р> : <р>+ – повторение 1 или более раз<р> : <р>? – необязательный фрагмент<р> : <р><р> – конкатенация<р> : <р>{m,n} – повторение от m до n раз<р> : <р>{m} – повторение m раз<р> : <р>{m,} – повторение m или более раз<р> : ^<р> – фрагмент в начале строки<р> : <р>$ – фрагмент в конце строки<р> : <р>|<р> – любое из выражений<р> : <р>/<р> – первое выражение, если за ним следует второе<р> : (р) – скобки, используются для группировкиПримеры:[A-Za-z]([A-Za-z0-9]{0,7}) – идентификатор (имя) в языке C^#" "*define – начало #define в языке CПрограмма на входном языке Lex состоит из трех частей, разделенныхсимволами %%:Описания%%Правила%%ПрограммыПрактикум «оптимизирующие компиляторы»Раздел описаний содержит определения макросимволов (метасимволов) ввиде:ИМЯ ВЫРАЖЕНИЕЕсли в последующем тексте в регулярном выражении встречается {ИМЯ},то оно заменяется ВЫРАЖЕНИЕМ.

Если строка описаний начинается спробелов или заключена в скобки %{ ... }%, то она просто копируется ввыходной файл.Раздел правил содержит строки видаВЫРАЖЕНИЕ {ДЕЙСТВИЕ}ДЕЙСТВИЕ – это фрагмент программы на C, который выполняется тогда,когда обнаружена цепочка, соответствующая ВЫРАЖЕНИЮ. Действие,указанное в начале раздела без выражения, выполняется до начала разбора.Lex делает попытку выделить наиболее длинную цепочку из входногопотока. Если несколько правил дают цепочку одинаковой длины,применяется первое правило.

Так, при разборе по следующим правиламдля цепочки "123" будет применено первое правило, а для цепочки "123." –третье:[0-9]+(\+|\-)?[0-9]+(\+|\-)?[0-9]+"."[0-9]+Если ни одно из правил не удастся применить, входной символ будетскопирован в yyout. Если это нежелательно, в конец правил можнодобавить, например, строки:. {/* Ничего не делать */}\n { }Раздел программ может содержать произвольные тексты на C и целикомкопируется в выходной файл.

Обычно здесь записывается функцияyywrap(), которая определяет, что делать при достижении автоматом концаПрактикум «оптимизирующие компиляторы»входногофайла.Ненулевоевозвращаемоезначениеприводиткзавершению разбора, нулевое – к продолжению (перед продолжением,естественно, надо открыть какой-нибудь файл как yyin).Интерпретатор таблиц конечного автомата имеет имя yylex(). Автоматпрекращает работу (происходит возврат из функции yylex()), если в одномиз действий выполнен оператор return (результат yylex() будет совпадать суказанным в операторе) или достигнут конец файла и значение yywrap()отлично от 0 (результат yylex() будет равен 0).Традиционный пример входной программы для Lex'а – подсчет числа слови строк в файле:/***************** Раздел определений ****************//*NODELIM означает любой символ, кромеразделителей словNODELIM*/[^" "\t\n]int l,/* Число строк */w,/* Число слов */c;/* Число символов */%% /***************** Раздел правил ******************/{ l=w=c=0;/* Инициализация */}{NODELIM}+{ w++; c+=yyleng; /* Слово */}\n{ l++;/* Перевод строки */}.{ c++;/* Остальные символы */ }%% /*************** Раздел программ ******************/main() { yylex(); }yywrap() {printf(" Lines - %dl, w, c );return( 1 );}Words - %d Chars - %d\n",Практикум «оптимизирующие компиляторы»Внутри действий в правилах можно использовать некоторые специальныеконструкции и функции Lex'а:yytext– указатель на отождествленную цепочку символов, терминированнуюнулем;yyleng– длина этой цепочкиyyless(n)– вернуть последние n символов цепочки обратно во входной поток;yymore()– считать следующие символы в буфер yytext после текущей цепочкиyyunput(c)– поместить байт во входной потокECHO– копировать текущую цепочку в yyoutПрактикум «оптимизирующие компиляторы»Приложение Д.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5138
Авторов
на СтудИзбе
442
Средний доход
с одного платного файла
Обучение Подробнее