3.18.22 Параметры 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-
Рассматривать тип
intкак 16-битный, какshort int. Кроме того, параметры, передаваемые в стеке, также выравниваются на границе 16 бит, даже на целях, API которых требует повышения до 32 бит. -mno-short-
Не рассматривать тип
intкак 16-битный. Это значение по умолчанию. -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-
Не использовать согласованность вызовов, выбранную параметром -mrtd. Это значение по умолчанию.
-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.
-mpcrel-
Использовать режим адресации pc-relative архитектуры 68000 напрямую, вместо использования глобальной таблицы смещений. В настоящее время этот параметр подразумевает -fpic, позволяя не более 16-битного смещения для pc-relative адресации. -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Указывает идентификационный номер общих библиотек на основе ID, которые компилируются. Указание значения 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 не генерирует позиционно-независимый код.
Далее: Параметры MCore, Предыдущее: Параметры M32R/D, Наверх: Параметры подмодели [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-6.5.0/gcc/M680x0-Options.html