GCC - The Complete Reference (537669), страница 100
Текст из файла (страница 100)
По умолчанию используется опция -пшо-г1ас. Такая модель использует регистр 9117 в качестве указателя кадра и совместима со стандартной моделью окна регистров. Коды, генерируемые с использованием этих 15 а гриффити -птсурге99 Эта опция используется по умолчанию. Компилятор оптимизирует параметры для чипа Сургезз С 77С602, используемого в сериях 8рагсБга11оп/БрагсБег«ег Зхх. Эта опция также используется для более старых серий БрагсБгаг1оп 1, 2, 1РХ и тд. Опция -гаоурГЕве СЧИтаЕтСя устаРевшей и в следующей веРсии компилятора будет удалена. 450 Часть $П. Внутренняя структура н окружение двух моделей, могут работать совместно. Локальные и входные регистры (Π— 5) при необходимости будут записываться в память. При указании опции -шло-г1ас компилятор генерирует инструкции ваче н гевгсге (кроме функций, имеющих вложенные вызовы), это является обычным режимом.
-пМри Опция используется по умолчанию. Она предполагает генерацию кола, содержащего аппаратные инструкции математических операций над числами с плавающей точкой. Для генерации кода, использующего функции библиотек для выполнения операций с числами с плавающей точкой следует использовать опцию -пшс-гри. Библиотеки функций эмуляции операций с плавающей точкой для платформ БРАКС не предусмотрены. Могут использоваться библиотеки компиляторов, комплектных предназначаемым машинам, но их нельзя использовать при кросс-компиляции. Программная полдержка операций с плавающей точкой поддерживается только для конфигураций враго-+-асиг и врагс11се-*-*.
Опцию -шгри допускается указывать в виде -птЬагс-г1саг. Также см. опцию -швогс-г1саг. -п)1)агсИ1оас Идентична опции -шсри. -пйагс1-с1оас1-Лоа~ Код, генерируемый при установленной опции -шцагй-диас-г1саг, содержит аппаратные инструкции операций с плавающей точкой длиной в четыре слова (тнп 1спд ссиЬ1е).
-гп11111е-епс11ап Для процессоров БРАКС) ЕТ и БРАКС Ч9 в 64-битной среде эта опция генерирует код, предназначенный для выполнения процессором в режиме прямого порядка байтов (йй!е епейап шок(е). -гп11че-90 Для процессора БРАКС) ЕТ эта опция будет считать регистр Ъдц обычным регистром. При необходимости компилятор ОСС будет очищать этот регистр, но всегда будет предполагаться, что регистр содержит значение "ноль". -гпзотс-Ноас Аналогична опции -шпс-сри, но в генерируемом коле будет применено другое соглашение о вызовах функций. Это означает, что опция -швосг-с1сас должна использоваться при компиляции всех модулей программы.
Кроме того, в этом случае для обеспечения совместимости кода с этой же опцией должна компилироваться и библиотека 11Ьдсс . а, которая входит в состав компилятора ОСС. Глава 21. !машинно-зависимые опции компилятора 45 1 -пззой-с1иасИ!оа1 Эта опция используется по умолчанию. Код, генерируемый при установленной ОПЦИИ -таасгс-ттиаб- г1оаг, будет содержать вызовы библиотечных функций дпя выполнения операций над числовыми операндами с плавающей точкой длиной в четыре слова (тип 1опп боиь1е). Вызываемые функции определены в машинном интерфейсе прикладных программ БРАКС. Опция -шЬагб-езжай-Г1оао отсутствует по той причине, что не существует реализаций БРАКС, которые бы обеспечивали аппаратную поддержку операций с числами с плавающей точкой длиной в четыре слова. Все реализации для выполнения таких операций вызывают обработчик системных прерываний, который эмулирует выполнение инструкции.
Вследствие такой схемы работы (с использованием обработчика прерываний) код будет выполняться гораздо медленнее, чем при вызове подпрограмм машинного интерфейса прикладных программ (АВ1). Именно по этой причине опция -тявогс-тГиаб-г1оае установлена по умолчанию. -пзз рагс! !се Эта опция выбирает вариант архитектуры БРАКС. Если компилятор при его установке не был сконфигурирован специально для работы с Рц)!1зп БРАКС!Ке, то он будет генерировать код для варианта х7 архитектуры БРАКС. Вариант БРАКСГпе поддерживает инструкции целочисленного умножения, деления и сканирования (г гв), которые не поддерживаются в БРАКС Ч7. Опция -таврагс1хге считается устаревшей и будет удалена в следующей версии компилятора.
Вместо нее должна использоваться опция -твори=араго11ое. -пзБ~ас!с-Ь)аз Для процессора БРАКС Ч9 в 64-битной среде эта опция предполагает, что указатель стека (и указатель кадра, если таковой имеется) смещен на -2047, причем это значение должно быть добавлено при выполнении ссылок на кадр стека. По умолчанию используется опция -впо-воао)к-Ьеав, при которой смещение -2047 отсутствует. -гп8ырег8рагс Компилятор оптимизирует код для процессора БирегБрагс, используемого в сериях БрагсБта!!оп 10, 1000 и 2000.
Кроме того, эта опция разрешает использование полного набора инструкций БРАКС Ч8. Опция -швирегвраго считается устаревшей и будет удалена в следующей версии компилятора. Вместо нее должна использоваться опция -твори=вирегврагс. -п)1ипе=$уре Устанавливает параметры планирования инструкций для указанного типа гуре машины, но не устанавливает наборгя инструкций и регистров, которые были бы установлены при использовании опции -твори. Допустимые значения параметра гуре соответствуют значениям параметра гуре опции -твори. Пригодными значениями будут те, которые указывают конкретную реализацию процессора (т.е. имена, приведенные во втором столбце таблицы 21.8): 4 5 2 Часть В1.
Внутренняя структура н окружение сургевв, вирегврагс, Ьурегврагс, 2870, 2934, врагс1?ге86х, гвс701, и1ггаврагс. -Втаа!щпес?-г?оцЫе8 Зта опция предполагает, что данные типа йоиЬ1е имеют 8-байтное выравнивание только в том случае, если они содержатся в другом типе или имеют абсолютный адрес. Все остальные данные типа йоиЬ1е считаются выровненными по границе 4 байт. Использование опции -шипа1?дпей-йсиЬ1ев позволяет избежать отдельных редко встречаемых проблем совместимости с кодом, сгенерированным другими компиляторами. Опция -шипа1?дпей-йоиЬ?ев не установлена по умолчанию, поскольку она приводит к снижению производительности кода, особенно кода операций с плавающей точкой. По умолчанию используется опция -ваго-ипа1?дпей-йоиЬ1ев, которая предполагает, что все данные типа йоиЬ1е имеют 8-байтное выравнивание.
-птч8 Зта опция выбирает один из вариантов архитектуры БРАКС. При ее установке генерируется код для БРАКС Ч8. Единственным его отличием от кода для БРАКС Ч7 является наличие инструкций для выполнения целочисленного умножения и деления, отсутствующих в БРАКС Ч7. Опция -пта считается устаревшей и будет удалена в следующей версии компилятора. Вместо нее должна использоваться опция -шсри тта. Опции для платформы Буйев Ч Ниже приведены некоторые дополнительные опции, доступные для платформы Бузтет Ч Ке?еазе 4.
Создает разделяемый объект. Вместо атой опции рекомендуется использовать опции -вушЬо1?с или -вцагей. Запрещает вставку в выходной файл директив . 1йепг. Используется по умолчанию. -оу С помощью директивы . ?йепа указывает в выходном файле версии всех средств, используемых компилятором. -у??т, Йгес1иу Осуществляет поиск препроцессора М4 в каталоге ййгесесгу. -Ур,йгес8оИей Осуществляет поиск библиотек, указанных опциями -1паше, только в списке заданных каталогов ййгесеогХев. Глава 2!. Машинно-зависимые опции компилятора 453 Опции для платформы ТМ5320СЗх/С4х Ниже перечислены опции, определенные для реализаций ТМБ320СЗх/С4х. -133Ь!д Генерирует код для модели большой памяти.
Модель большой памяти используется по умолчанию и требует перезагрузки регистра пв для каждого прямого обращения к памяти. Также см. опцию -ввва11. -тЫ1д-пзепзогу Идентична опции -вЬ1п. Разрешает запись целочисленных операндов в счетчик блоков вк. Действие опции -вЬ1к можно отменить опцией -впо-Ь1к. -ПЗСрив ФурЕ Устанавливает набор инструкций, набор регистров и параметры планирования инструкций для указанного типа машины. Параметр суре может принимать следующие значения: с30, с31, с32, с40 и с44. По умолчанию используется с40, в соответствии с которым генерируется код для ТМБ320С40. Разрешает генерацию кода, использующего инструкции декремента и ветвления 0Ьсопк3 ( ) .
Эта опция установлена по умолчанию для реализаций С4х. Ее действие можно отменить с помощью опции -лщо-дЬ. Опция -вт3Ь не используется по умолчанию для реализаций СЗх, поскольку максимальное количество итераций для СЗх составляет 2"23+1. Обратите внимание, что компилятор ОСС пытается выполнять цикл в направлении уменьшения переменной цикла, что позволяет использоваться инструкции декремента и ветвления, но изменения порядка выполнения цикла не происходит, если в цикле содержится больше одной ссылки на ячейки памяти. Как следствие, в случае, когда не может испольюваться инструкция пвтв, цикл с уменьшением переменной цикла выполняется несколько быстрее. -1зздР-13Г-ге!оаэи При входе в программу обработки прерываний содержимое регистра пв сохраняется и инициализируется начальным адресом раздела данных, Затем содержимое регистра пв восстанавливается при выходе из программы обработки прерываний.