3.17.1 Опции AArch64
Эти параметры определены для реализаций AArch64:
-
-mabi=name - Генерировать код для указанной модели данных. Допустимые значения — ‘
ilp32’ для модели данных типа SysV, где int, long int и указатель имеют размер 32 бита, и ‘lp64’ для модели данных типа SysV, где int имеет размер 32 бита, а long int и указатель — 64 бита.По умолчанию зависит от конкретной конфигурации целевой системы. Обратите внимание, что ABI LP64 и ILP32 не совместимы при линковке; необходимо скомпилировать всю программу с одним и тем же ABI и связать её с совместимым набором библиотек.
-mbig-endian- Генерировать код в формате big-endian. По умолчанию, когда GCC сконфигурирован для целевой системы ‘
aarch64_be-*-*’. -mgeneral-regs-only- Генерировать код, использующий только регистры общего назначения.
-mlittle-endian- Генерировать код в формате little-endian. По умолчанию, когда GCC сконфигурирован для целевой системы ‘
aarch64-*-*’, но не для ‘aarch64_be-*-*’. -mcmodel=tiny- Генерировать код для модели tiny. Программа и её статически определённые символы должны находиться в пределах 1 ГБ друг от друга. Указатели — 64 бита. Программы могут быть статически или динамически связаны. Эта модель не полностью реализована и в основном рассматривается как ‘
small’. -mcmodel=small- Генерировать код для модели small. Программа и её статически определённые символы должны находиться в пределах 4 ГБ друг от друга. Указатели — 64 бита. Программы могут быть статически или динамически связаны. Это модель кода по умолчанию.
-mcmodel=large- Генерировать код для модели large. Не делается предположений об адресах и размерах секций. Указатели — 64 бита. Программы могут быть только статически связаны.
-mstrict-align- Не предполагать, что система будет обрабатывать обращения к невыровненной памяти.
-
-momit-leaf-frame-pointer-mno-omit-leaf-frame-pointer - Опустить или сохранить указатель фрейма в функциях листа. Предыдущее поведение — по умолчанию.
-mtls-dialect=desc- Использовать описатели TLS в качестве механизма хранения локальных данных потока для динамических обращений к переменным TLS. По умолчанию.
-mtls-dialect=traditional- Использовать традиционный TLS в качестве механизма хранения локальных данных потока для динамических обращений к переменным TLS.
-
-mfix-cortex-a53-835769-mno-fix-cortex-a53-835769 - Включить или отключить обходное решение для ошибки ARM Cortex-A53 с номером 835769. Это будет включать вставку инструкции NOP между инструкциями работы с памятью и инструкциями 64-битного умножения-сложения целых чисел.
-
-mfix-cortex-a53-843419-mno-fix-cortex-a53-843419 - Включить или отключить обходное решение для ошибки ARM Cortex-A53 с номером 843419. Это обходное решение ошибки выполняется во время линковки, и это лишь передаст соответствующий флаг компоновщику.
-
-march=name - Указать имя целевой архитектуры, необязательно с постфиксом одного или нескольких модификаторов функций. Этот параметр имеет вид -march=arch{+[no]feature}*, где единственное допустимое значение для arch — ‘
armv8-a’. Допустимые значения для feature описаны в подсекции ниже.В случае конфликтующих модификаторов функций используется самый правый.
GCC использует это имя, чтобы определить, какие инструкции можно выдать при генерации кода ассемблера.
Если
-marchуказан без указания-mtuneили-mcpu, код будет настроен на эффективную работу на различных целевых процессорах, реализующих целевую архитектуру. -
-mtune=name - Указать имя целевого процессора, для которого GCC должен настроить производительность кода. Допустимые значения для этого параметра: ‘
generic’, ‘cortex-a53’, ‘cortex-a57’.Кроме того, этот параметр может указать, что GCC должен настроить производительность кода для системы big.LITTLE. Единственное допустимое значение — ‘
cortex-a57.cortex-a53’.Если ни
-mtune=, ни-mcpu=ни-march=не указаны, код будет настроен на эффективную работу на различных целевых процессорах.Этот параметр не может быть дополнен модификаторами функций.
-
-mcpu=name - Указать имя целевого процессора, необязательно с постфиксом одного или нескольких модификаторов функций. Этот параметр имеет вид -mcpu=cpu{+[no]feature}*, где допустимые значения для cpu такие же, как доступные для
-mtune.Допустимые значения для feature описаны в подсекции ниже.
В случае конфликтующих модификаторов функций используется самый правый.
GCC использует это имя, чтобы определить, какие инструкции можно выдать при генерации кода ассемблера (как если бы с помощью
-march) и определить целевой процессор, для которого настраивается производительность (как если бы с помощью-mtune). Если этот параметр используется совместно с-marchили-mtune, эти параметры имеют приоритет над соответствующей частью этого параметра.
3.17.1.1 Модификаторы функций -march и -mcpu
Модификаторы функций, используемые с -march и -mcpu, могут быть следующими:
- ‘
crc’ - Включить расширение CRC.
- ‘
crypto’ - Включить расширение Crypto. Это подразумевает включение расширения Advanced SIMD.
- ‘
fp’ - Включить инструкции с плавающей точкой.
- ‘
simd’ - Включить инструкции Advanced SIMD. Это подразумевает включение инструкций с плавающей точкой. По умолчанию для всех текущих возможных значений параметров
-marchи-mcpu=.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.4/gcc/AArch64-Options.html