Spec-Zone.ru › GCC 12

3.19.36 Параметры Nios II

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

-G num

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

-mgpopt=option
-mgpopt
-mno-gpopt

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

‘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

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

-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

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

Поддерживаются следующие значения insn. За исключением случаев, когда указано иное, операции с плавающей точкой должны быть реализованы с нормальной семантикой IEEE 754 и соответствовать напрямую операторам C или эквивалентным встроенным функциям 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 Component. Обратите внимание, что пользовательские инструкции, включённые -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, и обычно используется совместно с -msys-crt0= для указания расположения альтернативного начального кода, предоставляемого HAL BSP.

-msmallc

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

-msys-crt0=startfile

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

-msys-lib=systemlib

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

Далее: Параметры Nvidia PTX, Предыдущее: Параметры NDS32, Наверх: Параметры подмоделей [Содержание][Индекс]

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

Spec-Zone.ru

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