GCC - The Complete Reference (537669), страница 91
Текст из файла (страница 91)
При использовании опции -ю1еаг-ргссебигев генерируется более эффективный код для явных вызовов, когда инструкция Ьа1 может подстанавливаться ассемблером или компоновщиком. В других случаях код будет менее эффективным, например, при вызове функций с помощью указателей. -в1опя-доиЫе-64 Реализует тип данных 1опд соиЬ1е как число с плавающей точкой длиной 64 бита. Без этой опции значения типа 1опд стопЬ1е реализуются как 80-битные числа с плавающей точкой. Единственной причиной наличия опции -ю1опд-бспЬ1е-64 является отсутствие поддержки 128-битных данных типа 1опд соиЬ1е в библиотеке йр-Ьес .
с. Эта опция используется только прн компиляции программ, предназначенных для работы на процессорах с программной поддержкой операций над числами с плавающей точкой. -впивег1сз Эта опция указывает, что процессор имеет аппаратную поддержку инструкций лля математических действий над числами с плавающей точкой. Также см.
опцию -ювс ге- г 1 вас. 40 8 Часть 111. Внутренняя структура и окружение -гпо! д-а119п Включает режим поддержки выравн иван ия структур дан н ых для процессоров 1пте! компилятора дсс версии !.3. (При этом в качестве основного выпуска рассматривается дсс 1.37.) Применение опции -втс2с-а11дп автоматически устанавливает опцию -тавсх1сс-а11дп. -п150И-г(оа1 Эта опция указывает, что процессор не имеет аппаратной поддержки инструкций лля математических действий над числами с плавающей точкой.
Также см. опцию -текшие х з'. с в. -гпкТг1сС-а1!Яп Запрещает доступ к данным без применения выравнивания. Для разрешения не выровненного доступа используется опция -втпс-вех1се-а11дп. -пса!1-саП Указывает компилятору предпринимать дополнительные попытки оптимизации (помимо машинно-независимых оптимизаций) рекурсивных вызовов с преобразованием их в ветвления.
Как правило, эта опция не используется, поскольку логика определения эффективности такой оптимизации полностью не разработана. Ло умолчанию применяется опция -впс-са11-са11. Опции для платформы М32К/О Ниже перечислены опции, определенные для архитектур М(пщЬ(в)й МЗ2В/)З. -гп32г Генерирует код для архитектуры МЗЖ. Действует по умолчанию для архитектур М)тзиЬ!зЬ! М32В/)З. -гп32гх Генерирует код для архитектуры М32К/Х.
-гпсос1е-глоде!=пате Указание в параметре пате значения втва11 указывает, что компилятор должен считать, что все объекты находятся в нижней области памяти объемом 16 Мбайт и их адреса могут загружаться с помощью инструкции 1сг4. Кроме того, компилятор предполагает, что доступ ко всем подпрограммам можно получить с помощью инструкции Ь1.
Такое поведение используется ~о умолчанию. Задание значения втеку1одт в параметре патае указывает, что компилятор должен считать, что объекты могут находиться в любом месте памяти, адресуемой 32-битными адресами (для загрузки адресов объектов компилятор будет использовать инструкции весь/атыз). кроме того, компилятор предполагает, что доступ ко всем подпрограммам можно получить с помощью инструкции Ь1.
Глава 21. Машинно-зависимые опции компилятора 409 Значение 1агое параметра пате указывает, что компилятор должен считать, что объекты могут находиться в 32-битном адресном пространстве памяти (лля загрузки адресов объектов компилятор будет использовать инструкции весь/акыз). кроме того, компилятор предполагает, что доступ к подпрограммам нельзя получить с помощью инструкции Ь1 (компилятор в этом случае генерирует намного более медленную последовательность инструкций весь/акыЗ/51), -пзЫа1а=яеФлд Эта опция указывает, какие элементы будут храниться в области данных малой длины.
Область данных малой длины состоит из разделов . всзага и . вЬва. Объекты могут помещаться в область коротких данных явным образом с помощью атрибута аеос1оп с указанием одно~о из двух разделов. Также см. опцию -а. Задание значения попе параметра весс1пп запрешает использование области коротких данных. Переменные будут помещаться в один из следующих разделов: . бага, . ьвв или . гобаса (если не установлен атрибут веос1оп). такое поведение используется по умолчанию.
Задание значения абаса в качестве параметра вес сйпо помещает короткие глобальные и статические данные в область коротких данных, но не генерирует специального кода для доступа к ним. Присвоение параметру вес сзпп значения иае помещает короткие глобальные и статические данные в область коротких данных и для доступа к ним генерирует специальный код. -б ИитЬЕГ Помещает все глобальные и статические объекты длиной не более пшпЬег байт в раздел коротких данных или раздел .
Ьва, а не в стандартный раздел данных или раздел . Ьвв. По умолчанию для параметра пшаЬег установлено значение В. Чтобы опция -0 действовала, необходимо установить параметр вее Сампо опции -твбаса равным вкзаса или иве. Все модули одной программы должны компилироваться с одними и теми же параметрами опций -зввбаса и -6. Компиляция модулей программы при различных значениях параметра пшвЬег может вызывать ошибки. Если при компиляции возникает ошибка, то компоновщик обнаруживает ее и предотвращает генерацию неверного кода.
Опции для платформы Мб80х0 Ниже перечислены опции, определенные для серии 680х0. Значения по умолчанию для описываемых ниже опций могут отличаться в зависимости от выбранного типа процессора (серии 680х0) при конфигурировании компилятора. -и) 5200 Код генерируется для семейства процессоров 520Х "со)айте". Эта опция установлена по умолчанию при настройке компилятора для систем серии 520Х.
Опция -пдяоо используется для микроконтроллеров с ядром 5200, включая МСЕ5202, МСЕ5203, МСЕ5204 и МСЕ5202. 4 1 О Часть 111. Внутренняя структура и окружение При применении этой опции автоматически устанавливается опция -вятоЬзбйхе1г1. -птб8000 Код генерируется для аппаратных систем серии 6800. Эта опция используется для микроконтроллеров с ядром 68000 нли ЕСООО, включая 68008, 68302, 68306, 68307, 68322, 68328 и 68356. Опция -атввооо устанавливается по умолчанию при конфигурировании компилятора для систем серии 6800.
При применении этой опции автоматически устанавливается опция -птоЫШе1о. -пз68020 Код генерируется для систем серии 68020. Опция -тавйоао устанавливается по умолчанию при конфигурировании компилятора для систем серии 68020. При применении этой опции автоматически устанавливается опция -юЬз.ей!.е1о. -птб8020-40 Код генерируется для систем серии 68040 без использования новых инструкций.
Получаемый код может достаточно эффективно выполняться на системах 68020/ 68881, 68030 или 68040. Генерируемый код использует инструкции 68881, которые эмулируются в серии 68040. -1пб8020-60 Код генерируется для систем серии 68060 без использования новых инструкций. Получаемый код может достаточно эффективно выполняться на системах 68020/ 68881, 68030 или 68040, Генерируемый код использует инструкции 68881, которые эмулируются в серии 68060. -гп68030 Код генерируется для систем серии 68030.
Опция -таввозо устанавливается по умолчанию при конфигурировании компилятора для систем серии 68030. -тут 68040 Код генерируется для систем серии 68040. Опция -ввапап устанавливается по умолчанию при конфигурировании компилятора для систем серии 68040. Эта опция запрещает использование инструкций 68881/68882, которые в системах серии 68040 должны эмулироваться программными средствами. Опция -ввапап применяется, если система 68040 не имеет специального кода для эмуляции необходимого набора инструкций.
-1утб8060 Код генерируется для систем серии 68060. Опция -медово устанавливается по умолчанию при конфигурировании компилятора для систем серии 68060. Эта опция запрещает использование инструкций 6888!/68882, которые в системах серии 68060 должны программно эмулироваться. Опция -атвапвп применяется, если сис- Глава 21. Машинно-зависимые опции компилятора 41 1 тема 68060 не имеет специального кода для эмуляции необходимого набора инст- рукций. -гп68881 Генерируемый код будет содержать инструкции набора 6888! для выполнения операций с числами с плаваюшей точкой.
Эта опция применяется по умолчанию для большинства систем серии 68020, если при конфигурировании компилятора не была установлена опция --пйр. -Гпа Ипп-Ы Эта опция устанавливает выравнивание переменных типа 1пС, 1опд, 1опд 1опд, й1оас, боцЬ1е и 1опд бооЬ1е по границе 32 бит. По умолчанию используется опция -ашо-а11дп-ьпс, применяюшая )6-битное выравнивание перечисленных типов переменных. Выравнивание данных по границе 32 бит приводит к генерации кода большего объема, который выполняется немного быстрее на процессорах с 32-битными шинами.
При использовании опции -жа11дп-Епс компилятор ОСС выравнивает структуры, содержаШие данные перечисленных выше типов, иначе, чем это предусматривает большинство имеющихся спецификаций машинного интерфейса прикладных программ (ЕгпЬесЫед АррйсаГюпз В!лагу )пгегГасе, ЕАВ!) дпя серий гпб80х0. -п)ЬНйеЫ Разрешает использование инструкций битовых полей (Ь)г-Гге)д !пзгшсбопз). Опция -гп68020 предполагает установку данной опции. Опция -пйзьейье1ст используется по умолчанию, если компилятор сконфигурирован для работы с системами серии 68020. -гпс68000 Идентична опции -гп6800.
-птс68020 Идентична опции -аг6 8 О 2 0. -пкри32 Код генерируется для ядра СРО32. Эта опция установлена по умолчанию, если компилятор сконфигурирован для систем, основанных на СР)332. Опция -тсрц32 используется для микроконтроллеров с ядром СРО32 или СР!)32+ (системы 68330, 68331, 68332, 68333, 68334, 68336, 68340, 6834), 68349 и 68360). Эта опция автоматически устанавливает опцию -ашоыс811ест. -пйра Генерируется код, содержащий машинные инструкции набора Вцп ЕРА для операций с плавающей точкой. 4 1 2 Часть Н!. Внутренняя структура и окружение "(ППО-51Г(СГ-В(19П Компилятор будет считать, что система будет обрабатывать ссылки на ячейки памяти без обязательного применения выравнивания. Чтобы компилятор применял выравнивание к адресуемым данным, следует установить опцию -швекйсс-а11дп. -ГППОЬ|ЙЕЫ Запрещает использование инструкций битовых полей (Ь(т-йе1д 1пзтптст)опа).