3.17.31 Параметры Nios II
Это параметры, определенные для процессора Altera Nios II.
-G numГлобальные и статические объекты размером не более num байтов помещаются в секции малых данных или BSS вместо обычных секций данных или 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-относительного адресования может быть недостаточно велико для доступа ко всей секции малых данных.
-mel-mebСгенерировать код little-endian (по умолчанию) или big-endian (экспериментальный), соответственно.
-mbypass-cache-mno-bypass-cacheВынудить все инструкции загрузки и сохранения всегда обходить кэш, используя варианты инструкций ввода/вывода. По умолчанию кэш не обходится.
-mno-cache-volatile-mcache-volatileДоступ к памяти 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.-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-insn=, переопределяют те, которые заданы параметром -mcustom-fpu-cfg=, независимо от порядка параметров в командной строке.
Обратите внимание, что вы можете получить больший локальный контроль над выбором конфигурации FPU, используя атрибут функции
target("custom-fpu-cfg=name")(см. Атрибуты Функций) или директиву (см. Директивы Опций Специфичные Для Функций).
Эти дополнительные параметры ‘-m’ доступны для целевой системы Altera Nios II ELF (без ядра):
-mhal-
Связь с HAL BSP. Это подавляет связывание с начальным и завершающим кодом времени выполнения C, предоставляемым GCC, и обычно используется в сочетании с -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 Options, Предыдущее: NDS32 Options, Наверх: Options Подмодели [Содержание][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-5.5.0/gcc/Nios-II-Options.html