Главная » Просмотр файлов » GCC - The Complete Reference

GCC - The Complete Reference (537669), страница 71

Файл №537669 GCC - The Complete Reference (GCC - The Complete Reference) 71 страницаGCC - The Complete Reference (537669) страница 712015-07-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 71)

Это дерево, представляющее струк- Глава та. Выход компилятора 3 1 7 туру входного исходного кода, можно записать в файл с расширением . Си с помо- шью опции -Ыпвр-сгапв1асйоп-ппдс. Для этого подается примерно такая команда: 3 дсс -ссЪлар-сгапв1ас1оп-ип1С вЬсмйшар.с -о еЬоийшер Файл, созданный с помощью этой команды, вЬомйшвр. с.

Сп, содержит текстовое представление дерева синтаксического разбора. Каждый узел имеет свой номер (91, 92 и тд.), и структура программы представлена ссылками каждого узла на номера других узлов, Можно в некоторых пределах управлять объемом данных, выводимых для каждого узла. Так, следующая команда формирует дерево синтаксического разбора, содержащее информацию о внутренней адресации компилятора. Эту информацию иожно использовать для определения перекрестных ссылок в дереве синтаксического разбора и нахождения внутренних адресов, получаемых с помощью опции -й (списанной ниже в этой главе): 5 дсс -гйимр-Сгапа1аС1оп-ип1С-аййгеев вЬомсЪпар.с -о еЬоийшар Приведенные ниже дае команды выведуг листинги с большим и с меньшим объемом информации соответственно: 3 дсс -сйпмр-сгапе1ас1оп-ип1с-а11 еъоийпмр.с -о еьомсъиар 5 дсс -сйппр-сгапе1ас1оп-пп1С-в11а аъоийпмр.с -о аьоийппр Дерево, полученное любой из приведенных выше команд, читается очень легко.

Следующий фрагмент дерева синтаксического разбора показывает, что каждый его узел описывается уникальным идентификатором и несколько более описательным именем. Кроме того, дерево содержит список атрибутов: егсрс вЬоийшар.сс5 ехсегп 91 бппсезоп йес1 сурес 93 агдас 95 1пдсс 4 аздпс 64 92 1йепе151ег лойе 93 бипсевоп Суре геспс 97 агсрс вЬомйшар.ссэ в1гес 912 94 чаг йес1 варе: 91 снапс 914 аздпс З2 95 рагаС йес1 На этом уровне синтаксического дерева большинство атрибутов определены по атношению к другим узлам дерева.

Например, атрибут павсе представляет собой номер узла, содержащего атрибуты всгд (строка) и 1пдсь (длина). некоторые узлы, например, 5ппсс1оп суре, содержат атрибут а1дп (выравнивание). Переменные, в частности аргументы и объявления, содержат атрибуты суре и пагае и, кроме того, атрибут овей, представляющий собой количество использований переменной в программе. Многие узлы имеют атрибут вгср (положение источника), который указымст имя и номер строки файла исходного кода, откуда был получен данный узел. папе сЬап есгд азае ров папе сЬап а1дп папе егер агдс пвей 92 94 паза еб еа 95 СУРе: 97 Е1О 1пгес 911 Зз пеейс 1 Е1З Сурвс Ет аЬомйипр.

с с 4 97 езаес 912 о 3 18 Часть!П. Внутренняя структура и окружение Заголовочные файлы Опция -н, которую также можно записать в форме --егасе-1пс1ибев, генерирует многоуровневый список всех включаемых файлов. Следуюший пример представляет собой выходной код, сгенерированный на системе Ыпцх для программы, написанной на языке С, включавшей только один заголовочный файл вебдо.

Ь: /ивг/11Ыдсс-11Ь/1586-рс-11пих-дпи/3.2/1пс1ийе/вгк31о.Ь /ивг/1пс1ийе/Ееасигев.Ь /ивг/1пс1ийе/вув/сйегв. Ь /ивг/1пс1иете/дпи/ всиЬв . Ь /ивг/11Ыдо с-11Ы15 8 6-рс-11пих-дпи/3. 2/1пс1исте/всссе г . Ь /ивг/1пс1исе/Ь1св/курев.Ь /ивг/11Ыдсс-11Ь/1586-рс-11пих-дпи/3.2/1пс1ийе/всктктег.Ь /ивг/1пс1икте/Ььсв/ргвгеактгурев.Ь /ивг/1пс1исе/Ьгсв/всвект.Ь /ивг/1пс1исе/11Ь1о.Ь /ивг/ъпс1иое/ О сопг19.Ь /ивг/11Ъ/дсс-11Ы1586-рс-11пих-дпи/3.2/1пс1исе/векыег.ь /иег/1пс1иете/маваг.

Ь /ивг/11Ыдсс-11Ы1586-рс-11пих-дтш/3. 2/1пс1исе/всевзег.Ь /ивг/1пс1икте/Ььсв/маваг.Ь /ивг/1пс1икте/дсопт.Ь /ивг/1псзикте/маваг.Ь /ивг/11Ыдсс-11Ъ|1586-рс-11пих-дпи/3. 2/1псзикте/вссъзеЕ.Ь /ивг/11Ыдсс — 11Ы1586-рс-11пих-дпи/3. 2/1пс1исе/вессек. Ь /ивг/11Ыдсс-11Ы158 6-рс-11пих-дпи/3. 2/1пс1исе/ведаге. Ь /ивг/1пс1ибе/Ьггв/втз31о 11т.Ь Ми1Е1р1е 1пс1иете диагсв шау Ье ивеги1 Еог1 /ивг/1пс1иое/Ъ1св/рЕЬгеаасурев.Ь /ивг/1пс1исе/Ьгсв/всвеет.Ь /ивг/1пс1икте/Ьгсв/вс81о 11а.Ь /ивг/1пс1иде/дпи/всиЬв.Ь Каждый уровень включения указывается количеством точек перед именем файла. Кроме того, в нижней части листинга приводятся имена заголовочных файлов, которые, возможно, необходимо исправить, поскольку включение любого из них более одного раза может привести к возникновению проблем, связанных с многократными объявлениями.

Необходимый программе объем памяти Ъ Тога1 0.664 12.239 3.985 1.803 мипвег 7 129 21 19 Вуеев 56 доза 336 152 КТХ аоогевв сапвс ъпе сопят соивзе сапвс тессог У компилятора можно запросить отчет об объеме памяти, требуемой для откомпилированнойой программы, а также подробные данные о том, каким образом эта память была выделена. Следуюший листинг содержит пример отчета о требуемом объеме памяти: Глава 18.

Выход компилятора 3 19 рс гед шеш вутвЬо1 гег ссо р1пв ед тога1 Д11ос ас е(( 8192 12 К 8192 З2К 28К 4096 52 К 8192 152 К Всг1пд роо1 епсг1ев 1аепс161егв 41осв Ьус ее ЕаЬ1е в1ве со11/веагсЬ 1пв/веагсЬ а тд. епегу 1опдевг епсгу 452 452 (100.00%) 16384 4805 (3339 очегпеас) 64К 0.0168 0.7609 10.63 Ьуеев (+/- 5.78) Зб Из приведенною листинга можно определить объемы памяти, выделенной для различных частей программы, и количество использований каждой из выделенных областей.

Такие данные могут оказаться особенно полезными лля анализа больших программ и объектных модулей, предназначенных для встраиваемых систем. Время компиляции программы Опция -01ше может использоваться при компиляции и компоновки для вывода компилятором дсс времени, затраченного на выполнение каждого отдельного процесса. Например, следующая команда компилирует три программы на языке С на ассемблерный язык, вызывает ассемблер для формирования отдельного объектного файла для каждой программы и использует со11есс2 для их компоновки: дсс -е1ше деевьои.с вегшакег.с вьоивег1пд.с -о деевьои $ сс1 0.15 0.02 4 ав 0.01 0.00 8 сс1 0.08 0.03 4 ав 0.01 0.01 4 сс1 0.13 0.03 4 ав 0.01 0.00 $ со11есс2 0.13 0.05 81ве 8 16 32 64 512 1О24 112 20 ток а1 1 14 216 391 1 1 1 801 овес 6216 4192 ЗЗ92 28 К 24 К 1О24 42 К 2580 112 К 8 224 3456 З128 8 16 16 ваза ОчегЬеад 184 180 88 288 196 28 416 104 1484 0.095 2.657 40.987 37.097 0.095 0.190 0.190 320 Часть!В.

Внутренняя структура и окружение Первое из двух приведенных для каждого процесса значений представляет собой пользовательское время (время, затраченное на выполнение кода подпроцессов)„а второе значение — системное время (время, затраченное процессом на выполнение системных вызовов). Действительные показания отсчетов времени в листинге не приводятся. Общее время, затраченное на выполнение всего процесса дсс, включая отсчеты времени, может быть получено при запуске дсс с помощью стандартной утилиты с1ше, как показано в следующем примере: 3 С1ше дос -Сгве деееЬов.с еегвахег.с вцовесг1пд.с -о деееЬон Промежуточное дерево компиляции С++ Компилятору д++ можно указать, что он должен выводить код промежуточного языка, который генерируется на верхнем уровне при предварительной трансляции.

Вывод может выполняться в различных точках процесса компиляции. Следуюшая команда выведет промежуточный код после его генерации до внесения каких-либо изменений или оптимизации: ь д++ -гктпвр-Егее-ог1дгпа1 взпшах.срр -о шзпшех Код промежуточного языка можно вывести также и после выполнения оптимизации: ь д++ -асцпар-Сгее-орСТв1хект шзпшах.срр -о ш1пшах Процесс подстановки кода айве-функций выполняется в коде промежуточного языка, а его результаты можно вывести с помощью следующей команды: Ь.

д++ -гттшар-Егее-1п11пео шзпшах.срр -о взпшах Формат выходных данных может задаваться указанием модификатора в конце имени каждой опции вывода кода. Добавление модификатора -аббгевв к концу опции приведет к включению адресной информации, соответствующей адресной информации, выводимой с помощью опции -б (описанной ниже в этой главе). Для уменьшения объема информации, включаемой в листинги, укажите модификатор -в11ш, а для его увеличения — модификатор -а11.

Например, следуюшая команда выведет код промежуточного языка после оптимизации в описательной форме: ь д++ -гопвр-Сгее-орезвзаео-а11 в1пшах.срр -о в1пвах Иерархия классов в программах на языке С++ Компилятору д++ можно указать, чтобы он выводил полную иерархию классов и таблицы виртуальных функций вашей программы. В выходные данные включается полная иерархия используемых программой системных классов, поэтому размер выходных данных может быть довольно большим. Следуюшая команда приведет к компиляции и выводу полной иерархии классов программы шйпшах. срр: ь д++ -гктшар-с1аее-ьзегагсцу ш1пвех.срр -о в1пшах В результате выполнения этой команды будет создан исполняемый файл шхпаах и текстовый файл ш1пшах.

срр. с1ава, содержащий иерархию классов. Следующая Глава 18. Выход компилятора 32 1 команда дает тот же результат, но в иерархию классов также будет включена адресная информация, которая может пересекаться с информацией, выводимой по опции -6: 3 д++ -гсошр-с1авв-Ьтегагсну-аИгевв -са ш1пшах.срр -о шьшпах Опция -(т выводит некоторую внутреннюю информацию компилятора, это описано далее в этой главе.

Объем выводимой информации можно уменьшить, используя следующую опцию: Ь д++ -гсошр-с1авв-Ьтегагсну-в11ш ш1пшах.срр -о ш1пшах Файл большего размера можно получить с помощью следующей опции: й д++ -Ек)пшр-с1авв-Ь1егагсну-а11 шхпшах.срр -о шхпшах Информация для включения в сценарий Макей!е Имеется набор опций, которые можно использовать лля указания компилятору сканировать файлы исходного кода и генерировать зависимости для вставки в тайефайл. Например, следующая программа включает два заголовочных файла: /* депвнои.с */ атпс1пк)е "впгшахег.Ь" аьпс1и((е "вноивпг1пд.Ь" ьпе ша1п(1пс агдс,сЬаг *агдг()) ( сЬаг *впг1пд' вегьпд веглахег()) вьоивегхпд(вегьпд)) Следующая команда компилятора считывает файл исходного кода и формируег строку зависимостей для та)(е-файла. В этом примере заголовочный файл всгша)пег. Ь включает файл шоЕЬас)с.

Ь: й дсс -М деевЬои.с деевьои.о: деевьои.с вегшакег.ь шоеьасх.ь вьоивегьпд.ь Опция -и устанавливает опцию -и, которая подавляет весь вывод, кроме строки зависимостей. Если вы желаете продолжить компиляцию после формирования строки зависимостей, то выполните следующую команду: 3 дсс -мр деевьои.с -о деевьои Эта команда сгенерирует выполнимый файл деевЬои и запишет строку зависимостей в файл десвЬои. (т. Для указания имени файла может использоваться опция -му. Это показано в следующем примере, где строка зависимостей записывается в файл берепбв. Еехс: 3 дсс -МР -МР еерепк)в.пехп деканом.с -о депвнои 11 А Гриффитп 322 часть )и.

Характеристики

Тип файла
DJVU-файл
Размер
6,08 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

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