Spec-Zone.ru › GCC 9

3.18.40 Параметры RISC-V

Эти параметры командной строки определены для целей RISC-V:

-mbranch-cost=n

Установить стоимость ветвлений приблизительно в n инструкций.

-mplt
-mno-plt

При генерации кода PIC разрешить или запретить использование PLT. Игнорируется для non-PIC. По умолчанию используется -mplt.

-mabi=ABI-string

Указать соглашение о вызовах для целых чисел и чисел с плавающей точкой. ABI-string содержит две части: размер типов целых чисел и регистры, используемые для типов чисел с плавающей точкой. Например, ‘-march=rv64ifd -mabi=lp64d’ означает, что ‘long’ и указатели имеют 64 бита (неявное определение ‘int’ в 32 бита), и что значения чисел с плавающей точкой до 64 битов передаются в регистрах F. В отличие от ‘-march=rv64ifd -mabi=lp64f’, который всё ещё позволяет компилятору генерировать код, использующий расширения F и D, но позволяет передавать в регистрах только значения чисел с плавающей точкой длиной до 32 битов; или ‘-march=rv64ifd -mabi=lp64’, в котором никакие аргументы чисел с плавающей точкой не будут переданы в регистрах.

По умолчанию этот аргумент зависит от системы, пользователи, желающие использовать определённое соглашение о вызовах, должны явно его указать. Допустимые соглашения о вызовах: ‘ilp32’, ‘ilp32f’, ‘ilp32d’, ‘lp64’, ‘lp64f’, и ‘lp64d’. Некоторые соглашения о вызовах невозможно реализовать на некоторых ISA: например, ‘-march=rv32if -mabi=ilp32d’ недействительно, потому что ABI требует, чтобы 64-битные значения передавались в регистрах F, но регистры F имеют только 32 бита. Также есть ABI ‘ilp32e’, который может быть использован только с архитектурой ‘rv32e’. Этот ABI пока не полностью определён и может быть изменён.

-mfdiv
-mno-fdiv

Использовать или не использовать аппаратные инструкции деления и извлечения квадратного корня для чисел с плавающей точкой. Это требует расширений F или D для регистров чисел с плавающей точкой. По умолчанию они используются, если указанная архитектура имеет эти инструкции.

-mdiv
-mno-div

Использовать или не использовать аппаратные инструкции для целочисленного деления. Требуется расширение M. По умолчанию они используются, если указанная архитектура имеет эти инструкции.

-march=ISA-string

Генерировать код для данной ISA RISC-V (например, ‘rv64im’). Строки ISA должны быть в нижнем регистре. Примеры включают ‘rv64i’, ‘rv32g’, ‘rv32e’, и ‘rv32imaf’.

-mtune=processor-string

Оптимизировать выходные данные для данного процессора, указанного по имени микроархитектуры. Допустимые значения для этого параметра: ‘rocket’, ‘sifive-3-series’, ‘sifive-5-series’, ‘sifive-7-series’, и ‘size’.

Когда -mtune= не указан, по умолчанию используется ‘rocket’.

Выбор ‘size’ не предназначен для использования конечными пользователями. Он используется, когда указан -Os. Он переопределяет информацию о стоимости инструкций, предоставляемую -mtune=, но не переопределяет информацию о конвейере. Это помогает уменьшить размер кода, сохраняя при этом хорошую производительность.

-mpreferred-stack-boundary=num

Попытаться выровнять границу стека по границе с размером, равным 2 в степени num байт. Если -mpreferred-stack-boundary не указан, по умолчанию используется 4 (16 байт или 128 бит).

Предупреждение: Если вы используете этот переключатель, то вы должны скомпилировать все модули с одним и тем же значением, включая любые библиотеки. Это включает системные библиотеки и начальные модули.

-msmall-data-limit=n

Поместить глобальные и статические данные размером меньше n байт в специальный раздел (на некоторых целях).

-msave-restore
-mno-save-restore

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

-mstrict-align
-mno-strict-align

Не генерировать или генерировать обращение к невыровненной памяти. По умолчанию устанавливается в зависимости от того, поддерживает ли процессор, для которого оптимизируется код, быстрое доступ к невыровненной памяти или нет.

-mcmodel=medlow

Сгенерировать код для модели кода medium-low. Программа и её статически определённые символы должны находиться в одном диапазоне адресов 2 GiB и должны располагаться между абсолютными адресами -2 GiB и +2 GiB. Программы могут быть статически или динамически связаны. Это модель кода по умолчанию.

-mcmodel=medany

Сгенерировать код для модели кода medium-any. Программа и её статически определённые символы должны располагаться в любом отдельном диапазоне адресов 2 GiB. Программы могут быть статически или динамически связаны.

-mexplicit-relocs
-mno-exlicit-relocs

Использовать или не использовать операторы перемещения ассемблера при работе со символическими адресами. Альтернатива – использование макросов ассемблера, что может ограничить оптимизацию.

-mrelax
-mno-relax

Использовать или не использовать релаксации линковщика для сокращения количества инструкций, необходимых для материализации адресов символов. По умолчанию используется релаксация линковщика.

-memit-attribute
-mno-emit-attribute

Выводить (не выводить) атрибут RISC-V для записи дополнительной информации в объекты ELF. Эта функция требует как минимум binutils 2.32.

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

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-9.5.0/gcc/RISC-V-Options.html

Spec-Zone.ru

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