3.19.25 Параметры 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’ ‘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’ ‘5249’ ‘5249’ ‘5250’ ‘5250’ ‘5271’ ‘5270’ ‘5271’ ‘5272’ ‘5272’ ‘5275’ ‘5274’ ‘5275’ ‘5282’ ‘5280’ ‘5281’ ‘5282’ ‘528x’ ‘53017’ ‘53011’ ‘53012’ ‘53013’ ‘53014’ ‘53015’ ‘53016’ ‘53017’ ‘5307’ ‘5307’ ‘5329’ ‘5327’ ‘5328’ ‘5329’ ‘532x’ ‘5373’ ‘5372’ ‘5373’ ‘537x’ ‘5407’ ‘5407’ ‘5475’ ‘5470’ ‘5471’ ‘5472’ ‘5473’ ‘5474’ ‘5475’ ‘547x’ ‘5480’ ‘5481’ ‘5482’ ‘5483’ ‘5484’ ‘5485’ -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, ни параметр -std, не являющийся GNU. Если 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
-
Генерировать вывод для процессора 5206e ColdFire. Опция устарела в пользу эквивалентной -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.
-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-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 меньше приблизительно 64к. Любой больший размер приводит к тому, что компоновщик выдает ошибку, например:
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-битные смещения.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.4.0/gcc/M680x0-Options.html