Spec-Zone.ru › GCC 12

3.19.26 Параметры 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.

-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-относительной адресации 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

Указывает идентификационный номер общих библиотек на основе идентификатора, которые компилируются. Указание значения 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-12.2.0/gcc/M680x0-Options.html

Spec-Zone.ru

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