Spec-Zone.ru › GCC 5

3.17.56 Опции Xtensa

Эти опции поддерживаются для целей Xtensa:

-mconst16
-mno-const16

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

-mfused-madd
-mno-fused-madd

Включить или отключить использование объединенных инструкций умножения/сложения и умножения/вычитания в варианте с плавающей точкой. Это не имеет эффекта, если опция с плавающей точкой также не включена. Отключение объединенных инструкций умножения/сложения и умножения/вычитания заставляет компилятор использовать отдельные инструкции для операций умножения и сложения/вычитания. Это может быть желательно в некоторых случаях, когда требуются строго совместимые с IEEE 754 результаты: объединенные инструкции умножения/сложения/вычитания не округляют промежуточный результат, тем самым производя результаты с *большим* количеством битов точности, чем указано в стандарте IEEE. Отключение объединенных инструкций умножения/сложения/вычитания также гарантирует, что вывод программы не зависит от способности компилятора объединять операции умножения и сложения/вычитания.

-mserialize-volatile
-mno-serialize-volatile

При включении этой опции GCC вставляет инструкции MEMW перед ссылками на память volatile для обеспечения последовательной согласованности. По умолчанию используется -mserialize-volatile. Используйте -mno-serialize-volatile, чтобы исключить инструкции MEMW.

-mforce-no-pic

Для целей, таких как GNU/Linux, где весь код Xtensa в режиме пользователя должен быть кодом с независимой позицией (PIC), эта опция отключает PIC для компиляции кода ядра.

-mtext-section-literals
-mno-text-section-literals

Эти опции управляют обработкой пулов литералов. По умолчанию используется -mno-text-section-literals, который помещает литералы в отдельный раздел в выходном файле. Это позволяет поместить пул литералов в ОЗУ/ПЗУ данных, а также позволяет компоновщику объединить пулы литералов из отдельных объектных файлов, чтобы удалить избыточные литералы и улучшить размер кода. С помощью -mtext-section-literals литералы вставляются в текстовый раздел, чтобы сохранить их как можно ближе к их ссылкам. Это может быть необходимо для больших файлов ассемблера.

-mtarget-align
-mno-target-align

При включении этой опции GCC указывает ассемблеру автоматически выравнивать инструкции для уменьшения накладных расходов на ветвление за счет некоторой плотности кода. Ассемблер пытается расширить инструкции плотности для выравнивания целей ветвления и инструкций, следующих за инструкциями вызова. Если нет достаточного количества предыдущих инструкций безопасной плотности для выравнивания цели, расширение не выполняется. По умолчанию используется -mtarget-align. Эти опции не влияют на обработку автоматически выравниваемых инструкций, таких как LOOP, которые ассемблер всегда выравнивает, либо расширяя инструкции плотности, либо вставляя инструкции NOP.

-mlongcalls
-mno-longcalls

При включении этой опции GCC указывает ассемблеру на перевод прямых вызовов в косвенные вызовы, если он не может определить, что целевой объект прямого вызова находится в диапазоне, разрешенном инструкцией вызова. Этот перевод, как правило, выполняется для вызовов функций в других исходных файлах. В частности, ассемблер переводит прямую инструкцию CALL в L32R, за которой следует инструкция CALLX. По умолчанию используется -mno-longcalls. Эта опция должна использоваться в программах, где целевой объект вызова может потенциально находиться вне диапазона. Эта опция реализована в ассемблере, а не в компиляторе, поэтому генерируемый GCC код ассемблера по-прежнему показывает прямые инструкции вызова — посмотрите на дизассемблированный объектный код, чтобы увидеть фактические инструкции. Обратите внимание, что ассемблер использует косвенный вызов для каждого межфайлового вызова, а не только для тех, которые действительно находятся вне диапазона.

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

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

Spec-Zone.ru

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