Spec-Zone.ru › GCC 7

3.18.41 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, совместим по вызовам с кодом, скомпилированным с -mmo-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, для вызовов подпрограмм. Это надёжно работает только если общий размер исполняемого файла не превышает 64кб. По умолчанию используется инструкция 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 S/390 System z Встроенные функции. -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’ и ‘native’.

По умолчанию -march=z900. ‘g5’/‘arch3’ и ‘g6’ устарели и будут удалены в будущих выпусках.

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

-mtune=cpu-type

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

-mtpf-trace
-mno-tpf-trace

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

-mfused-madd
-mno-fused-madd

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

-mwarn-framesize=framesize

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

-mwarn-dynamicstack

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

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

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

-mhotpatch=pre-halfwords,post-halfwords

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

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

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

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

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

Spec-Zone.ru

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