Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
01.05.2014
Размер:
206.19 Кб
Скачать

Машинно-зависимые опции для целевой платформы

Целевые машины могут иметь специфические опции, определяющие различные аппаратные модели. Эти опции начинаются с символов "-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, соответствующая отмене данной оптимизации (которая приводит к ошибкам при загрузке в среде ОС РВ Багет, поскольку загрузчик не может разместить малые секции).

Соседние файлы в папке Еще материалы