3.20.49 Параметры V850
Для реализаций V850 определены следующие параметры «-m»:
-
-mlong-calls -mno-long-calls-
Считать все вызовы дальними (ближними). Если предполагается, что вызовы являются дальними, компилятор всегда загружает адрес функции в регистр и выполняет косвенный вызов через указатель.
-
-mno-ep -mep-
Не оптимизировать (оптимизировать) базовые блоки, в которых один и тот же указатель индекса используется 4 или более раз, копируя указатель в регистр
epи используя более короткие инструкцииsldиsst. Параметр -mep включен по умолчанию при оптимизации. -
-mno-prolog-function -mprolog-function-
Не использовать (использовать) внешние функции для сохранения и восстановления регистров в прологе и эпилоге функции. Внешние функции работают медленнее, но занимают меньше места в коде, если несколько функций сохраняют одинаковое число регистров. Параметр -mprolog-function включен по умолчанию при оптимизации.
-
-mspace -
Стараться сделать код как можно меньше. В настоящее время этот параметр лишь включает параметры -mep и -mprolog-function.
-
-mtda=n -
Помещать статические или глобальные переменные размером не более n байт в область крошечных данных, на которую указывает регистр
ep. Общий объем области крошечных данных может составлять до 256 байт (128 байт для байтовых ссылок). -
-msda=n -
Помещать статические или глобальные переменные размером не более n байт в область малых данных, на которую указывает регистр
gp. Объем области малых данных может составлять до 64 килобайт. -
-mzda=n -
Помещать статические или глобальные переменные размером не более n байт в первые 32 килобайта памяти.
-
-mv850 -
Указать, что целевой процессор — V850.
-
-mv850e3v5 -
Указать, что целевой процессор — V850E3V5. При использовании этого параметра определяется константа препроцессора
__v850e3v5__. -
-mv850e2v4 -
Указать, что целевой процессор — V850E3V5. Это псевдоним параметра -mv850e3v5.
-
-mv850e2v3 -
Указать, что целевой процессор — V850E2V3. При использовании этого параметра определяется константа препроцессора
__v850e2v3__. -
-mv850e2 -
Указать, что целевой процессор — V850E2. При использовании этого параметра определяется константа препроцессора
__v850e2__. -
-mv850e1 -
Указать, что целевой процессор — V850E1. При использовании этого параметра определяются константы препроцессора
__v850e1__и__v850e__. -
-mv850es -
Указать, что целевой процессор — V850ES. Это псевдоним параметра -mv850e1.
-
-mv850e -
Указать, что целевой процессор — V850E. При использовании этого параметра определяется константа препроцессора
__v850e__.Если не задан ни один из параметров -mv850, -mv850e, -mv850e1, -mv850e2, -mv850e2v3 и -mv850e3v5, выбирается целевой процессор по умолчанию и определяется соответствующая константа препроцессора «__v850*__».
Константы препроцессора
__v850и__v851__определяются всегда, независимо от выбранного варианта процессора. -
-mdisable-callt -mno-disable-callt-
Этот параметр запрещает генерацию инструкции
CALLTдля вариантов архитектуры v850: v850e, v850e1, v850e2, v850e2v3 и v850e3v5.Этот параметр включен по умолчанию при использовании ABI RH850 (см. -mrh850-abi) и отключен по умолчанию при использовании ABI GCC. Если генерируются инструкции
CALLT, определяется символ препроцессора C__V850_CALLT__. -
-mrelax -mno-relax-
Передавать (или не передавать) параметр командной строки -mrelax ассемблеру.
-
-mlong-jumps -mno-long-jumps-
Отключить (или снова включить) генерацию инструкций перехода с относительной адресацией относительно счетчика команд.
-
-msoft-float -mhard-float-
Отключить (или снова включить) генерацию аппаратных инструкций с плавающей точкой. Этот параметр имеет значение только для целевой архитектуры «V850E2V3» или выше. Если генерируются аппаратные инструкции с плавающей точкой, определяется символ препроцессора C
__FPU_OK__, в противном случае определяется символ__NO_FPU__. -
-mloop -
Включить использование инструкции LOOP архитектуры e3v5. По умолчанию использование этой инструкции не включается при выборе архитектуры e3v5, поскольку она все еще является экспериментальной.
-
-mrh850-abi -mghs-
Включить поддержку варианта ABI V850 для RH850. Это вариант по умолчанию. Для этой версии ABI действуют следующие правила:
- Структуры и объединения размером с целое число возвращаются через указатель на память, а не через регистр.
- Большие структуры и объединения (размером более 8 байт) передаются по значению.
- Функции выравниваются по границам 16-битных слов.
- Поддерживается параметр командной строки -m8byte-align.
- Параметр командной строки -mdisable-callt включен по умолчанию. Параметр командной строки -mno-disable-callt не поддерживается.
При включении этой версии ABI определяется символ препроцессора C
__V850_RH850_ABI__. -
-mgcc-abi -
Включить поддержку старой версии ABI V850 для GCC. Для этой версии ABI действуют следующие правила:
- Структуры и объединения размером с целое число возвращаются в регистре
r10. - Большие структуры и объединения (размером более 8 байт) передаются по ссылке.
- Функции выравниваются по границам 32-битных слов, если только оптимизация не выполняется для уменьшения размера.
- Параметр командной строки -m8byte-align не поддерживается.
- Параметр командной строки -mdisable-callt поддерживается, но по умолчанию не включен.
При включении этой версии ABI определяется символ препроцессора C
__V850_GCC_ABI__. - Структуры и объединения размером с целое число возвращаются в регистре
-
-m8byte-align -mno-8byte-align-
Включить поддержку выравнивания типов
doubleиlong longпо 8-байтовым границам. По умолчанию выравнивание всех объектов ограничено максимум 4 байтами. При включении параметра -m8byte-align определяется символ препроцессора C__V850_8BYTE_ALIGN__. -
-mbig-switch -
Генерировать код, подходящий для больших таблиц переключения. Используйте этот параметр только в том случае, если ассемблер или компоновщик выдают ошибку о выходе ветвлений в таблице переключения за допустимый диапазон.
-
-mapp-regs -
Этот параметр приводит к использованию r2 и r5 в коде, генерируемом компилятором. Это поведение используется по умолчанию.
-
-mno-app-regs -
Этот параметр предписывает считать r2 и r5 фиксированными регистрами.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/V850-Options.html