3.17.21 Параметры 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 (cpu) указаны в таблице ниже, которая также классифицирует процессоры по семействам:
Семейство Аргументы ‘-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’ ‘5213’ ‘5211’ ‘5212’ ‘5213’ ‘5216’ ‘5214’ ‘5216’ ‘52235’ ‘52230’ ‘52231’ ‘52232’ ‘52233’ ‘52234’ ‘52235’ ‘5225’ ‘5224’ ‘5225’ ‘52259’ ‘52252’ ‘52254’ ‘52255’ ‘52256’ ‘52258’ ‘52259’ ‘5235’ ‘5232’ ‘5233’ ‘5234’ ‘5235’ ‘523x’ ... (rest of the table) -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-
Не использовать соглашение о вызове функций, выбранное с помощью -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-
Указывает идентификационный номер общих библиотек на основе идентификаторов, которые компилируются. Указание значения 0 генерирует более компактный код; указание других значений принудительно выделяет этот номер для текущей библиотеки, но не более эффективен с точки зрения места или времени, чем пропуск этого параметра.
-mxgot-mno-xgot-
При генерации позиционно-независимого кода для ColdFire генерировать код, работающий, если таблица GOT содержит более 8192 записей. Этот код больше и медленнее, чем код, сгенерированный без этого параметра. На процессорах M680x0 этот параметр не нужен; достаточно -fPIC.
GCC обычно использует одну инструкцию для загрузки значений из GOT. Хотя это относительно эффективно, это работает только в том случае, если GOT меньше примерно 64 кБ. Любой больший размер приводит к сообщению об ошибке компоновщика, например:
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-5.5.0/gcc/M680x0-Options.html