3.17.33 Параметры Nios II
Это параметры, определенные для процессора Altera Nios II.
-
-Gnum - Поместить глобальные и статические объекты, не превышающие num байт, в секции small data или BSS вместо обычных секций data или BSS. Значение по умолчанию для num равно 8.
-
-mgpopt-mno-gpopt - Генерировать (не генерировать) GP-относительные обращения к объектам в секциях small data или BSS. Значение по умолчанию —
-mgpopt, за исключением случаев, когда-fpicили-fPICуказано для генерации позиционно-независимого кода. Обратите внимание, что Nios II ABI не допускает GP-относительных обращений из общих библиотек.Возможно, вам потребуется явно указать
-mno-gpopt, когда вы собираете программы, содержащие большое количество small data, включая большие секции GOT data. В этом случае 16-битного смещения для GP-относительного адресования может быть недостаточно для доступа ко всей секции small data. -
-mel-meb - Генерировать код little-endian (по умолчанию) или big-endian (экспериментальный), соответственно.
-
-mbypass-cache-mno-bypass-cache - Принудительно обходить кэш для всех инструкций загрузки и сохранения, используя варианты инструкций I/O. По умолчанию кэш не обходится.
-
-mno-cache-volatile-mcache-volatile - Доступ к volatile памяти обходит кэш, используя варианты инструкций загрузки и сохранения I/O. По умолчанию кэш не обходится.
-
-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’ - Преобразование из плавающей точки в целые со знаком или без знака, с усечением к нулю.
- ‘
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 (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.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.4/gcc/Nios-II-Options.html