- •Содержание Назначение и условия применения программы
- •Характеристики программы
- •Обращение к программе Синтаксис командной строки и правила задания опций
- •Управление стадиями обработки и выводом компилятора
- •Опции управления диалектом языка Си
- •Опции вывода и подавления предупреждений
- •Опции отладки
- •Опции оптимизации
- •Опции препроцессора
- •Передача опций ассемблеру
- •Опции каталогов поиска
- •Опции задания целевой машины и версии компилятора
- •Машинно-зависимые опции для целевой платформы
- •Опции генерации кода
- •Переменные окружения, управляющие работой компилятора
- •Перечень опций, не описанных в данной инструкции
- •Сообщения
- •Приложение а. Бинарные утилиты
- •Утилита objcopy Общие сведения
- •Формат командной строки
- •Описание опций
- •Утилита objdump Общие сведения
- •Формат командной строки
- •Описание опций
- •Редактор связейld Общие сведения
- •Описание опций
- •Переменные окружения
- •Ассемблер as Общие сведения
- •Формат командной строки
- •Входные файлы и исходная программа
- •Выходные (объектные) файлы
- •Предупреждения и сообщения об ошибках
- •Общие опции командной строки
- •Специфические опции целевой платформы
- •Лист регистрации изменений
Машинно-зависимые опции для целевой платформы
Целевые машины могут иметь специфические опции, определяющие различные аппаратные модели. Эти опции начинаются с символов "-m".
В этом разделе приведены описания специфических опций для целевой платформы Багет-23В под управлением ОС РВ Багет. Заметим, что в длинных именах опций можно использовать префикс --machine(с пробелом) или‑‑machine-(без пробела). Например, вместо-mfp32можно указать--machine fp32или--machine-fp32.
В описании приведен первый вариант длинного имени.
Опции -mstats, -mmemcpy, -mlong-calls, -membedded-data, -mmadимеют отрицательную форму, которая образуется по общему правилу (и соответствует умолчанию для этих опций). Например, в качестве отрицания опции-mstatsможно указать-mno-statsили--machine no-stats.
-mcpu=тип_cpu (--machine cpu= тип_cpu)
При планировании инструкций использовать умолчания для указанного типа CPU. Возможные значения для аргумента тип_cpu: r2000, r3000, r4000, r4400, r4600, r6000. Планирование инструкций будет выполняться в соответствии с заданным типом процессора, но код будет генерироваться в расчете на уровень 1 архитектуры MIPS ISA (instruction set architecture), если только не задана одна из опций-mips2или-mips3.
-mips1
Применять инструкции уровня 1 MIPS ISA. Этот уровень используется по умолчанию. Подразумеваемый тип CPU для этого уровня ISA - r3000.
-mips2
Применять инструкции уровня 2 MIPS ISA (разновидности инструкций условных переходов, инструкции для извлечения квадратного корня). Подразумеваемый тип CPU для этого уровня ISA - r6000.
-mips3
Применять инструкции уровня 3 MIPS ISA (64-битные инструкции). Подразумеваемый тип CPU для этого уровня ISA -r4000. Эта опция не влияет на размеры каких-либо типов языка Си.
ПРИМЕЧАНИЕ. Используемая в данной установке версия бинарных утилит (2.5.2) содержит ассемблер, который "не понимает" некоторые команды, генерируемые для mips3; поэтому для использования этой опции необходимо установить более новую версию бинарных утилит.
-mfp32(--machine fp32)
Предполагать, что доступны 32 32-битных регистра для чисел с плавающей точкой. Эта опция соответствует умолчанию.
-mfp64 (--machine fp64)
Предполагать, что доступны 32 64-битных регистра для чисел с плавающей точкой. Эта опция соответствует умолчанию, если задана также опция -mips3.
-mgp32 (--machine gp32)
Предполагать, что доступны 32 32-битных регистра общего назначения. Эта опция соответствует умолчанию.
-mgp64 (--machine gp64)
Предполагать, что доступны 32 64-битных общего назначения. Эта опция соответствует умолчанию, если задана также опция -mips3.
-mint64 (--machine int64)
Типы long, intи указатели являются 64-битными. Эта опция доступна только в сочетании с -mips3.
-mlong64 (--machine long64)
Тип longи указатели являются 64-битными, а типint - 32-битный. Эта опция доступна только в сочетании с-mips3.
-mstats (--machine stats)
Для каждой невстраиваемой (не inline) функции по опции -mstatsкомпилятор выдает на стандартный протокол строку, содержащую статистику о программе (число сохраняемых регистров, размер стека и т. п.).
-mmemcpy (--machine memcpy)
Опция -mmemcpy заставляет использовать для перемещения блоков памяти соответствующую функцию (memcpyилиbcopy) вместо возможной генерации встроенного кода.
-msoft-float(--machine soft-float)
Сгенерировать код, в котором операции с плавающей точкой реализованы вызовами библиотечных функций. Для использования этой опции необходимо позаботиться о создании соответствующей библиотеки.
-mhard-float(--machine hard-float)
Сгенерировать код, в котором операции с плавающей точкой реализованы при помощи машинных команд. Эта опция соответствует умолчанию.
-mlong-calls (--machine long-calls)
Выполнять все вызовы при помощи инструкции JALR, которая требует предварительной загрузки адреса функции в регистр. Эту опцию необходимо использовать, если в программе имеются прямые вызовы функций (не посредством указателей), находящихся вне текущего 512-мегабайтного сегмента.
-membedded-data(--machine embedded-data)
Размещать переменные сначала в секциях данных, защищенных от записи, если это возможно, затемпо возможности в секциях малых данных, и, наконец, в обычных секциях данных. При этом порождается несколько менее быстрый, чем по умолчанию, код, но для его выполнения требуется меньший объем оперативной памяти.
-msingle-float (--machine single-float)
-mdouble-float (--machine double-float)
Если задана опция -msingle-float, то gcc предполагает, что сопроцессор операций с плавающей точкой поддерживает только операции одинарной точности, как в процессоре r4650.
Опция -mdouble-float, соответствующая умолчанию, позволяет компилятору использовать операции двойной точности.
-mmad(--machine mad)
Разрешить использование инструкций mad,madu,mul, поддерживаемых процессором r4650.
-m4650 (--machine 4650)
Соответствует комбинации -msingle-float -mmad ‑mcpu=r4650.
-mrnames (--machine rnames)
Генерировать ассемблерный код с именами регистров, принятыми для mips.
-Gчисло
Помещать глобальные и статические элементы, размер которых не превышает числобайт, в малые секции данных или в секцииbss. Это позволяет ассемблеру генерировать однословные инструкции ссылки на память, базированные по глобальному указателю (GP, или $28), вместо генерируемых обычно двухсловных ссылок. Отметим, что все модули программы должны компилироваться с одним и тем же значением-G.
В предлагаемой установке СКРВ Багет по умолчанию применяется опция -G0, соответствующая отмене данной оптимизации (которая приводит к ошибкам при загрузке в среде ОС РВ Багет, поскольку загрузчик не может разместить малые секции).