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

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

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

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

Для генерации компилятором кода языка ассемблера укажите опцию -я. Используйте ее на различных уровнях оптимизации и с установкой различных флагов оптимизации. Не исключено, что оптимизатор может сделать все, что вам необходимо. ° Анализ инструкций. Использование опции -кЗр совместно с опцией -я приводит к тому, что в листингах кода ассемблера в комментариях будет указываться длина каждой инструкции. Помимо длины инструкции приводится номер узла дерева и инструкция дерева, которая вызвала генерацию данной строки кода ассемблера. ° Анализ дерева.

Использование опции -бв совместно с опцией -я дает тот же результат, что и опция -др и, кроме того, вставляет строки комментариев, содержащие номера узлов дерева промежуточного языка. Для большинства разработчиков эта опция имеет ограниченное значение, поскольку предполагается, что разработчики знакомы с внутренней структурой дсо. Глава 17. Встраиваемые системы 309 ° Проверка установленных опций. Использование опции -хчекгизве-автв приводит к тому, что компилятор в начале листингов кода языка ассемблера предоставляет полный перечень всех опций, установленных при компиляции программы в ассемблерный код.

Может оказаться, что для получения желаемого результата необходимо изменить одну или несколько опций. Кроме того, есть и другие сведения о генерировании кода, подробно описанные в главе 18. Наиболее полезной информацией являются общий размер кода и данные о выделении памяти. Если вы выбрали вариант языка ассемблера, для его реализации у вас есть несколько возможностей. Если необходимо внести несколько изменений в код анализируемой программы, то это можно сделать путем редактирования сгенерированного компилятором модуля ассемблерного кода. В таком коде уже присутствует необходимый интерфейсный блок, связывающий этот модуль с другими частями программы. Возможно, наиболее эффективный подход заключается в определении необходимых изменений и замене соответствующих частей кода программы на языке С вставками строк ассемблерного кода.

Средства 6СС для разработки встраиваемого программного обеспечения Компилятор 6СС не предназначался специально для разработки встраиваемого программного обеспечения, но он достаточно развит и настолько гибок, что содержит практически все, что может понадобиться разработчику встраиваемых программ. Опции командной строки Некоторые опции командной строки компилятора ССС могут оказаться особенно полезными для разработки встраиваемых программ.

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

У компилятора есть развитые возможности управления параметрами оптимизации (см. описание опции -о в приложении Г). Для запрета использования компилятором определенного регистра можно использовать опцию командной строки -Шхер. Например, если процессор предназначаемой платформы содержит регистр с именем дк4 и этот регистр не должен 3 1 О Часть йь Внутренняя структура и окружение использоваться генерируемым кодом, то воспользуйтесь следующим набором оп- пий: 3 дсс -с -иа11 -вг1хей-дг4 ша1п1оор.с -о ша1п1оор.о Диагностика Компилятор имеет возможность форматировать имена функций и файлов исходного кода в строку, которую затем можно использовать при выводе диагностических сообщений.

Например, в приведенном ниже коде создается строка, содержащая имя текущей функции, имя ее файла исходного кода и дату компиляции; врг1псе(швд, "РипСЕ1оп Ъв 1п 111е Ъв сошр11ей чвхп", зтшсттои , втьв , п)ттв ); В языке программирования С++ для определения имени функции используется макрос Вивттт ициет1О)т .

В языке С применение макросов втпчстгси и вииттх вцнсттон дает одинаковый результат. Ассемблерный код Как было сказано в главе 15, задача компоновки модулей языка ассемблера с модулями, написанными на языках более высокого уровня, не представляет особых трудностей. Кроме того, ассемблерные блоки можно включать непосредственно в компилируемый код на языке высокого уровня. Может оказаться, что модуль на ассемблере необходимо скомпоновать в выполнимый файл, но он не был написан для использования в программе на языке Си его имя не содержит обязательного начального символа подчеркивания.

Приведенные ниже операторы определяют программные символы на языке С, которые можно локально использовать для адресации на глобачьные символические имена, определенные в ассемблерном коде: ехеегп 1пе шавгея авш("шпв11ш1Г")т 1пс геЬаг ашв("геЬс1еап")т ехеегп ьпе дг1ьь1е(хо1й) авш("авшдг1ЬЬ1е")к Символ шпагам в исходном файле на языке Сбудет компоноваться в качестве указателя типа 1пс на глобально определенное имя шпв11ш1 С.

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

Например, в следующем примере использование ключевого слова ассг1ьпсе приведет к тому, что переменная сгйдшах будет помещена в раздел сопча1в: сосне 1пс Сг1дшах асегьЬиее ((весс1оп("соптта1в"))) Глава 17. Встраиваемые системы 3 1 1 Возможность указания имен разлелов (секций кода) позволяет использовать компоновшик для указания точного расположения и порядка блоков объектного кода. Библиотеки Часто встраиваемое программное обеспечение включает в себя динамические библиотеки, подключаемые во время выполнения программы (гипйгпе йбгапез). Хорошая библиотека времени выполнения (КТЕ) может содержать все необходимые вам функции, и от вас потребуется только написать код приложения. После компиляции и установки в вашей системе кросс-компилятора можно скомпилировать и скомпоновать библиотеку, и затем указывать ее расположение в командах компоновшику.

Если у вас нет динамической библиотеки, то, скорее всего, в качестве ее будет использоваться часть стандартной библиотеки 0)Ч(). К сожалению, при необходимости использования большой части стандартной библиотеки процесс вычленения нужных частей может оказаться достаточно утомительным нз-за большого количества перекрестных ссылок. Но этих трудностей можно избежать при использовании библиотеки пем1хЬ. Сокращение стандартной библиотеки Использование полной стандартной библиотеки языка С может привести к тому, что размер сгенерированного выполняемого модуля окажется в несколько раз больше, чем нужно. Многие стандартные модули С предназначены для очень широкого исполъзован ия и реализованы с учетом того, что они будут загружаться в память из разделяемой библиотеки несколькими процессами одновременно.

Во встраиваемой системе статически связанные модули такого типа будут очень неэффективными ввиду их большого размера. Одним из наиболее показательных примеров является функция ргхпсй () . Эта функция может иметь переменное количество аргументов. Первый аргумент является строкой символов, а остальные представляют собой список типов данных переменной длиньь Поскольку информация о форматировании указывается строкой символов, в качестве части программы должны присутствовать функции приведения возможных типов данных к требуемому формату. Кроме того, многие функции форматирования используют другие библиотечные функции. В результате получаем эффект домино, требуюший включения большого объема кода, который никогда не используется.

Если вы собираетесь использовать функции стандартной библиотеки ОСС, то целесообразно сократить ее до используемых модулей, а осталъные модули полностью удалить. В зависимости от используемого объема библиотеки процесс удаления ненужных модулей может оказаться достаточно трудоемким. Его можно начать с создания библиотеки, содержашей только вызовы необходимых функций, а затем по мере необходимости добавлять модули, необходимые для восстановления неразрешимых ссылок.

3 1 2 Часть ПЬ Внутренняя структура и окруяение Библиотека, предназначенная для встраиваемых систем Для компоновки программного обеспечения встраиваемых систем существует стандартная библиотека. Она свободно распространяется в соответствии с общественной лицензией и содержится на сайте Ьттр://аоцгсе.гесйат.сот/петтИЬ/. Библиотека, названная пвьт11Ь, представляет собой библиотеку языка С, прел- назначенную для использования во встраиваемых системах. Она состоит из функций и подпрограмм, собранных из разных источников, свободно распространяемых на основании общественной лицензии.

Она распространяется в виде исходного кода. Код достаточно прост и компилируется без ошибок на многих процессорах. Одним из главных достоинств библиотеки петт11Ь является то, что она разработана специально для встраиваемых систем. Библиотека загружается и устанавливается практически так же, как ОСС и набор Ь|пцтйз. После загрузки исходного кода его необходимо установить в рабочем каталоге паьт11Ь. Каталог пвтт11Ь следует поместить на одном уровне с каталогами исходного кода ОСС и Ь|пцтйз.

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

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

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

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

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