3.18.24 Параметры 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’ … (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.
-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 не генерирует позиционно-независимый код.
-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-9.5.0/gcc/M680x0-Options.html