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-
Генерировать код для крошечной модели кода. Программа и её статически определённые символы должны находиться в пределах 1 ГБ друг от друга. Указатели имеют 64 бита. Программы могут быть статически или динамически связаны. Эта модель не полностью реализована и в основном обрабатывается как ‘small’.
-mcmodel=small-
Генерировать код для малой модели кода. Программа и её статически определённые символы должны находиться в пределах 4 ГБ друг от друга. Указатели имеют 64 бита. Программы могут быть статически или динамически связаны. Это модель кода по умолчанию.
-mcmodel=large-
Генерировать код для большой модели кода. Это не предполагает ничего о адресах и размерах секций. Указатели имеют 64 бита. Программы могут быть только статически связаны.
-mstrict-align-
Не предполагать, что система обрабатывает обращения к невыровненной памяти.
-momit-leaf-frame-pointer-mno-omit-leaf-frame-pointer-
Опускать или сохранять указатель на кадр в функциях-листьях. Предыдущее поведение — по умолчанию.
-mtls-dialect=desc-
Использовать описатели TLS как механизм хранения данных TLS для динамического доступа к переменным TLS. Это значение по умолчанию.
-mtls-dialect=traditional-
Использовать традиционный TLS как механизм хранения данных 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’, ‘cortex-a72’, ‘exynos-m1’, ‘thunderx’, ‘xgene1’.
Кроме того, этот параметр может указать, что GCC должен настроить производительность кода для системы big.LITTLE. Допустимые значения для этого параметра: ‘cortex-a57.cortex-a53’, ‘cortex-a72.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=.
Далее: Параметры Adapteva Epiphany, Наверх: Параметры подмоделей [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-5.5.0/gcc/AArch64-Options.html