Spec-Zone.ru › GCC 6

3.18.39 Параметры RX

Эти параметры командной строки определены для целей RX:

-m64bit-doubles
-m32bit-doubles

Установить размер типа данных double в 64 бита (-m64bit-doubles) или 32 бита (-m32bit-doubles). По умолчанию используется -m32bit-doubles. Примечание Аппаратное обеспечение RX для чисел с плавающей запятой работает только с 32-битными значениями, поэтому по умолчанию используется -m32bit-doubles.

-fpu
-nofpu

Включает (-fpu) или отключает (-nofpu) использование аппаратного обеспечения RX для чисел с плавающей запятой. По умолчанию включено для серии RX600 и отключено для серии RX200.

Однако инструкции с плавающей запятой генерируются только для 32-битных значений с плавающей запятой, поэтому аппаратное обеспечение FPU не используется для двойных чисел, если используется параметр -m64bit-doubles.

Примечание Если параметр -fpu включен, то также автоматически включен -funsafe-math-optimizations. Это связано с тем, что инструкции RX FPU сами по себе небезопасны.

-mcpu=name

Выбирает тип процессора RX, на который будет нацелен код. В настоящее время поддерживаются три типа: универсальные аппаратные средства серии «RX600» и «RX200», а также конкретный процессор «RX610». По умолчанию используется «RX600».

Единственное различие между «RX600» и «RX610» заключается в том, что «RX610» не поддерживает инструкцию MVTIPL.

Серия «RX200» не имеет аппаратного блока обработки чисел с плавающей запятой, поэтому параметр -nofpu включен по умолчанию при выборе этого типа.

-mbig-endian-data
-mlittle-endian-data

Данные (но не код) хранятся в формате big-endian. По умолчанию используется -mlittle-endian-data, то есть данные хранятся в формате little-endian.

-msmall-data-limit=N

Указывает максимальный размер в байтах глобальных и статических переменных, которые могут быть помещены в область малых данных. Использование области малых данных может привести к более компактному и быстрому коду, но размер области ограничен, и программист должен убедиться, что область не переполняется. Кроме того, при использовании области малых данных один из регистров RX (обычно r13) зарезервирован для использования в качестве указателя на эту область, поэтому он больше не доступен для использования компилятором. Это может привести к более медленному и/или большему коду, если переменные будут помещены в стек вместо хранения в этом регистре.

Обратите внимание, что общие переменные (переменные, которые не были инициализированы) и константы не помещаются в область малых данных, поскольку они назначаются в другие секции в исполняемом файле.

Значение по умолчанию равно нулю, что отключает эту функцию. Обратите внимание, что эта функция не включена по умолчанию при более высоких уровнях оптимизации (-O2 и т. д.) из-за потенциально вредного влияния резервирования регистра. Программист должен провести эксперименты и выяснить, полезна ли эта функция для его программы. См. описание параметра -mpid для описания того, как выбирается фактический регистр для хранения указателя на область малых данных.

-msim
-mno-sim

Использовать запуск эмулятора. По умолчанию используется специализированный запуск libgloss.

-mas100-syntax
-mno-as100-syntax

При генерации выходного файла ассемблера использовать синтаксис, совместимый с ассемблером Renesas AS100. Этот синтаксис также может обрабатываться ассемблером GAS, но он имеет некоторые ограничения, поэтому он не генерируется по умолчанию.

-mmax-constant-size=N

Устанавливает максимальный размер в байтах константы, которая может использоваться в качестве операнда в инструкции RX. Хотя набор инструкций RX позволяет использовать константы длиной до 4 байт в инструкциях, более длинное значение приводит к более длинной инструкции. Поэтому в некоторых случаях может быть полезно ограничить размер констант, используемых в инструкциях. Слишком большие константы вместо этого помещаются в пул констант и ссылаются через косвенный доступ к регистру.

Значение N может быть от 0 до 4. Значение 0 (по умолчанию) или 4 означает, что константы любого размера разрешены.

-mrelax

Включить релаксацию линкера. Релаксация линкера – это процесс, при котором линковщик пытается уменьшить размер программы, находя более короткие версии различных инструкций. Отключено по умолчанию.

-mint-register=N

Укажите количество регистров, которые нужно зарезервировать для быстрых обработчиков прерываний. Значение N может быть от 0 до 4. Значение 1 означает, что регистр r13 зарезервирован для эксклюзивного использования быстрых обработчиков прерываний. Значение 2 резервирует r13 и r12. Значение 3 резервирует r13, r12 и r11, а значение 4 резервирует r13 по r10. Значение 0 (по умолчанию) не резервирует регистры.

-msave-acc-in-interrupts

Указывает, что функции обработчиков прерываний должны сохранять регистр аккумулятора. Это необходимо только в том случае, если обычный код может использовать регистр аккумулятора, например, для выполнения 64-битных умножений. По умолчанию регистр аккумулятора игнорируется, так как это ускоряет обработчики прерываний.

-mpid
-mno-pid

Включает генерацию данных, независимых от позиции. При включении любой доступ к постоянным данным выполняется через смещение от базового адреса, хранящегося в регистре. Это позволяет определить расположение постоянных данных во время выполнения без необходимости перемещения исполняемого файла, что выгодно для встроенных приложений с ограниченным объемом памяти. Данные, которые могут быть изменены, не затронуты этим параметром.

Обратите внимание, что использование этой функции резервирует регистр, обычно r13, для базового адреса постоянных данных. Это может привести к более медленному и/или большему коду, особенно в сложных функциях.

Файкт регистр для хранения базового адреса постоянных данных зависит от того, включены ли параметры командной строки -msmall-data-limit и/или -mint-register. Регистры выделяются сначала для удовлетворения требований -mint-register, затем -mpid, а затем -msmall-data-limit, начиная с регистра r13 и идя вниз. Таким образом, возможно, что регистр для области малых данных будет r8, если оба -mint-register=4 и -mpid указаны в командной строке.

По умолчанию эта функция отключена. По умолчанию можно восстановить с помощью параметра командной строки -mno-pid.

-mno-warn-multiple-fast-interrupts
-mwarn-multiple-fast-interrupts

Препятствует GCC от выдачи сообщения об ошибке, если он обнаруживает более одного быстрого обработчика прерываний при компиляции файла. По умолчанию выдаётся предупреждение для каждого дополнительного быстрого обработчика прерываний, так как RX поддерживает только один такой обработчик прерываний.

-mallow-string-insns
-mno-allow-string-insns

Включает или отключает использование инструкций обработки строк SMOVF, SCMPU, SMOVB, SMOVU, SUNTIL SWHILE и также инструкцию RMPA. Эти инструкции могут предвыбирать данные, что небезопасно при обращении к регистру ввода-вывода. (См. раздел 12.2.7 Руководства пользователя серии RX62N для получения дополнительной информации).

По умолчанию эти инструкции разрешены, но GCC не может надёжно обнаружить все случаи, когда инструкция обработки строк может использоваться для доступа к регистру ввода-вывода, поэтому их использование нельзя отключить автоматически. Вместо этого программист должен использовать параметр -mno-allow-string-insns, если его программа обращается к области ввода-вывода.

При включении инструкций GCC определяет символ препроцессора C __RX_ALLOW_STRING_INSNS__, в противном случае он определяет символ __RX_DISALLOW_STRING_INSNS__.

-mjsr
-mno-jsr

Использовать только (или не только) JSR инструкции для доступа к функциям. Этот параметр может использоваться, когда размер кода превышает диапазон инструкций BSR. Обратите внимание, что -mno-jsr не означает, что не использовать JSR, а означает, что может быть использовано любое типы переходов.

Примечание: Универсальный параметр командной строки GCC -ffixed-reg имеет особое значение для порта RX, когда используется с атрибутом функции interrupt. Этот атрибут указывает на функцию, предназначенную для обработки быстрых прерываний. GCC гарантирует, что он использует только регистры r10, r11, r12 и/или r13, только при условии, что обычное использование соответствующих регистров было ограничено параметрами командной строки -ffixed-reg или -mint-register.

Далее: Параметры S/390 и zSeries, Предыдущий: Параметры RS/6000 и PowerPC, Выше: Параметры подмоделей [Оглавление][Указатель]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-6.5.0/gcc/RX-Options.html

Spec-Zone.ru

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