3.17.23 Параметры 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отклоняются.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- Генерировать выходные данные для процессора 520X ColdFire. Это значение по умолчанию, когда компилятор настроен для систем на базе 520X. Эквивалентно
-mcpu=5206, и теперь устарело в пользу этой опции.Используйте эту опцию для микроконтроллеров с ядром 5200, включая MCF5202, MCF5203, MCF5204 и MCF5206.
-m5206e- Генерировать выходные данные для процессора 5206e ColdFire. Опция устарела в пользу эквивалентной
-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 меньше примерно 64k. Любой больший размер приводит к сообщению об ошибке линковщика, подобному:
relocation truncated to fit: R_68K_GOT16O foobar
Если это произойдёт, перекомпилируйте код с использованием
-mxgot. Тогда он должен работать с очень большими GOT. Однако код, сгенерированный с-mxgotменее эффективен, так как для получения значения глобальной переменной требуется 4 инструкции.Обратите внимание, что некоторые линковщики, включая новые версии GNU линковщика, могут создавать несколько GOT и сортировать записи GOT. Если у вас такой линковщик, то вам нужно использовать только
-mxgotпри компиляции одного объектного файла, который обращается более чем к 8192 записям GOT. Очень немногие это делают.Эти параметры не действуют, если GCC не генерирует позиционно-независимый код.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.4/gcc/M680x0-Options.html