GCC - The Complete Reference (537669), страница 95
Текст из файла (страница 95)
Параметр этой опции передается ассемблеру и компоновщику, поэтому все модули программы обязательно должны компилироваться с одним и тем же значением параметра ппвоэег, -посрр Указывает ассемблеру М)РК при трансляции программы в машинный код не запускать свой предлроцессор для входных Файлов с ассемблерным кодом (Файлов с суффиксом . в). -по-сг20 Исключает использование сгСО. 42б Часть 111. Внутренняя структура и окружение Опции для платформы ММ!Х Ниже перечислены опции, определенные для ММ!Х. -гпаЬ1-.геЫггд Задание значения пайвнаге в качестве параметра вееезпд приводит к генерации кода, который передает функции параметры и возвращает значения результатов функции так, что внутри вызываемой функции они видимы как регистры $0 и выше.
Задание значения дпи в качестве параметра вес схпд приводит к генерации машинного интерфейса прикладных программ Оо1т), использующего глобальные регистры $231 и выше. -птЬаве-адЫгеввев Генерирует код, использующий базовые адреса. При использовании базовых адресов автоматически генерируется запрос (обрабатываемый ассемблером и компоновщиком) для константы, которая должна быть установлена в глобальном регистре. Регистр используется для одного или нескольких запросов базовых адресов из диапазона от 0 до 255 на основании значения, содержащегося в регистре. Как правило, это приводит к генерации более быстрого кола меньшего объема, но при этом ограничивается количество адресуемых элементов данных. Таким образом, программа, использующая большое количество статических данных, может потребовать установки опции -я»по-Ьаве-атЫгеввев для отмены действия опции -а»Ьаве-астетгеввев.
-гпЬгапсЬ-ргейс1 Использует инструкции, допускающие возможность ветвления, когда прогнозирование 1ргеб)с11оп) статического ветвления указывает на вероятность ветвления. Действие опции -вьгапсь-ргеетзсс можно отменить опцией -ашо-паь-ргежсе. -гпе!Е Генерирует исполняемый файл в формате Е) Р, вместо используемого имитаторами ММ 1Х по умолчанию формата ладо. -гперы! оп Генерирует инструкции сравнения чисел с плавающей точкой с использованием ипсилон-регистра га.
Действие опции -перв»1оп можно отменить с помощью опции -впто-ерв»1оп. -пйпиФЙч Устанавливает присвоение знака остатка от деления знака делителя. По умолчанию используется опция -ппто-КпигЬЫ»г, при этом знак остатка от деления будет соответствовать знаку делимого. Оба метода с точки зрения арифметики считаются верными, хотя, как правило, используется только последний метод.
Глава 21. Машинно-зависимые опции иомпилятора 427 -П111Ьгцпс5 Указывает, что внутренние библиотечные функции компилируются для передачи всех значений через регистры независимо от размера значений, Действие опции -ш11Ьхипсв можно отменить с помощью опции -шпо-11Ьхипсв. -гп5! Пд!е-ех11 Генерирует код с одной точкой выхода для каждой функции.
Действие опции -швапд1е-ехав можно отменить с помощью опции -шпо-вапд1е-ехас. -гп1ор!ече!-5угпЬоЬ Перед именем всех глобальных символов вставляет двоеточие, что позволяет использовать код ассемблера с директивой Рппртх, Действие опции -шсор1еие1-вушьо1в можно отменить с помощью опции -шпо-сор1езге1-вушЬо1в. -пзхего-ех1епд При считывании из памяти данных длиной до 64 бит по умолчанию используются инструкции дополнения нулями, а не знаковыми разрядами.
Действие опции -швето-ехсепб можно отменить с помощью опции -шпо-ветс-ехсепб. Опции для платформы МЙ10200 Ниже приведена опция, определенная для архитектуры МацшзЫга МЧ10200. -гпге!ах Указывает, что компоновщик должен выполнять релаксационную оптимизацию лля уменьшения длины ветвлений, дистанций вызовов и абсолютных адресов памяти.
Эта опция используется только в качестве опции командной строки при выполнении последнего зтапа компоновки. Кроме того, опция -шхе1ах исключает возможность отладки символов. Опции для платформы МЙ10300 Ниже перечислены опции, определенные для архитектуры Мацшзййа М1Ч10300. -гпапз33 Генерирует код, который использует особенности, характерные для процессора АМЗЗ. По умолчанию установлена опция -шио-ашЗЗ, при которой особенности этого процессора не используются. -гппзы!1-Ьид Генерирует код, который исключает ошибки, содержащиеся в инструкциях умножения процессоров М 1Ч10300. Эта опция используется по умолчанию.
Ее действие можно отключить с помощью опции -шпо-ши1С-Ьид, -гппо-сг10 По умолчанию установлено, что в программу компонуются разделяемые библиотеки языка С, однако эта опция исключает их компоновку в программу. 428 Часть 1й. Внутренняя структура и окружение -1ПГЕ! ам Указывает, что компоновшик должен выполнять релаксацнонную оптимизацию для уменьшения длины ветвлений, вызовов и абсолютных адресов памяти. Эта опция используется только в качестве опции командной строки при выполнении последнего этапа компановки. Кроме того, опция -шге1ах исключает возможность отладки символов. Опции для платформы й532К Ниже перечислены опции, определенные для систем серии 32000. Значения по умолчанию для описываемых ниже опций могут отличаться в зависимости от стиля серии 32000, выбранного прн настройке компилятора.
-п132032 Генерирует код для процессора 32032. Эта опция установлена по умолчанию, если компилятор сконфигурирован для работы на процессорах 32032 и 3201б. -гп32081 Генерирует код, содержащий инструкции процессора 32081 для выполнения операций с плавающей точкой. Эта опция установлена по умолчанию для всех процессоров. Также см. опцию -агзгзе1. -пз32332 Генерирует код для процессора 32332. Эта опция установлена по умолчанию, если компилятор сконфигурирован для работы на процессоре 32332.
-1п 32381 Генерирует код, содержащий инструкции для выполнения операций с плавающей точкой процессора 32381. Опция -газгзв1 также автоматически устанавливает опцию -вкзгое1. Процессоры серии 32381 совместимы только с процессорами 32332 и 32532. Опция -якзг 3 в1 установлена по умолчанию для конфигураций ра 5 3 г -песЬеф -гп32532 Генерирует код для процессора 32332.
Эта опция установлена по умолчанию, если компилятор сконфигурирован для работы на процессоре 32532. -1пЬ|ФВЫ Генерирует код, использующий инструкции для работы с битовыми полями (Ь11Г1е16). Эта опция установлена по умолчанию для всех архитектур, за исключением 32532. -гп1шпегп Генерирует код, который может загружаться выше области 512 Мбайт. Глава 2!. Машинно-зависимые опции компилятора 429 Многие режимы адресации процессоров серии ХБ32000 используют смещение до 512 Мбайт. Если адрес находится за пределами 512 Мбайт, то смещения от нулевого адреса использоваться не могут.
Опция -вЬ1твшв может применяться для операционных систем и кодов ПЗУ (КОМ). Также см. опцию -вшоаЬ. -гп1еее-сопзраге Указывает„что компилятор должен использовать операции сравнения чисел с плавающей точкой в соответствии со стандартами 1ЕЕЕ. Такие сравнения корректно выполняются в случае, когда результат сравнения неупорядочен. Зато обычно можно не обеспечивать требуемую для выполнения сравнений поддержку ядра.
Действие опции -втьеее-соатраге отменяет опция -вшо-деее-соотраге. -гппзЫ11-агЫ Пытается генерировать инструкции ро1ув и боев для умножения и сложения чисел с плавающей точкой. Эта опция действует только в случае установленной опции -твЗ 2 3 8 1. Использование инструкций ро1уя и стогя влечет за собой изменение принципа выделения регистров, что, как правило, отрицательно сказывается на производительности программы.
Опция -авпц1С1-айй должна применяться при компиляции кода, от которого ожидается использование большого количества инструкций умножения и сложения. Также см. опцию -вшовтц1ед-аог1. -гппоЬНЛеЫ Указывает, что генерируемый код не должен использовать инструкции для работы с битовыми полями. На некоторых машинах быстрее выполняются операции сдвига и маскирования. Опция -яшоЬ1С 21е1й установлена по умолчанию для систем РС532.
Также см. опцию -шЬ1сгде16. -пзпоЫгпепз Предполагает, что код будет загружаться в начальные 512 Мбайт виртуального адресного пространства. Эта опция используется по умолчанию для всех платформ. -пзпопзи!6-агЫ Указывает, что компилятор не должен генерировать инструкции умножения и сложения ро1ув и боггт для чисел с плавающей точкой. Эта опция установлена по умолчанию, Также см.
опцию -яаац1сд-аты. -Гппогеярагагп Указывает, что аргументы функций не должны передаваться в регистрах. Эта опция используется по умолчанию для всех платформ. Также см. опции -твгсо и -атгеорагатв. 430 Часть 111, Внутренняя структура и окружение -П\ПО5Ь Опция сообшает компилятору, что регистр вЬ недоступен для использования или не ннициализирован нулевым значением системой загрузки. Эта опция используется по умолчанию для всех платформ за исключением рс532-пегьвкт. Опция -ашовь устанавливается автоматически лри установке опций -юЬхгаега или -йр1е. -пзгедрагаг)1 Использует иное соглашение о вызовах функций, лри котором первые два аргумента передаются в регистрах.
Такое соглашение несовместимо с соглашением, применяемым в 1ЛЧ1Х, поэтому его нельзя использовать с библиотеками, откомпилированными с ломошью компилятора 1)МХ. Также см. опции -агект и -пшогедрагша. -азу Используется другое соглашение о вызове функций, в соответствии с которым при возврате из функций с фиксированным количеством аргументов используется инструкция гее, выталкивающая аргументы из стека при возврате. Такое соглашение несовместимо со стандартным соглашением 1ЛЧ1Х, поэтому его нельзя использовать с библиотеками, откомпилированными в 1ЛЧ1Х.
Кроме того, для всех функций с переменным количеством аргументов необходимо указать их прототипы. Если этого не сделать, то для вызова функций будет сгенерирован неверный код. Также булет возникать ошибка при вызове функции с лишними аргументами. (При использовании стандартного соглашения о вьповах лишние аргументы игнорируются.) Опция -вгггт получила свое название от инструкции гсй систем серии б80хО. Также см. опции -гагедрагша и -пшогепрагша. Позволяет компилятору использовать регистр вЬ в качестве индексного регистра, который всегда инициализируется нулевым значением.