Spec-Zone.ru › GCC 15

3.20.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 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»
«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»
«5249» «5249»
«5250» «5250»
«5271» «5270» «5271»
«5272» «5272»
«5275» «5274» «5275»
«5282» «5280» «5281» «5282» «528x»
«53017» «53011» «53012» «53013» «53014» «53015» «53016» «53017»
«5307» «5307»
«5329» «5327» «5328» «5329» «532x»
«5373» «5372» «5373» «537x»
«5407» «5407»
«5475» «5470» «5471» «5472» «5473» «5474» «5475» «547x» «5480» «5481» «5482» «5483» «5484» «5485»

-mcpu=cpu переопределяет -march=arch, если arch совместима с cpu. Другие сочетания -mcpu и -march не допускаются.

При выборе целевого процессора ColdFire cpu GCC определяет макрос __mcf_cpu_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 соответственно.

При настройке для архитектуры 680x0 arch GCC определяет макросы __mcarch и __mcarch__. Также определяется mcarch, если не используется параметр -ansi или отличный от GNU параметр -std. Если GCC настраивает код для диапазона архитектур, выбранного с помощью -mtune=68020-40 или -mtune=68020-60, он определяет макросы для каждой архитектуры в этом диапазоне.

При настройке для микроархитектуры ColdFire uarch GCC также определяет макрос __muarch__, где 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. Для целевых систем M680x0 определяется макрос __HAVE_68881__, а для целевых систем ColdFire — __mcffpu__.

-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

Управлять тем, выравнивает ли GCC переменные int, long, long long, float, double и long double по 32-разрядной границе (-malign-int) или по 16-разрядной границе (-mno-align-int). Выравнивание переменных по 32-разрядным границам повышает скорость выполнения кода на процессорах с 32-разрядными шинами, но требует больше памяти.

Предупреждение: при использовании параметра -malign-int GCC выравнивает структуры, содержащие указанные выше типы, иначе, чем это предусмотрено в большинстве опубликованных спецификаций ABI для m68k.

Использовать режим адресации относительно счетчика команд, предусмотренный в 68000, напрямую, а не использовать таблицу глобальных смещений. В настоящее время этот параметр подразумевает -fpic, что допускает для адресации относительно счетчика команд смещение не более 16 разрядов. Сейчас -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 КБ. Если GOT больше, компоновщик сообщает об ошибке, например:

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-разрядные смещения.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/M680x0-Options.html

Spec-Zone.ru

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