Spec-Zone.ru › GCC 7

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

Семейство Аргументы ‘-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.

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

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

Spec-Zone.ru

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