Spec-Zone.ru › GCC 14

3.19.43 Параметры 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 также включается автоматически. Это потому, что инструкции FPU RX сами по себе небезопасны.

-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. Начиная с регистра r13 и продвигаясь вниз, регистры распределяются в первую очередь для удовлетворения требований -mint-register, затем -mpid, а затем -msmall-data-limit. Таким образом, возможно, что регистр области малых данных будет 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.

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

Spec-Zone.ru

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