Spec-Zone.ru › GCC 5

3.17.39 Варианты 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. Обратите внимание, что некоторые не-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.

-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’, и ‘z13’. При генерации кода, использующего инструкции, доступные в архитектуре 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, не превышая 64k. Для повышения эффективности дополнительный код предполагает, что стек начинается по адресу, выровненному до значения 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.

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

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

Spec-Zone.ru

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