Spec-Zone.ru › GCC 5

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) указаны в таблице ниже, которая также классифицирует процессоры по семействам:

... (rest of the table)
Семейство Аргументы ‘-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’

-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-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

Spec-Zone.ru

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