Spec-Zone.ru › GCC 11

Следующая: Nvidia PTX Options, Предыдущая: NDS32 Options, Наверх: Параметры, зависящие от машины [Оглавление][Индекс]

3.19.35 Параметры Nios II ¶

Вот параметры, определённые для процессора Altera Nios II.

-G num

Разместить глобальные и статические объекты размером не более num байт в секциях small data или BSS вместо обычных секций data или BSS. Значение по умолчанию для num равно 8.

-mgpopt=option
-mgpopt
-mno-gpopt

Генерировать (не генерировать) доступ к GP-относительным адресам. Признаются следующие имена параметров:

‘none’

Не генерировать GP-относительные адреса.

‘local’

Генерировать GP-относительные адреса для объектов малого размера, которые не являются внешними, слабыми или неинициализированными общими символами. Также использовать GP-относительное адресование для объектов, явно помещённых в секцию малых данных с помощью атрибута section.

‘global’

Как для ‘local’, но также генерировать GP-относительные адреса для малых объектов данных, которые являются внешними, слабыми или общими. Если вы используете этот параметр, вам нужно убедиться, что все части вашей программы (включая библиотеки) скомпилированы с одинаковым значением -G.

‘data’

Генерировать GP-относительные адреса для всех объектов данных в программе. Если вы используете этот параметр, весь сегмент данных и BSS вашей программы должен уместиться в 64К памяти, и вы должны использовать соответствующий скрипт компоновщика, чтобы разместить их в адресном пространстве глобального указателя.

‘all’

Генерировать GP-относительные адреса для указателей функций, а также указателей данных. Если вы используете этот параметр, весь текст, данные и BSS вашей программы должны поместиться в 64К памяти, и вы должны использовать соответствующий скрипт компоновщика, чтобы разместить их в адресном пространстве глобального указателя.

-mgpopt эквивалентно -mgpopt=local, а -mno-gpopt эквивалентно -mgpopt=none.

Значение по умолчанию — -mgpopt, за исключением случаев, когда заданы -fpic или -fPIC для генерации позиционно-независимого кода. Обратите внимание, что Nios II ABI не допускает GP-относительных обращений из разделяемых библиотек.

Возможно, вам нужно явно указать -mno-gpopt при построении программ, содержащих большое количество данных малого размера, включая большие GOT-секции данных. В этом случае 16-битного смещения для GP-относительного адресования может быть недостаточно, чтобы обеспечить доступ ко всей секции малых данных.

-mgprel-sec=regexp

Этот параметр указывает дополнительные имена секций, которые можно получить с помощью GP-относительного адресования. Он наиболее полезен в сочетании с атрибутами section в объявлениях переменных (см. Общие атрибуты переменных) и пользовательским скриптом компоновщика. regexp — это Расширённое регулярное выражение POSIX.

Этот параметр не влияет на поведение параметра -G, и указанные секции добавляются к стандартным секциям .sdata и .sbss малых данных, распознаваемых параметром -mgpopt.

-mr0rel-sec=regexp

Этот параметр указывает имена секций, которые могут быть получены с помощью 16-битного смещения от r0; то есть в низких 32К или высоких 32К 32-битного адресного пространства. Он наиболее полезен в сочетании с атрибутами section в объявлениях переменных (см. Общие атрибуты переменных) и пользовательским скриптом компоновщика. regexp — это Расширённое регулярное выражение POSIX.

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

-mel
-meb

Генерировать код с малой (по умолчанию) или большой (экспериментальная версия) эндианностью, соответственно.

-march=arch

Это указывает имя целевой архитектуры Nios II. GCC использует это имя, чтобы определить, какие инструкции могут быть выпущены при генерации кода ассемблера. Допустимые имена: ‘r1’, ‘r2’.

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

-mbypass-cache
-mno-bypass-cache

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

-mno-cache-volatile
-mcache-volatile

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

-mno-fast-sw-div
-mfast-sw-div

Не использовать таблично-основанное быстрое деление для малых чисел. По умолчанию используется быстрое деление при -O3 и выше.

-mno-hw-mul
-mhw-mul
-mno-hw-mulx
-mhw-mulx
-mno-hw-div
-mhw-div

Включить или отключить вывод mul, mulx и div семейств инструкций компилятором. По умолчанию выводится mul, и не выводятся div и mulx.

-mbmx
-mno-bmx
-mcdx
-mno-cdx

Включить или отключить генерацию инструкций Nios II R2 BMX (манипулирование битами) и CDX (плотность кода). Включение этих инструкций также требует -march=r2. Поскольку эти инструкции являются необязательными расширениями архитектуры R2, по умолчанию они не выводятся.

-mcustom-insn=N
-mno-custom-insn
END_OF_DOCUMENT_MARKER

Каждый параметр -mcustom-insn=N позволяет использовать пользовательскую инструкцию с кодировкой N при генерации кода, использующего insn. Например, -mcustom-fadds=253 генерирует пользовательскую инструкцию 253 для операций сложения с плавающей точкой одинарной точности вместо стандартного поведения использования вызова библиотеки.

Поддерживаются следующие значения insn. За исключением случаев, указанных отдельно, операции с плавающей точкой должны быть реализованы с использованием стандартной семантики IEEE 754 и соответствовать непосредственно операторам C или эквивалентным встроенным функциям GCC (см. Другие встроенные функции, предоставляемые GCC).

Плавающая точка одинарной точности:

‘fadds’, ‘fsubs’, ‘fdivs’, ‘fmuls’

Двоичные арифметические операции.

‘fnegs’

Унарное отрицание.

‘fabss’

Унарная операция абсолютного значения.

‘fcmpeqs’, ‘fcmpges’, ‘fcmpgts’, ‘fcmples’, ‘fcmplts’, ‘fcmpnes’

Операции сравнения.

‘fmins’, ‘fmaxs’

Минимальное и максимальное значения с плавающей точкой. Эти инструкции генерируются только если указан параметр -ffinite-math-only.

‘fsqrts’

Унарная операция квадратного корня.

‘fcoss’, ‘fsins’, ‘ftans’, ‘fatans’, ‘fexps’, ‘flogs’

Тригонометрические и экспоненциальные функции с плавающей точкой. Эти инструкции генерируются только если также указан параметр -funsafe-math-optimizations.

Плавающая точка двойной точности:

‘faddd’, ‘fsubd’, ‘fdivd’, ‘fmuld’

Двоичные арифметические операции.

‘fnegd’

Унарное отрицание.

‘fabsd’

Унарная операция абсолютного значения.

‘fcmpeqd’, ‘fcmpged’, ‘fcmpgtd’, ‘fcmpled’, ‘fcmpltd’, ‘fcmpned’

Операции сравнения.

‘fmind’, ‘fmaxd’

Минимальное и максимальное значения с плавающей точкой двойной точности. Эти инструкции генерируются только если указан параметр -ffinite-math-only.

‘fsqrtd’

Унарная операция квадратного корня.

‘fcosd’, ‘fsind’, ‘ftand’, ‘fatand’, ‘fexpd’, ‘flogd’

Тригонометрические и экспоненциальные функции с плавающей точкой двойной точности. Эти инструкции генерируются только если также указан параметр -funsafe-math-optimizations.

Преобразования:

‘fextsd’

Преобразование из одинарной точности в двойную.

‘ftruncds’

Преобразование из двойной точности в одинарную.

‘fixsi’, ‘fixsu’, ‘fixdi’, ‘fixdu’

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

‘round’

Преобразование из плавающей точки одинарной точности в целые со знаком, округляя до ближайшего целого и при равном расстоянии отбрасывая к нулю. Соответствует функции __builtin_lroundf, когда используется -fno-math-errno.

‘floatis’, ‘floatus’, ‘floatid’, ‘floatud’

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

Кроме того, для использования любых инструкций с плавающей точкой двойной точности должны быть предоставлены все следующие инструкции передачи для внутренних регистров X и Y. Пользовательские инструкции, принимающие два операнда с плавающей точкой двойной точности, ожидают первый операнд в 64-битном регистре X. Другой операнд (или единственный операнд унарной операции) предоставляется пользовательской арифметической инструкции с наименее значимым полубайтом в исходном регистре src1 и наиболее значимым полубайтом в src2. Пользовательская инструкция, возвращающая результат двойной точности, возвращает наиболее значимые 32 бита в регистре назначения и другую половину в 32-битном регистре Y. GCC автоматически генерирует необходимые последовательности кода для записи в регистр X и/или чтения из регистра Y при использовании инструкций с плавающей точкой двойной точности.

‘fwrx’

Записать src1 в наименее значимую половину X и src2 в наиболее значимую половину X.

‘fwry’

Записать src1 в Y.

‘frdxhi’, ‘frdxlo’

Прочитать наиболее или наименее (соответственно) значимую половину X и сохранить её в dest.

‘frdy’

Прочитать значение Y и сохранить его в dest.

Обратите внимание, что вы можете получить больший локальный контроль над генерацией пользовательских инструкций Nios II, используя атрибуты функций target("custom-insn=N") и target("no-custom-insn") (см. Объявление атрибутов функций) или директивы (см. Директивы для опций, специфичных для функций).

-mcustom-fpu-cfg=name

Этот параметр включает предопределённый, именованный набор кодировок пользовательских инструкций (см. -mcustom-insn выше). В настоящее время определены следующие наборы:

-mcustom-fpu-cfg=60-1 эквивалентен:

-mcustom-fmuls=252 
-mcustom-fadds=253 
-mcustom-fsubs=254 
-fsingle-precision-constant

-mcustom-fpu-cfg=60-2 эквивалентен:

-mcustom-fmuls=252 
-mcustom-fadds=253 
-mcustom-fsubs=254 
-mcustom-fdivs=255 
-fsingle-precision-constant

-mcustom-fpu-cfg=72-3 эквивалентен:

-mcustom-floatus=243 
-mcustom-fixsi=244 
-mcustom-floatis=245 
-mcustom-fcmpgts=246 
-mcustom-fcmples=249 
-mcustom-fcmpeqs=250 
-mcustom-fcmpnes=251 
-mcustom-fmuls=252 
-mcustom-fadds=253 
-mcustom-fsubs=254 
-mcustom-fdivs=255 
-fsingle-precision-constant

-mcustom-fpu-cfg=fph2 эквивалентен:

-mcustom-fabss=224 
-mcustom-fnegs=225 
-mcustom-fcmpnes=226 
-mcustom-fcmpeqs=227 
-mcustom-fcmpges=228 
-mcustom-fcmpgts=229 
-mcustom-fcmples=230 
-mcustom-fcmplts=231 
-mcustom-fmaxs=232 
-mcustom-fmins=233 
-mcustom-round=248 
-mcustom-fixsi=249 
-mcustom-floatis=250 
-mcustom-fsqrts=251 
-mcustom-fmuls=252 
-mcustom-fadds=253 
-mcustom-fsubs=254 
-mcustom-fdivs=255

Назначения пользовательских инструкций, задаваемые отдельными параметрами -mcustom-insn=, переопределяют те, которые заданы -mcustom-fpu-cfg=, независимо от порядка параметров в командной строке.

Обратите внимание, что вы можете получить больший локальный контроль над выбором конфигурации FPU, используя атрибут функции target("custom-fpu-cfg=name") (см. Объявление атрибутов функций) или директиву (см. Директивы для опций, специфичных для функций).

Имя fph2 является сокращением для компонента Nios II Floating Point Hardware 2. Обратите внимание, что пользовательские инструкции, включенные параметрами -mcustom-fmins=233 и -mcustom-fmaxs=234, генерируются только если указан параметр -ffinite-math-only. Пользовательская инструкция, включенная параметром -mcustom-round=248, генерируется только если указан параметр -fno-math-errno. В отличие от других конфигураций, -fsingle-precision-constant не устанавливается.

Эти дополнительные параметры ‘-m’ доступны для целевой системы Altera Nios II ELF (bare-metal):

-mhal

Связь с HAL BSP. Это подавляет связывание с предоставленным GCC начальным и завершающим кодом C-runtime, и обычно используется в сочетании с -msys-crt0= для указания расположения альтернативного стартового кода, предоставляемого HAL BSP.

-msmallc

Связь с ограниченной версией библиотеки C, -lsmallc, вместо Newlib.

-msys-crt0=startfile

startfile — имя файла startfile (crt0) для использования при линковке. Этот параметр полезен только в сочетании с -mhal.

-msys-lib=systemlib

systemlib — имя библиотеки, предоставляющей системные вызовы низкого уровня, необходимые библиотеке C, например, read и write. Этот параметр обычно используется для связи с библиотекой, предоставляемой HAL BSP.

Далее: Nvidia PTX Options, Предыдущее: NDS32 Options, Вверх: Машинно-зависимые параметры [Содержание][Индекс]

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

Spec-Zone.ru

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