Spec-Zone.ru › GCC 13

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

Семейство Аргументы ‘-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, ни параметр -std, не являющийся GNU. Если 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.

-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 выравнивает структуры, содержащие указанные выше типы, не так, как это описано в большинстве опубликованных спецификациях интерфейса прикладных программ (API) для m68k.

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

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

Spec-Zone.ru

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