Spec-Zone.ru › GCC 4

3.17.40 Параметры 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 2. Когда -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. Обратите внимание, что некоторые версии GCC 2.95 для S/390 или zSeries, не от FSF, генерировали код, который использует цепочку вызовов в кадре стека во время выполнения, а не только для отладки. Такой код не совместим с кодом, скомпилированным с -mpacked-stack. Также обратите внимание, что сочетание -mbackchain, -mpacked-stack и -mhard-float не поддерживается. Для сборки ядра Linux используйте -msoft-float.

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

-msmall-exec
-mno-small-exec
Генерировать (или не генерировать) код, использующий инструкцию bras для вызовов подпрограмм. Это работает надёжно только если общий размер исполняемого файла не превышает 64к. По умолчанию используется инструкция basr вместо, которая не имеет этого ограничения.
-m64
-m31
Когда -m31 указано, генерировать код, соответствующий ABI GNU/Linux для S/390. Когда -m64 указано, генерировать код, соответствующий ABI GNU/Linux для zSeries. Это позволяет GCC, в частности, генерировать 64-битные инструкции. Для целей ‘s390’, значение по умолчанию -m31, а для целей ‘s390x’ значение по умолчанию -m64.
-mzarch
-mesa
Когда -mzarch указано, генерировать код, использующий инструкции, доступные в архитектуре z/Architecture. Когда -mesa указано, генерировать код, использующий инструкции, доступные в ESA/390. Обратите внимание, что -mesa не возможно при -m64. При генерации кода, совместимого с ABI GNU/Linux для S/390, значение по умолчанию -mesa. При генерации кода, совместимого с ABI GNU/Linux для zSeries, значение по умолчанию -mzarch.
-mmvcle
-mno-mvcle
Генерировать (или не генерировать) код, использующий инструкцию mvcle для выполнения блочных перемещений. Когда -mno-mvcle указано, использовать цикл mvc вместо. Это значение по умолчанию, если не оптимизировано под размер.
-mdebug
-mno-debug
Выводить (или не выводить) дополнительную отладочную информацию при компиляции. По умолчанию отладочная информация не выводится.
-march=cpu-type
Генерировать код, который выполняется на cpu-type, которое является именем системы, представляющей определённый тип процессора. Возможные значения для cpu-type — ‘g5’, ‘g6’, ‘z900’, ‘z990’, ‘z9-109’, ‘z9-ec’, ‘z10’, ‘z196’, и ‘zEC12’. При генерации кода, использующего инструкции, доступные в архитектуре z/Architecture, значение по умолчанию -march=z900. В противном случае значение по умолчанию -march=g5.
-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.

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

Spec-Zone.ru

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