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 -
Считать тип
int16-разрядным, как иshort int. Кроме того, параметры, передаваемые в стеке, выравниваются по 16-разрядной границе даже на целевых системах, API которых требует расширения до 32 разрядов. -
-mno-short -
Не считать тип
int16-разрядным. Это значение используется по умолчанию. -
-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