Spec-Zone.ru › GCC 11

Далее: Параметры оценки, Предыдущее: Параметры RX, Вверх: Параметры, зависящие от машины [Оглавление][Индекс]

3.19.46 Параметры S/390 и zSeries ¶

Это параметры ‘-m’, определенные для архитектуры S/390 и zSeries.

-mhard-float
-msoft-float

Использовать (не использовать) аппаратные инструкции и регистры с плавающей точкой для операций с плавающей точкой. При указании -msoft-float, для выполнения операций с плавающей точкой используются функции из libgcc.a. При указании -mhard-float, компилятор генерирует инструкции IEEE с плавающей точкой. Это значение по умолчанию.

-mhard-dfp
-mno-hard-dfp

Использовать (не использовать) аппаратные инструкции для десятичных чисел с плавающей точкой для операций с десятичными числами с плавающей точкой. При указании -mno-hard-dfp, для выполнения операций с десятичными числами с плавающей точкой используются функции из libgcc.a. При указании -mhard-dfp, компилятор генерирует аппаратные инструкции для десятичных чисел с плавающей точкой. Это значение по умолчанию для -march=z9-ec и выше.

-mlong-double-64
-mlong-double-128

Эти переключатели управляют размером типа long double. Размер 64 бита делает тип long double эквивалентным типу double. Это значение по умолчанию.

-mbackchain
-mno-backchain

Хранить (не хранить) адрес фрейма вызывающей функции в качестве указателя на цепочку обратных вызовов во фрейме стека вызываемой функции. Цепочка обратных вызовов может потребоваться для отладки с использованием инструментов, которые не понимают информацию о фреймах вызовов DWARF. Когда активен -mno-packed-stack, указатель цепочки обратных вызовов хранится внизу фрейма стека; когда активен -mpacked-stack, цепочка обратных вызовов помещается в самое верхнее слово области сохранения регистров размером 96/160 байт.

В общем случае, код, скомпилированный с -mbackchain, совместим по вызовам с кодом, скомпилированным с -mno-backchain; однако, использование цепочки обратных вызовов для отладки обычно требует, чтобы весь двоичный файл был скомпилирован с -mbackchain. Обратите внимание, что сочетание -mbackchain, -mpacked-stack и -mhard-float не поддерживается. Для компиляции ядра Linux используйте -msoft-float.

По умолчанию цепочка обратных вызовов не поддерживается.

-mpacked-stack
-mno-packed-stack

Использовать (не использовать) структуру стека с уплотненным расположением. Когда указан -mno-packed-stack, компилятор использует все поля области сохранения регистров размером 96/160 байт только для их стандартного назначения; неиспользуемые поля всё ещё занимают место в стеке. При указании -mpacked-stack, слоты сохранения регистров плотно упаковываются в верхней части области сохранения регистров; неиспользуемое пространство повторно используется для других целей, что позволяет более эффективно использовать доступное место в стеке. Однако, когда активен также -mbackchain, самое верхнее слово области сохранения всегда используется для хранения цепочки обратных вызовов, а регистр возврата всегда сохраняется на два слова ниже цепочки обратных вызовов.

Пока цепочка обратных вызовов стека не используется, код, сгенерированный с -mpacked-stack, совместим по вызовам с кодом, сгенерированным с -mno-packed-stack. Обратите внимание, что некоторые не-FSF версии GCC 2.95 для S/390 или zSeries генерируют код, который использует цепочку обратных вызовов фрейма стека во время выполнения, а не только для отладки. Такой код не совместим по вызовам с кодом, скомпилированным с -mpacked-stack. Также обратите внимание, что сочетание -mbackchain, -mpacked-stack и -mhard-float не поддерживается. Для компиляции ядра Linux используйте -msoft-float.

По умолчанию используется не упакованная структура стека.

-msmall-exec
-mno-small-exec

Генерировать (или не генерировать) код, используя инструкцию bras для вызовов подпрограмм. Это работает надёжно только если общий размер исполняемого файла не превышает 64k. По умолчанию используется инструкция basr, которая не имеет этого ограничения.

-m64
-m31

При указании -m31 генерировать код, совместимый с GNU/Linux ABI для S/390. При указании -m64 генерировать код, совместимый с GNU/Linux ABI для zSeries. Это позволяет GCC, в частности, генерировать 64-битные инструкции. Для целей «s390» значение по умолчанию — -m31, а для целей «s390x» — -m64.

-mzarch
-mesa

При указании -mzarch генерировать код, используя инструкции, доступные в архитектуре z/Architecture. При указании -mesa генерировать код, используя инструкции, доступные в ESA/390. Обратите внимание, что -mesa невозможна с -m64. При генерации кода, совместимого с GNU/Linux ABI для S/390, значение по умолчанию — -mesa. При генерации кода, совместимого с GNU/Linux ABI для zSeries, значение по умолчанию — -mzarch.

-mhtm
-mno-htm

Опция -mhtm включает набор встроенных функций, использующих инструкции, доступные с помощью механизма транзакционного исполнения, представленного в машинном поколении IBM zEnterprise EC12. -mhtm включена по умолчанию при использовании -march=zEC12.

-mvx
-mno-vx

При указании -mvx генерировать код, используя инструкции, доступные с расширением векторов, представленным в машинном поколении IBM z13. Эта опция изменяет ABI для некоторых значений типа вектора относительно выравнивания и правил вызовов. В случае использования значений типа вектора в контексте, относящемся к ABI, команда GAS «.gnu_attribute» будет добавлена для маркировки результирующего двоичного файла с используемым ABI. -mvx включена по умолчанию при использовании -march=z13.

-mzvector
-mno-zvector

Опция -mzvector включает расширения языка векторов и встроенные функции, использующие инструкции, доступные с расширением векторов, представленным в машинном поколении IBM z13. Эта опция добавляет поддержку «vector» в качестве ключевого слова для определения переменных и аргументов типа вектора. «vector» доступен только при включенных расширениях GNU. Он не будет расширяться при запросе строгой совместимости со стандартом, например, с -std=c99. В дополнение к встроенным функциям GCC низкого уровня -mzvector включает набор встроенных функций, добавленных для совместимости с реализациями типа AltiVec для Power и Cell. Для использования этих встроенных функций необходимо включить заголовочный файл vecintrin.h. -mzvector выключена по умолчанию.

-mmvcle
-mno-mvcle

Генерировать (или не генерировать) код, используя инструкцию mvcle для выполнения блочных перемещений. При указании -mno-mvcle использовать цикл mvc вместо этого. Это значение по умолчанию, если не оптимизируется размер.

-mdebug
-mno-debug

Выводить (или не выводить) дополнительную отладочную информацию при компиляции. По умолчанию отладочная информация не выводится.

-march=cpu-type

Генерировать код, который работает на cpu-type, который является именем системы, представляющей определённый тип процессора. Возможные значения для cpu-type — ‘z900’/‘arch5’, ‘z990’/‘arch6’, ‘z9-109’, ‘z9-ec’/‘arch7’, ‘z10’/‘arch8’, ‘z196’/‘arch9’, ‘zEC12’, ‘z13’/‘arch11’, ‘z14’/‘arch12’, ‘z15’/‘arch13’, ‘z16’/‘arch14’ и ‘native’.

Значение по умолчанию — -march=z900.

Указание ‘native’ в качестве типа процессора позволяет выбрать лучшую архитектурную опцию для процессора хоста. -march=native не оказывает никакого эффекта, если GCC не распознаёт процессор.

-mtune=cpu-type

Настроить всё применимое в сгенерированном коде на тип процессора cpu-type, за исключением ABI и набора доступных инструкций. Список значений cpu-type такой же, как для -march. Значение по умолчанию — то же, что используется для -march.

-mtpf-trace
-mno-tpf-trace

Генерировать код, который добавляет (не добавляет) специфичные для TPF ветвления в OS для отслеживания процедур в операционной системе. Эта опция отключена по умолчанию, даже при компиляции для TPF OS.

-mtpf-trace-skip
-mno-tpf-trace-skip

Генерировать код, который изменяет (не изменяет) значения по умолчанию для целей перехода, включенных опцией -mtpf-trace, на специализированные функции отслеживания, предоставляющие возможность выборочного пропуска записей отслеживания функций для TPF OS. Эта опция отключена по умолчанию, даже при компиляции для TPF OS и указании -mtpf-trace.

-mfused-madd
-mno-fused-madd

Генерировать код, который использует (не использует) инструкции умножения и накопления для операций с плавающей точкой. Эти инструкции генерируются по умолчанию, если используется аппаратная плавающая точка.

-mwarn-framesize=framesize

Выдать предупреждение, если текущая функция превышает заданный размер фрейма. Поскольку это проверка на этапе компиляции, это не обязательно проблема во время выполнения программы. Предполагается выявление функций, которые, скорее всего, вызовут переполнение стека. Это полезно в среде с ограниченным размером стека, например, в ядре Linux.

-mwarn-dynamicstack

Выдать предупреждение, если функция вызывает alloca или использует динамически размерные массивы. Это, как правило, плохая идея в среде с ограниченным размером стека.

-mstack-guard=stack-guard
-mstack-size=stack-size
END_OF_DOCUMENT_MARKER

Если эти параметры заданы, S/390-бекенд генерирует дополнительные инструкции в прологе функции, которые вызывают ошибку, если размер стека на stack-guard байт больше stack-size (помните, что стек на S/390 растет вниз). Если параметр stack-guard опущен, выбирается наименьшая степень двойки, большая, чем размер кадра скомпилированной функции. Эти параметры предназначены для помощи в отладке проблем переполнения стека. Дополнительно сгенерированный код вызывает небольшую нагрузку и, следовательно, может использоваться и в системах, подобных производственным, без значительного снижения производительности. Заданные значения должны быть точными степенями двойки, а stack-size должен быть больше stack-guard, не превышая 64k. Для повышения эффективности дополнительный код предполагает, что стек начинается по адресу, выровненному по значению, заданному stack-size. Параметр stack-guard может использоваться только совместно с stack-size.

-mhotpatch=pre-halfwords,post-halfwords

Если параметр hotpatch включен, для всех функций в единице компиляции генерируется пролог «горячей замены». Метка функции предваряется заданным количеством двухбайтовых инструкций NOP (pre-halfwords, максимальное значение 1000000). После метки добавляется 2 * post-halfwords байта, используя самые мощные инструкции NOP, которые позволяет архитектура (максимум 1000000).

Если оба аргумента равны нулю, горячая замена отключена.

Этот параметр может быть переопределен для отдельных функций с помощью атрибута hotpatch.

Далее: Параметры Score, Предыдущее: Параметры RX, Вверх: Параметры, зависящие от машины [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.4.0/gcc/S_002f390-and-zSeries-Options.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API