Spec-Zone.ru › GCC 8

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-относительного 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

Указывает идентификационный номер 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 не генерирует позиционно-независимый код.

-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-8.5.0/gcc/M680x0-Options.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API