3.19.26 Параметры M680x0
Это параметры ‘-m’, определённые для процессоров M680x0 и ColdFire. Значения по умолчанию зависят от архитектуры, выбранной при конфигурации компилятора; значения по умолчанию для наиболее распространённых вариантов приведены ниже.
-march=arch-
Генерировать код для определённой архитектуры набора команд M680x0 или ColdFire. Допустимые значения arch для архитектур M680x0: ‘68000’, ‘68010’, ‘68020’, ‘68030’, ‘68040’, ‘68060’ и ‘cpu32’. Архитектуры ColdFire выбираются в соответствии с классификацией ISA от Freescale, и допустимые значения: ‘isaa’, ‘isaaplus’, ‘isab’ и ‘isac’.
GCC определяет макрос
__mcfarch__всякий раз, когда генерирует код для целевой платформы ColdFire. arch в этом макросе — один из аргументов -march, указанных выше.При совместном использовании -march и -mtune выбирается код, который работает на семействе похожих процессоров, но оптимизирован для конкретной микроархитектуры.
-mcpu=cpu-
Генерировать код для конкретного процессора M680x0 или ColdFire. Процессоры M680x0 cpu: ‘68000’, ‘68010’, ‘68020’, ‘68030’, ‘68040’, ‘68060’, ‘68302’, ‘68332’ и ‘cpu32’. Процессоры ColdFire приведены в таблице ниже, которая также классифицирует процессоры по семействам:
Семейство Аргументы ‘-mcpu’ ‘51’ ‘51’ ‘51ac’ ‘51ag’ ‘51cn’ ‘51em’ ‘51je’ ‘51jf’ ‘51jg’ ‘51jm’ ‘51mm’ ‘51qe’ ‘51qm’ ‘5206’ ‘5202’ ‘5204’ ‘5206’ ‘5206e’ ‘5206e’ ‘5208’ ‘5207’ ‘5208’ ‘5211a’ ‘5210a’ ‘5211a’ -mcpu=cpu переопределяет -march=arch, если arch совместим с cpu. Другие комбинации -mcpu и -march отклоняются.
GCC определяет макрос
__mcf_cpu_cpuпри выборе целевого процессора ColdFire cpu. Он также определяет__mcf_family_family, где значение family задаётся таблицей выше. -mtune=tune-
Настроить код для конкретной микроархитектуры в рамках ограничений, заданных -march и -mcpu. Микроархитектуры M680x0: ‘68000’, ‘68010’, ‘68020’, ‘68030’, ‘68040’, ‘68060’ и ‘cpu32’. Микроархитектуры ColdFire: ‘cfv1’, ‘cfv2’, ‘cfv3’, ‘cfv4’ и ‘cfv4e’.
Также можно использовать -mtune=68020-40 для кода, который должен работать относительно хорошо на целевых процессорах 68020, 68030 и 68040. -mtune=68020-60 аналогичен, но включает также целевые процессоры 68060. Эти два варианта выбирают те же настройки оптимизации, что и -m68020-40 и -m68020-60 соответственно.
GCC определяет макросы
__mcarchи__mcarch__при настройке для архитектуры 680x0 arch. Он также определяетmcarchза исключением случаев использования опции -ansi или не-GNU -std. Если GCC настраивает для диапазона архитектур, как выбрано с -mtune=68020-40 или -mtune=68020-60, он определяет макросы для каждой архитектуры в этом диапазоне.GCC также определяет макрос
__muarch__при настройке для микроархитектуры ColdFire uarch, где uarch — один из аргументов, указанных выше. -m68000-mc68000-
Генерировать вывод для 68000. Это значение по умолчанию, когда компилятор настроен для систем на базе 68000. Эквивалентно -march=68000.
Используйте эту опцию для микроконтроллеров с ядром 68000 или EC000, включая 68008, 68302, 68306, 68307, 68322, 68328 и 68356.
-m68010-
Генерировать вывод для 68010. Это значение по умолчанию, когда компилятор настроен для систем на базе 68010. Эквивалентно -march=68010.
-m68020-mc68020-
Генерировать вывод для 68020. Это значение по умолчанию, когда компилятор настроен для систем на базе 68020. Эквивалентно -march=68020.
-m68030-
Генерировать вывод для 68030. Это значение по умолчанию, когда компилятор настроен для систем на базе 68030. Эквивалентно -march=68030.
-m68040-
Генерировать вывод для 68040. Это значение по умолчанию, когда компилятор настроен для систем на базе 68040. Эквивалентно -march=68040.
Эта опция запрещает использование инструкций 68881/68882, которые должны эмулироваться программным обеспечением на 68040. Используйте эту опцию, если ваш 68040 не имеет кода для эмуляции этих инструкций.
-m68060-
Генерировать вывод для 68060. Это значение по умолчанию, когда компилятор настроен для систем на базе 68060. Эквивалентно -march=68060.
Эта опция запрещает использование инструкций 68020 и 68881/68882, которые должны эмулироваться программным обеспечением на 68060. Используйте эту опцию, если ваш 68060 не имеет кода для эмуляции этих инструкций.
-mcpu32-
Генерировать вывод для CPU32. Это значение по умолчанию, когда компилятор настроен для систем на базе CPU32. Эквивалентно -march=cpu32.
Используйте эту опцию для микроконтроллеров с ядром CPU32 или CPU32+, включая 68330, 68331, 68332, 68333, 68334, 68336, 68340, 68341, 68349 и 68360.
-m5200-
Генерировать вывод для процессора ColdFire 520X. Это значение по умолчанию при настройке компилятора для систем на базе 520X. Эквивалентно -mcpu=5206, и теперь устарело в пользу этой опции.
Используйте эту опцию для микроконтроллеров с ядром 5200, включая MCF5202, MCF5203, MCF5204 и MCF5206.
-m5206e-
Генерировать вывод для процессора ColdFire 5206e. Опция устарела в пользу эквивалентной -mcpu=5206e.
-m528x-
Генерировать вывод для процессора семейства ColdFire 528X. Опция устарела в пользу эквивалентной -mcpu=528x.
-m5307-
Генерировать вывод для процессора ColdFire 5307. Опция устарела в пользу эквивалентной -mcpu=5307.
-m5407-
Генерировать вывод для процессора ColdFire 5407. Опция устарела в пользу эквивалентной -mcpu=5407.
-mcfv4e-
Генерировать вывод для процессора семейства ColdFire V4e (например, 547x/548x). Это включает использование аппаратных инструкций с плавающей точкой. Опция эквивалентна -mcpu=547x и устарела в пользу этой опции.
-m68020-40-
Генерировать вывод для 68040, не используя новые инструкции. Это приводит к коду, который может работать относительно эффективно на 68020/68881, 68030 или 68040. Сгенерированный код использует инструкции 68881, которые эмулируются на 68040.
Опция эквивалентна -march=68020 -mtune=68020-40.
-m68020-60-
Генерировать вывод для 68060, не используя новые инструкции. Это приводит к коду, который может работать относительно эффективно на 68020/68881, 68030 или 68040. Сгенерированный код использует инструкции 68881, которые эмулируются на 68060.
Опция эквивалентна -march=68020 -mtune=68020-60.
-mhard-float-m68881-
Генерировать инструкции с плавающей точкой. Это значение по умолчанию для 68020 и выше, и для устройств ColdFire с FPU. Определяет макрос
__HAVE_68881__для целей M680x0 и__mcffpu__для целей ColdFire. -msoft-float
-
Не генерировать инструкции с плавающей запятой; вместо этого использовать вызовы библиотеки. Это значение по умолчанию для целей 68000, 68010 и 68832. Это также значение по умолчанию для устройств ColdFire, не имеющих FPU.
-mdiv-mno-div-
Генерировать (не генерировать) инструкции ColdFire для деления и нахождения остатка по аппаратному обеспечению. Если используется -march без -mcpu, значение по умолчанию — «включено» для архитектур ColdFire и «выключено» для архитектур M680x0. В противном случае значение по умолчанию берётся из процессора целевой системы (либо процессора по умолчанию, либо указанного -mcpu). Например, значение по умолчанию — «выключено» для -mcpu=5206 и «включено» для -mcpu=5206e.
GCC определяет макрос
__mcfhwdiv__при включении этого параметра. -mshort-
Считать тип
int16-битным, какshort int. Кроме того, параметры, передаваемые в стеке, также выравниваются по 16-битной границе, даже на целевых системах, API которых требует повышения до 32-битного формата. -mno-short-
Не считать тип
int16-битным. Это значение по умолчанию. -mnobitfield-mno-bitfield-
Не использовать инструкции для битовых полей. Параметры -m68000, -mcpu32 и -m5200 подразумевают
-mnobitfield. -mbitfield-
Использовать инструкции для битовых полей. Параметр -m68020 подразумевает -mbitfield. Это значение по умолчанию, если вы используете конфигурацию, предназначенную для 68020.
-mrtd-
Использовать другую конвенцию вызова функций, в которой функции, принимающие фиксированное число аргументов, возвращаются с инструкцией
rtd, которая извлекает их аргументы при возвращении. Это экономит одну инструкцию в вызывающей программе, так как нет необходимости извлекать аргументы там.Эта конвенция вызова несовместима с обычно используемой в Unix, поэтому вы не можете её использовать, если вам необходимо вызывать библиотеки, скомпилированные с компилятором Unix.
Также необходимо предоставить прототипы функций для всех функций, принимающих переменное число аргументов (включая
printf); в противном случае будет сгенерирован некорректный код для вызовов этих функций.Кроме того, генерируется серьёзно некорректный код, если вы вызываете функцию с слишком многими аргументами. (Обычно дополнительные аргументы игнорируются без последствий.)
Инструкция
rtdподдерживается процессорами 68010, 68020, 68030, 68040, 68060 и CPU32, но не 68000 или 5200.Значение по умолчанию — -mno-rtd.
-malign-int-mno-align-int-
Управление выравниванием переменных
int,long,long long,float,double, иlong doubleпо 32-битной границе (-malign-int) или 16-битной границе (-mno-align-int). Выравнивание переменных по 32-битным границам приводит к коду, который работает немного быстрее на процессорах с 32-битными шинами за счёт большего потребления памяти.Предупреждение: если вы используете переключатель -malign-int, GCC выравнивает структуры, содержащие указанные типы, по-другому, чем большинство опубликованных спецификаций интерфейса бинарных приложений для m68k.
Использовать режим адресации pc-относительной адресации 68000 напрямую, вместо использования глобальной таблицы смещений. В настоящее время этот параметр подразумевает -fpic, что позволяет использовать смещение не более 16 бит для pc-относительной адресации. -fPIC в настоящее время не поддерживается с -mpcrel, хотя это могло бы быть реализовано для процессоров 68020 и выше.
-mno-strict-align-mstrict-align-
Не предполагать (предполагать), что обращение к невыровненной памяти обрабатывается системой.
-msep-data-
Генерировать код, позволяющий разместить сегмент данных в другой области памяти, отличной от сегмента кода. Это позволяет использовать выполнение на месте в среде без управления виртуальной памятью. Этот параметр подразумевает -fPIC.
-mno-sep-data-
Генерировать код, предполагающий, что сегмент данных следует за сегментом кода. Это значение по умолчанию.
-mid-shared-library-
Генерировать код, поддерживающий общие библиотеки через метод идентификатора библиотеки. Это позволяет использовать выполнение на месте и общие библиотеки в среде без управления виртуальной памятью. Этот параметр подразумевает -fPIC.
-mno-id-shared-library-
Генерировать код, не предполагающий использования общих библиотек на основе идентификаторов. Это значение по умолчанию.
-mshared-library-id=n-
Указывает идентификационный номер общих библиотек на основе идентификатора, которые компилируются. Указание значения 0 генерирует более компактный код; указание других значений принуждает выделение этого номера для текущей библиотеки, но не является более эффективным по объёму или времени, чем опускание этого параметра.
-mxgot-mno-xgot-
При генерировании позиционно-независимого кода для ColdFire генерировать код, работающий, если GOT содержит более 8192 записей. Этот код больше и медленнее, чем код, сгенерированный без этого параметра. На процессорах M680x0 этот параметр не требуется; достаточно -fPIC.
GCC обычно использует одну инструкцию для загрузки значений из GOT. Хотя это относительно эффективно, оно работает только если GOT меньше примерно 64k. Любое значение больше приводит к ошибке линковщика, подобной:
relocation truncated to fit: R_68K_GOT16O foobar
Если это происходит, необходимо перекомпилировать код с -mxgot. Тогда он должен работать с очень большими GOT. Однако код, сгенерированный с -mxgot, менее эффективен, так как для получения значения глобальной переменной требуется 4 инструкции.
Обратите внимание, что некоторые линковщики, включая более новые версии GNU линковщика, могут создавать несколько GOT и сортировать записи GOT. Если у вас такой линковщик, вам нужно использовать -mxgot только при компиляции одного объектного файла, который обращается к более чем 8192 записям GOT. Очень немногие это делают.
Эти параметры не действуют, если GCC не генерирует позиционно-независимый код.
-mlong-jump-table-offsets-
Использовать 32-битные смещения в таблицах
switch. По умолчанию используются 16-битные смещения.
Далее: Параметры MCore, Предыдущий: Параметры M32R/D, Наверх: Параметры подмодели [Содержание][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/M680x0-Options.html