Spec-Zone.ru › GCC 15

3.20.44 Параметры 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. Обратите внимание, что некоторые выпуски 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.

-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», «z15»/«arch13», «z16»/«arch14», «z17»/«arch15» и «native».

По умолчанию используется -march=z900.

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

-mtune=cpu-type

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

-mtpf-trace
-mno-tpf-trace

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

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

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

-mfused-madd
-mno-fused-madd

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

-mwarn-framesize=framesize

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

-mwarn-dynamicstack

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

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

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

-mhotpatch=pre-halfwords,post-halfwords

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

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

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

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

Spec-Zone.ru

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