Spec-Zone.ru › GCC 8

3.18.42 Параметры 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

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

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

По умолчанию backchain не поддерживается.

-mpacked-stack
-mno-packed-stack

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

До тех пор, пока указатель backchain фрейма стека не используется, код, сгенерированный с -mpacked-stack, совместим по вызовам с кодом, сгенерированным с -mno-packed-stack. Обратите внимание, что некоторые не-FSF версии GCC 2.95 для S/390 или zSeries генерируют код, использующий backchain фрейма стека во время выполнения, а не только для отладки. Такой код не совместим по вызовам с кодом, скомпилированным с -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 включена, для всех функций в единице компиляции генерируется пролог функции «горячей замены». Метка функции предваряется заданным количеством инструкций NOP с двумя байтами (pre-halfwords, максимальное значение 1000000). После метки добавляются 2 * post-halfwords байта, используя самые большие инструкции NOP, которые поддерживает архитектура (максимальное значение 1000000).

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

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

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

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

Spec-Zone.ru

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