3.19.47 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. Обратите внимание, что некоторые не-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 для S/390 ABI. При указании -m64, генерировать код, совместимый с GNU/Linux для zSeries ABI. Это позволяет GCC, в частности, генерировать 64-битные инструкции. Для целей s390 значение по умолчанию — -m31, а для целей s390x значение по умолчанию — -m64.
-mzarch-mesa-
При указании -mzarch, генерировать код, использующий инструкции, доступные в z/Architecture. При указании -mesa, генерировать код, использующий инструкции, доступные в ESA/390. Обратите внимание, что -mesa не возможен с -m64. При генерации кода, совместимого с GNU/Linux для S/390 ABI, значение по умолчанию — -mesa. При генерации кода, совместимого с GNU/Linux для zSeries ABI, значение по умолчанию — -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’ и ‘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-guard байт по отношению к stack-size (помните, что стек на S/390 растёт вниз). Если опция stack-guard опущена, выбирается наименьшая степень двойки, большая, чем размер фрейма скомпилированной функции. Эти опции предназначены для помощи в отладке проблем переполнения стека. Дополнительно сгенерированный код вызывает незначительные накладные расходы и, следовательно, может использоваться и в производственных системах без значительного снижения производительности. Указанные значения должны быть точными степенями двойки, а stack-size должен быть больше stack-guard, не превышая 64k. Для повышения эффективности дополнительный код предполагает, что стек начинается по адресу, выровненному к значению, заданному stack-size. Опция stack-guard может использоваться только совместно с stack-size.
-mhotpatch=pre-halfwords,post-halfwords-
Если опция hotpatch включена, для всех функций в единице компиляции генерируется преамбула для «горячей подмены». Метка функции предваряется заданным количеством двубайтовых инструкций NOP (pre-halfwords, максимальное значение 1000000). После метки добавляется 2 * post-halfwords байта, используя наиболее подходящие инструкции NOP, которые поддерживает архитектура (максимум 1000000).
Если оба аргумента равны нулю, горячая подмена отключена.
Эту опцию можно переопределить для отдельных функций с помощью атрибута
hotpatch.
Далее: Опции Score, Предыдущее: Опции RX, Наверх: Опции Submodel [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/S_002f390-and-zSeries-Options.html