Spec-Zone.ru › GCC 10

Далее: Параметры MCore, Предыдущее: Параметры M32R/D, Выше: Параметры, зависящие от машины [Оглавление][Индекс]

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

Генерировать вывод для процессора 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.

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

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

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

Spec-Zone.ru

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